Pandas 深度解析及 Python 实现案例

举报
汪子熙 发表于 2025/08/01 19:33:45 2025/08/01
【摘要】 Pandas 是一个用于数据操作和分析的开源 Python 库,广泛应用于数据科学、数据分析以及机器学习等领域。它提供了数据结构和工具,简化了数据读取、清洗、分析和可视化等过程。在 Python 的数据分析生态圈中,Pandas 是最为重要的一个库之一,因为它使数据的操作变得高效且简单。Pandas 的核心数据结构是 Series 和 DataFrame。Series 是一种一维的类似数组的...

Pandas 是一个用于数据操作和分析的开源 Python 库,广泛应用于数据科学、数据分析以及机器学习等领域。它提供了数据结构和工具,简化了数据读取、清洗、分析和可视化等过程。在 Python 的数据分析生态圈中,Pandas 是最为重要的一个库之一,因为它使数据的操作变得高效且简单。

Pandas 的核心数据结构是 SeriesDataFrameSeries 是一种一维的类似数组的数据结构,类似于 Python 中的列表或字典;而 DataFrame 是一种二维的表格数据结构,更像是电子表格或数据库表。DataFrame 是 Pandas 中最为核心的数据结构,适用于大部分的操作和分析工作。

Pandas 核心数据结构及其使用示例

在开始 Pandas 的具体使用之前,我们需要先进行安装和导入。Pandas 可以通过 Python 包管理器 pip 安装,使用如下命令:

pip install pandas

在安装完 Pandas 之后,可以在 Python 环境中导入它:

import pandas as pd

Pandas 主要有两个核心的数据结构:SeriesDataFrame。接下来,我们将一步步讲解如何使用这两个数据结构,并给出一些具体的例子和代码实现。

Series 数据结构

Series 是一种类似于一维数组的对象,它由一组数据(可以是整数、字符串、浮点数等类型)以及与之相关的索引组成。我们可以将 Series 看作是带有索引标签的一维数组。在创建一个 Series 时,可以通过传递一个列表或字典作为数据。

import pandas as pd

# 使用列表创建一个 Series
data = [10, 20, 30, 40, 50]
series = pd.Series(data)
print(series)

上面的代码创建了一个简单的 Series,其中包含五个数值。输出结果会是:

0    10
1    20
2    30
3    40
4    50
dtype: int64

在这里,左侧的数字是自动生成的索引,而右侧是 Series 中的值。你也可以自己指定索引:

# 使用列表创建一个带有自定义索引的 Series
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
series = pd.Series(data, index=index)
print(series)

输出结果:

a    10
b    20
c    30
d    40
e    50
dtype: int64

这样就可以通过指定的标签来访问 Series 中的值,例如:

# 获取标签为 'c' 的数据
print(series['c'])  # 输出:30

DataFrame 数据结构

DataFrame 是一种二维的数据结构,可以理解为一个电子表格或数据库表的等价物。它由行和列组成,每一列可以是不同的数据类型。我们可以使用字典、列表或其他 Pandas 对象来创建一个 DataFrame

# 使用字典创建一个 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)

输出结果:

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

我们可以看到,DataFrame 的表格形式包含了列标签 NameAgeCity,以及自动生成的行索引。每一列可以看作是一个 Series 对象。

读取和保存数据

Pandas 的一个重要功能是读取和保存数据。它支持多种数据格式,包括 CSV、Excel、SQL 数据库等。例如,我们可以从一个 CSV 文件中读取数据,并将其保存为新的 CSV 文件:

# 从 CSV 文件读取数据
df = pd.read_csv('data.csv')

# 将数据保存为新的 CSV 文件
df.to_csv('new_data.csv', index=False)

上面的代码中,read_csv() 函数用于从指定路径的 CSV 文件中读取数据,而 to_csv() 函数可以将 DataFrame 保存为新的 CSV 文件。index=False 表示不保存行索引。

数据选择和过滤

在进行数据分析时,我们常常需要选择 DataFrame 中的某些部分数据,例如特定的行或列。Pandas 提供了多种选择数据的方法。

选择列:

# 选择 'Name' 列
name_column = df['Name']
print(name_column)

输出结果:

0      Alice
1        Bob
2    Charlie
Name: Name, dtype: object

选择多列:

# 选择 'Name' 和 'Age' 两列
subset = df[['Name', 'Age']]
print(subset)

输出结果:

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   35

选择行:

可以使用 lociloc 来选择行。loc 根据标签选择,而 iloc 根据整数索引选择。

# 使用 loc 选择第二行的数据
row_2 = df.loc[1]
print(row_2)

# 使用 iloc 选择第一行的数据
row_1 = df.iloc[0]
print(row_1)

输出结果:

Name          Bob
Age            30
City    Los Angeles
Name: 1, dtype: object

数据处理和清洗

数据清洗是数据分析过程中的重要步骤。数据集通常包含缺失值、重复值或格式不一致的情况。Pandas 提供了丰富的函数来处理这些问题。

处理缺失值:

# 创建一个包含缺失值的 DataFrame
data = {
    'Name': ['Alice', 'Bob', None],
    'Age': [25, None, 35],
    'City': ['New York', 'Los Angeles', None]
}
df = pd.DataFrame(data)
print(df)

# 填充缺失值
filled_df = df.fillna('Unknown')
print(filled_df)

输出结果:

     Name   Age         City
0   Alice  25.0     New York
1     Bob   NaN  Los Angeles
2    None  35.0        None

     Name      Age         City
0   Alice     25.0     New York
1     Bob  Unknown  Los Angeles
2  Unknown     35.0      Unknown

在这个例子中,我们使用 fillna() 函数将缺失值填充为 Unknown,也可以选择使用均值或其他统计值填充缺失的数据。

删除重复值:

# 创建一个包含重复值的 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Alice'],
    'Age': [25, 30, 25],
    'City': ['New York', 'Los Angeles', 'New York']
}
df = pd.DataFrame(data)
print(df)

# 删除重复的行
unique_df = df.drop_duplicates()
print(unique_df)

输出结果:

    Name  Age         City
0  Alice   25     New York
1    Bob   30  Los Angeles
2  Alice   25     New York

    Name  Age         City
0  Alice   25     New York
1    Bob   30  Los Angeles

drop_duplicates() 函数用于删除重复的行,使得每一行在数据集中唯一。

数据分析和操作

Pandas 还提供了丰富的功能来对数据进行统计和分析。例如,我们可以计算列的平均值、最小值和最大值等。

统计数据:

# 计算 'Age' 列的平均值
average_age = df['Age'].mean()
print(f'Average Age: {average_age}')

分组和聚合:

分组和聚合操作对于对数据进行分析是非常有用的。Pandas 提供了 groupby() 函数来实现对数据的分组操作。

# 创建一个 DataFrame
data = {
    'Department': ['HR', 'IT', 'IT', 'HR', 'IT'],
    'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Salary': [50000, 60000, 70000, 55000, 80000]
}
df = pd.DataFrame(data)
print(df)

# 按部门分组并计算工资的平均值
avg_salary = df.groupby('Department')['Salary'].mean()
print(avg_salary)

输出结果:

  Department Employee  Salary
0         HR    Alice   50000
1         IT      Bob   60000
2         IT  Charlie   70000
3         HR    David   55000
4         IT      Eve   80000

Department
HR    52500.0
IT    70000.0
Name: Salary, dtype: float64

在这里,groupby() 函数按照 Department 列对数据进行了分组,并使用 mean() 函数计算了每个部门的平均工资。

数据可视化

虽然 Pandas 本身并没有直接进行数据可视化的功能,但它与 matplotlibseaborn 等可视化库无缝集成,可以非常方便地进行数据的可视化。

简单的绘图示例:

import matplotlib.pyplot as plt

# 创建一个 DataFrame
data = {
    'Month': ['January', 'February', 'March', 'April'],
    'Sales': [150, 200, 300, 250]
}
df = pd.DataFrame(data)

# 使用 Pandas 的绘图功能
ax = df.plot(x='Month', y='Sales', kind='bar')
plt.ylabel('Sales in Units')
plt.title('Monthly Sales')
plt.show()

在这里,plot() 方法用于快速生成图表。我们指定了 xy,以及绘制的类型为柱状图。图表使用了 matplotlib 进行渲染,并可以显示每个月的销售数据。

应用案例

在理解了 Pandas 的基本操作之后,我们可以将它们应用到一些实际的案例中,例如数据分析或清洗一个数据集。

案例:分析公司员工的绩效数据

假设我们有一个公司员工的绩效数据集,包含员工的姓名、部门、月度绩效分数等信息。我们希望分析每个部门的平均绩效分数,找出表现最好的部门。

数据准备:

# 创建员工绩效数据的 DataFrame
data = {
    'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace'],
    'Department': ['HR', 'IT', 'IT', 'HR', 'Sales', 'Sales', 'IT'],
    'Performance': [85, 90, 88, 70, 95, 80, 89]
}
df = pd.DataFrame(data)
print(df)

计算平均绩效:

# 按部门分组并计算绩效的平均值
department_performance = df.groupby('Department')['Performance'].mean()
print(department_performance)

输出结果:

Department
HR       77.5
IT       89.0
Sales    87.5
Name: Performance, dtype: float64

在这个案例中,我们使用 groupby() 函数按部门对数据进行了分组,并计算了每个部门的平均绩效分数。从输出结果中可以看到,IT 部门的平均绩效最高,为 89。

总结

Pandas 是 Python 数据分析中不可或缺的工具,它极大地简化了数据读取、处理和分析的过程。通过 SeriesDataFrame,用户可以方便地操作结构化的数据,从中提取出有价值的信息。此外,Pandas 还提供了强大的数据清洗、处理和分析功能,使得处理大规模数据变得非常简单高效。

掌握 Pandas 的基本功能是进入数据分析领域的关键一步,结合 matplotlibnumpy 等库的使用,可以有效地提升数据科学分析的效率。希望通过本篇文章的详细讲解和案例演示,能够为你打开 Pandas 世界的大门,为你在数据科学道路上的学习和探索奠定基础。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。