Pandas 中文手册

4.7 DataFrame实战案例(巩固基础)

Pandas DataFrame实战案例:学生成绩数据处理入门

Pandas 中文手册

本章通过三个实战案例,详细介绍如何使用Pandas DataFrame处理学生成绩数据,包括创建DataFrame、行/列操作、统计运算、排序筛选及去重新增删除操作,适合初学者巩固Pandas基础。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

DataFrame实战案例(巩固基础)

本章将通过三个实际案例,帮助你巩固Pandas DataFrame的基础操作。我们将创建一个学生成绩DataFrame,并进行各种操作,包括行/列操作、统计运算、排序筛选以及去重、新增和删除操作。每个案例都配有代码示例和详细解释,确保新手也能轻松上手。

案例1:创建学生成绩DataFrame,完成行/列操作

1.1 创建DataFrame

首先,导入Pandas库,并创建一个学生成绩DataFrame。假设我们有一些学生数据,包括姓名和语文、数学、英语成绩。

import pandas as pd

# 创建数据字典,键为列名,值为列表形式的列数据
data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '语文': [85, 90, 78, 92],
    '数学': [88, 76, 95, 80],
    '英语': [90, 85, 88, 94]
}

# 创建DataFrame
df = pd.DataFrame(data)
print(df)

输出结果将显示一个4行4列的DataFrame。

解释:这里我们使用字典来初始化DataFrame,键名成为列名,值列表成为对应列的数据。这是创建DataFrame的常用方式之一。

1.2 行操作

行操作主要包括选择行和条件筛选行。

  • 选择行:可以使用iloc基于整数位置选择行,或loc基于标签选择行。
# 使用iloc选择第一行(从0开始索引)
print(df.iloc[0])  # 输出张三的成绩数据

# 选择第一行到第二行(不包括第三行)
print(df.iloc[0:2])  # 输出张三和李四的数据
  • 条件筛选行:基于列值进行筛选,常用于提取满足条件的数据行。
# 筛选语文成绩大于80的学生
print(df[df['语文'] > 80])

1.3 列操作

列操作包括选择列、重命名列和添加新列。

  • 选择列:通过列名列表来选择多列。
# 选择语文和数学两列
print(df[['语文', '数学']])
  • 重命名列:使用rename方法修改列名,可以指定inplace=True直接修改原DataFrame。
# 重命名列名
# 方法1:使用字典映射
renamed_df = df.rename(columns={'语文': 'Chinese', '数学': 'Math', '英语': 'English'})
print(renamed_df)

# 方法2:直接修改原DataFrame
df.rename(columns={'语文': 'Chinese', '数学': 'Math', '英语': 'English'}, inplace=True)
print(df)
  • 添加新列:通过赋值添加新列,可以基于现有列计算得出。
# 添加总分列,计算每位学生的总成绩
df['总分'] = df['Chinese'] + df['Math'] + df['English']
print(df)

案例2:DataFrame的统计运算与排序筛选

2.1 统计运算

Pandas提供了丰富的统计函数,方便进行数据汇总。

  • 基本统计:使用mean()sum()等方法计算各列的统计值。
# 计算各科平均分
print(df[['Chinese', 'Math', 'English']].mean())

# 计算总分列的描述性统计(包括平均值、标准差等)
print(df['总分'].describe())
  • 综合统计describe()方法可以快速获取所有数值列的摘要统计。
print(df.describe())

2.2 排序

排序操作可以帮助我们按特定顺序查看数据。

  • 按列排序:使用sort_values方法,可以指定按哪一列排序以及排序顺序。
# 按总分降序排序(从高到低)
df_sorted = df.sort_values(by='总分', ascending=False)
print(df_sorted)

# 按总分升序排序(从低到高)
df_sorted_asc = df.sort_values(by='总分')
print(df_sorted_asc)

2.3 筛选

筛选操作常用于提取满足特定条件的数据子集。

  • 基于条件筛选:结合布尔索引实现。
# 筛选总分大于250的学生
filtered_df = df[df['总分'] > 250]
print(filtered_df)

# 筛选数学成绩高于80且英语成绩高于85的学生
filtered_complex = df[(df['Math'] > 80) & (df['English'] > 85)]
print(filtered_complex)

案例3:DataFrame的去重、新增与删除操作

3.1 去重

去重操作用于删除重复的行数据,确保数据唯一性。

  • 检查重复行:首先可以使用duplicated方法检查重复项。
# 假设数据中有重复行,例如添加一行相同数据
df_dup = pd.concat([df, df.iloc[0:1]])
print(df_dup)

# 检查重复行
print(df_dup.duplicated())
  • 删除重复行:使用drop_duplicates方法删除重复行。
# 删除所有重复行,只保留第一次出现的行
df_unique = df_dup.drop_duplicates()
print(df_unique)

3.2 新增

新增操作包括添加新行或新列。

  • 新增列:如添加平均分列。
# 计算平均分列(保留两位小数)
df['平均分'] = df['总分'] / 3
# 如果需要格式化输出,可以四舍五入
df['平均分'] = df['平均分'].round(2)
print(df)
  • 新增行:使用append方法或concat函数添加新行数据。
# 添加一个新学生数据
new_row = {'姓名': '孙七', 'Chinese': 88, 'Math': 91, 'English': 85, '总分': 264, '平均分': 88.0}
df_new = df.append(new_row, ignore_index=True)
print(df_new)

3.3 删除

删除操作用于移除不再需要的行或列。

  • 删除列:使用drop方法指定列名删除。
# 删除英语列
df_dropped_col = df.drop(columns=['English'])
print(df_dropped_col)
  • 删除行:使用drop方法指定行索引删除。
# 删除第一行(索引为0)
df_dropped_row = df.drop(index=0)
print(df_dropped_row)

总结

通过本章的三个实战案例,你学会了如何创建DataFrame、进行行/列操作、执行统计运算、排序筛选以及去重、新增和删除操作。这些是Pandas基础操作的核心,掌握后可以处理大部分简单的数据处理任务。建议结合具体项目多加练习,巩固这些技能。接下来,你可以继续学习更高级的Pandas功能,如数据合并、分组聚合等。

记住:实践是学习编程的最佳方式,尝试自己创建数据或使用真实数据集进行练习。祝你在数据处理的旅程中越走越远!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包