当前位置: 首页 > news >正文

【人工智能-初级】第18章 如何用Pandas进行数据分析和处理

文章目录

    • 一、引言
    • 二、Pandas 基础
      • 2.1 什么是 Pandas?
      • 2.2 导入 Pandas 库
    • 三、Pandas 数据结构
      • 3.1 Series 数据结构
      • 3.2 DataFrame 数据结构
    • 四、Pandas 基本操作
      • 4.1 读取和保存数据
      • 4.2 查看数据
      • 4.3 数据选择和过滤
        • 4.3.1 选择列
        • 4.3.2 选择行
      • 4.4 数据过滤
    • 五、Pandas 数据处理
      • 5.1 缺失值处理
      • 5.2 数据排序
      • 5.3 数据分组与聚合
      • 5.4 数据合并
    • 六、Pandas 数据分析实战
      • 6.1 数据清洗
      • 6.2 数据探索
      • 6.3 数据可视化
    • 七、总结

一、引言

在数据分析的工作中,Pandas 是 Python 生态系统中不可或缺的利器。Pandas 提供了强大而灵活的工具,帮助数据科学家和分析师进行数据的清洗、处理、分析和可视化。它以DataFrame 作为核心数据结构,能够方便地操作和分析结构化数据。在本篇文章中,我们将深入介绍 Pandas 的基本概念和数据处理技巧,带您逐步了解如何用 Pandas 进行数据分析和处理。

二、Pandas 基础

2.1 什么是 Pandas?

Pandas 是 Python 的一个开源数据分析库,旨在使数据操作和处理更为简单。Pandas 提供了两种核心数据结构:

  1. Series:一维数据结构,类似于 Python 的列表或字典。
  2. DataFrame:二维数据结构,类似于电子表格中的表格,是 Pandas 的核心数据结构。

通过这些数据结构,Pandas 可以轻松地进行数据的清洗、合并、重塑和聚合等操作。

2.2 导入 Pandas 库

首先,我们需要导入 Pandas 库:

import pandas as pd

通常,我们将 Pandas 库重命名为 pd,这样可以更简洁地调用 Pandas 中的各种函数和方法。

三、Pandas 数据结构

3.1 Series 数据结构

Series 是 Pandas 中最基础的数据结构,它可以看作是一维的数组,具有索引(Index)和数据(Data)。

import pandas as pd# 创建一个 Series
data = [10, 20, 30, 40, 50]
series = pd.Series(data)
print(series)

输出:

0    10
1    20
2    30
3    40
4    50
dtype: int64
  • 索引(Index):默认从 0 开始,可以自定义索引。
  • 数据(Data):存储在 Series 中的值。

3.2 DataFrame 数据结构

DataFrame 是 Pandas 中最常用的数据结构,可以看作是二维的表格,由多行和多列组成,类似于 Excel 表格或 SQL 数据库中的表。

# 创建一个 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'Salary': [50000, 60000, 70000, 80000]
}df = pd.DataFrame(data)
print(df)

输出:

      Name  Age  Salary
0    Alice   25   50000
1      Bob   30   60000
2  Charlie   35   70000
3    David   40   80000
  • 列(Column):表示某一类属性(如年龄、薪资)。
  • 行(Row):表示某个实体(如某个人的详细信息)。
  • 索引(Index):默认从 0 开始,也可以自定义索引。

四、Pandas 基本操作

4.1 读取和保存数据

Pandas 提供了多种方式来读取和保存数据。最常见的是读取和保存 CSV 文件。

# 读取 CSV 文件
df = pd.read_csv('data.csv')# 保存 DataFrame 到 CSV 文件
df.to_csv('output.csv', index=False)
  • pd.read_csv():从 CSV 文件读取数据。
  • df.to_csv():将 DataFrame 保存为 CSV 文件。

4.2 查看数据

当我们导入一个 DataFrame 后,通常需要查看数据的基本信息。

# 查看前几行数据
print(df.head())# 查看数据的统计信息
print(df.describe())# 查看数据的行数和列数
print(df.shape)
  • head():查看前 5 行数据,帮助了解数据的结构。
  • describe():查看数据的统计信息,包括平均值、标准差、最大值和最小值等。
  • shape:返回数据的行数和列数。

4.3 数据选择和过滤

Pandas 提供了多种方式来选择和过滤数据。

4.3.1 选择列
# 选择单列数据
age = df['Age']
print(age)

输出:

0    25
1    30
2    35
3    40
Name: Age, dtype: int64
  • df[‘Age’]:选择名为 Age 的列。
4.3.2 选择行

使用 lociloc 可以选择特定的行。

# 使用 loc 根据标签选择行
row_1 = df.loc[1]
print(row_1)# 使用 iloc 根据位置选择行
row_2 = df.iloc[2]
print(row_2)
  • loc[]:基于标签选择数据。
  • iloc[]:基于位置选择数据。

4.4 数据过滤

我们可以根据条件对数据进行过滤。

# 过滤年龄大于30的员工
filtered_df = df[df['Age'] > 30]
print(filtered_df)

输出:

      Name  Age  Salary
2  Charlie   35   70000
3    David   40   80000
  • df[df[‘Age’] > 30]:返回年龄大于 30 的员工。

五、Pandas 数据处理

5.1 缺失值处理

在实际数据中,缺失值是常见的问题。Pandas 提供了简单的方法来处理缺失值。

# 查看缺失值情况
print(df.isnull().sum())# 填充缺失值
filled_df = df.fillna(0)# 删除包含缺失值的行
dropped_df = df.dropna()
  • isnull():返回布尔值 DataFrame,指示哪些值是缺失的。
  • fillna():用指定的值填充缺失值。
  • dropna():删除包含缺失值的行。

5.2 数据排序

我们可以对 DataFrame 中的数据进行排序。

# 按年龄升序排序
sorted_df = df.sort_values(by='Age')
print(sorted_df)
  • sort_values():按指定列对数据进行排序。

5.3 数据分组与聚合

Pandas 提供了灵活的数据分组和聚合方法,帮助我们从数据中获取有用的信息。

# 按 Name 分组,计算每组的平均年龄
average_age = df.groupby('Name')['Age'].mean()
print(average_age)
  • groupby():根据某列对数据进行分组。
  • mean():对每组数据进行平均值计算。

5.4 数据合并

Pandas 允许将多个 DataFrame 进行合并,类似于 SQL 中的连接操作。

# 创建两个 DataFrame
df1 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
df2 = pd.DataFrame({'Name': ['Charlie', 'David'], 'Salary': [70000, 80000]})# 合并两个 DataFrame
merged_df = pd.merge(df1, df2, on='Name', how='outer')
print(merged_df)
  • pd.merge():根据某列将两个 DataFrame 合并。
  • how=‘outer’:指定合并的方式,可以是 ‘inner’, ‘outer’, ‘left’, ‘right’。

六、Pandas 数据分析实战

为了更好地理解 Pandas 的数据分析能力,我们将使用一个示例数据集来展示如何进行数据清洗、探索和分析。假设我们有一个包含员工信息的数据集,数据包括姓名、年龄、薪资、部门等信息。

6.1 数据清洗

数据清洗是数据分析中非常重要的一步。在这一步中,我们将删除重复数据、处理缺失值以及转换数据类型。

# 删除重复数据
df = df.drop_duplicates()# 填充缺失值
df['Salary'] = df['Salary'].fillna(df['Salary'].mean())# 转换数据类型
df['Age'] = df['Age'].astype(int)
  • drop_duplicates():删除重复数据。
  • fillna():使用平均值填充缺失的薪资数据。
  • astype():转换数据类型。

6.2 数据探索

数据探索是理解数据的重要过程,通过探索性数据分析,我们可以了解数据的分布、特征和潜在的模式。

# 查看每个部门的平均薪资
avg_salary_by_dept = df.groupby('Department')['Salary'].mean()
print(avg_salary_by_dept)# 查看薪资的分布情况
df['Salary'].hist(bins=10)
plt.xlabel('Salary')
plt.ylabel('Frequency')
plt.title('Salary Distribution')
plt.show()
  • groupby():按部门对数据进行分组,并计算平均薪资。
  • hist():绘制薪资的直方图,查看薪资的分布。

6.3 数据可视化

Pandas 集成了 Matplotlib,可以方便地进行数据的可视化。通过可视化,我们可以直观地观察数据的特征和模式。

# 按部门绘制员工人数的柱状图
df['Department'].value_counts().plot(kind='bar')
plt.xlabel('Department')
plt.ylabel('Number of Employees')
plt.title('Number of Employees by Department')
plt.show()
  • value_counts():计算每个部门的员工人数。
  • plot(kind=‘bar’):绘制柱状图,显示每个部门的员工数量。

七、总结

这篇文章介绍了如何用 Pandas 进行数据分析和处理,从基础数据结构到常见的数据操作和实战应用。如果您需要更详细的解释或有任何具体问题,欢迎提出!


http://www.mrgr.cn/news/58791.html

相关文章:

  • 批量修改YOLO格式的标注类别
  • GPT-4o 和 GPT-4 Turbo 模型之间的对比
  • 金融工程--pine-script 入门
  • 配置nginx服务通过ip访问多网站
  • [数据集][目标检测]电力场景输电线路巡检检测数据集VOC+YOLO格式8667张50类别
  • 【小白学机器学习17】 概率论的认识论和方法论
  • 【Linux 从基础到进阶】集群技术与高可用性配置
  • 【NOIP提高组】Car的旅行路线
  • C++ | Leetcode C++题解之 第508题出现次数最多的子树元素和
  • 问:数据库存储过程优化实践~
  • LangChain入门教程,基本案例、调用官方api、中转api、阿里api等
  • 【Mysql优化】
  • 06 顺序表的基本操作
  • 「C/C++」C/C++之 #define 宏定义
  • CSDN等级详解:原力等级、创作等级、博客等级及期升级、降级与评分要点
  • C#与C++交互开发系列(十一):委托和函数指针传递
  • 使用 xlrd 和 xlwt 库进行 Excel 文件操作
  • 【多Agent协作论文解读】采用STORM模式更好利用LLM撰写长文章,基于Dify复现
  • ECharts饼图-基础饼图,附视频讲解与代码下载
  • 解决Docker部署ocserv的时候,遇到客户端经常重连问题
  • 纯血鸿蒙的最难时刻才开始
  • 设计一个支持断点续传的文件上传和下载系统
  • 1189.Pell数列
  • 020:无人机重要知识点名词解释
  • 【Java基础面试题】
  • C#自动化生成控件的时候坐标点的基本概念错误导致的异常