适合对象:零编程基础的大一新生 课程目标:掌握使用Python处理Excel数据的基本方法,包括读取、清洗、处理和保存数据,为进一步的数据分析打下基础。
课程大纲
模块1:Pandas入门——数据分析的利器
1.1 什么是Pandas?
- 生活类比:就像Excel是处理表格数据的工具一样,Pandas是Python中处理表格数据的专业库。
- 编程场景
1.2 为什么选择Pandas?
1.3 安装和导入Pandas
1.4 动手实验
模块2:读取Excel数据——让Python认识你的数据
2.1 数据结构简介
2.2 读取Excel文件
核心函数:pd.read_excel()数据示例:下表展示了销售数据.xlsx文件中的前10条内容。完整内容打开 https://pan.baidu.com/s/1PalOAKmKsIMTX-xWNqH__Q 下载(提取码:2afy)
| 客户ID | 产品名称 | 销售数量 | 销售价格 | 销售日期 ||--------|----------|----------|----------|----------|| 123456 | 手机 | 20 |3000| 2023/1/15 0:00 || 654321 | 电脑 | 15 |5000| 2023/2/20 0:00 || 789012 | 平板 | 18 |2500| 2023/3/10 0:00 || 345678 | 耳机 | 30 |500| 2023/4/5 0:00 || 987654 | 键盘 | 25 |300| 2023/5/12 0:00 || 456789 | 鼠标 | 40 |100| 2023/6/18 0:00 || 234567 | 充电器 | 50 |80| 2023/7/25 0:00 || 321098 | 硬盘 | 12 |800| 2023/8/30 0:00 || 876543 | 显示器 | 8 |1500| 2023/9/15 0:00 || 543210 | 音箱 | 10 |399.99| 2023/10/1 0:00 || …… | …… | …… | …… | …… |
示例演示:
import pandas as pd# 读取Excel文件df = pd.read_excel('D:/销售数据.xlsx')# 显示前5行数据print(df.head(5))
输出结果:
客户 ID 产品名称 销售数量 销售价格 销售日期0 123456 手机 20 3000.0 2023-01-151 654321 电脑 15 5000.0 2023-02-202 789012 平板 18 2500.0 2023-03-103 345678 耳机 30 500.0 2023-04-054 987654 键盘 25 300.0 2023-05-12
代码详解:
pd.read_excel():pandas读取Excel文件的函数
- 自动识别Excel文件格式(.xlsx或.xls)
- 将Excel数据转换为DataFrame对象便于处理
df.head(5):显示数据框的前5行
- 默认显示前5行,也可以指定其他数字,如head(3)显示前3行
- 用于快速预览数据结构和内容
2.3 常用参数说明
file_pathsheet_nameheader
2.4 互动练习
模块3:数据清洗——处理不完美的数据
3.1 检查缺失值
核心方法:isnull()和any()
示例演示:
# 检查数据中是否存在缺失值missing_values = df.isnull().any(axis=1)# 输出存在缺失值的数据行print(df[missing_values])
代码详解:
df.isnull():创建一个布尔矩阵,标记所有缺失值(NaN)的位置
- 对于每个单元格,如果是缺失值则返回 True,否则返回 False
.any(axis=1):沿着行方向(axis=1)检查每一行
- 如果一行中任何一个单元格是缺失值,整行就标记为 True
- 如果一行中没有任何缺失值,整行就标记为 False
missing_values:得到一个布尔序列,长度等于数据框的行数
df[missing_values]:使用布尔索引筛选出包含缺失值的行
3.2 填充缺失值
3.3 删除重复行
核心方法:duplicated()和drop_duplicates()
示例演示:
# 检查并打印重复行duplicated_rows = df.duplicated(keep=False)if duplicated_rows.any(): print("重复行的行号及内容:") print(df[duplicated_rows])# 删除重复行df = df.drop_duplicates()# 输出删除重复行后的数据行数print(len(df))
代码详解:
drop_duplicates()是pandas的删除重复行方法
- 默认情况下,它会比较所有列的值来判断是否为重复行
- 如果多行完全相同,只保留第一行,删除后面的重复行
duplicated(keep=False)参数说明:
keep=False表示所有重复行都标记为True,便于显示所有重复项
3.4 数据格式统一
3.5 综合练习
任务:处理一个包含缺失值和重复行的销售数据文件。
提示:按顺序执行检查缺失值、填充缺失值、删除重复行、统一数据格式等操作。
参考答案:
import pandas as pd# 读取数据df = pd.read_excel('D:/销售数据.xlsx')# 检查缺失值missing_values = df.isnull().any(axis=1)print("包含缺失值的行:")print(df[missing_values])# 填充缺失值df = df.fillna(99999)# 删除重复行df = df.drop_duplicates()# 统一数据格式df['销售价格'] = df['销售价格'].round(2)# 显示处理结果print("处理后的前5行数据:")print(df.head(5))
模块4:数据筛选与保存——提取你需要的数据
4.1 列选择
4.2 保存数据到Excel
4.3 参数说明
4.4 综合挑战
任务:从销售数据中提取产品名称和销售数量两列,保存为新文件。根据公式「销售总额 = 销售数量 × 销售价格」计算新的「销售总额」列,并将其添加到DataFrame中,最后将包含销售总额的数据保存到新文件。
提示:使用列选择和保存方法。
参考答案:
import pandas as pd# 读取数据df = pd.read_excel('D:/销售数据.xlsx')# 筛选需要的列df_filtered = df[['产品名称', '销售数量']]# 保存为新文件df_filtered.to_excel('D:/产品销售数量.xlsx', index=False)
计算并保存「销售总额」:
# 根据公式「销售总额 = 销售数量 × 销售价格」计算新的「销售总额」列,并将其添加到DataFrame中df['销售总额'] = df['销售数量'] * df['销售价格']# 将包含销售总额的数据保存到新文件df.to_excel('D:/处理结果_含销售总额.xlsx', index=False)print("数据已保存到:D:/处理结果_含销售总额.xlsx")
模块5:完整案例实践——构建数据处理流水线
5.1 案例目标构建一个完整的数据处理流水线,包括读取、清洗、处理和保存数据。
5.2 完整代码示例
import pandas as pd# (1)读取Excel文件 df = pd.read_excel('D:/销售数据.xlsx') print("原始数据前5行:") print(df.head(5))# (2)检查缺失值 missing_values = df.isnull().any(axis=1)if missing_values.any(): print("包含缺失值的行:") print(df[missing_values])else: print("数据中没有缺失值")# (3)填充缺失值 df = df.fillna(99999) print("填充缺失值后的数据:") print(df[missing_values])# (4)删除重复行 original_rows = len(df) df = df.drop_duplicates() new_rows = len(df) print(f"删除了{original_rows - new_rows}行重复数据")# (5)统一数据格式 df['销售价格'] = df['销售价格'].round(2) print("统一格式后的前5行数据:") print(df.head(5))# (6)筛选并保存数据 df_filtered = df[['产品名称', '销售数量']] df_filtered.to_excel('D:/处理结果.xlsx', index=False) print("数据已保存到:D:/处理结果.xlsx")# (7)根据公式「销售总额 = 销售数量 × 销售价格」计算新的「销售总额」列,并将其添加到DataFrame中 df['销售总额'] = df['销售数量'] * df['销售价格'] df.to_excel('D:/处理结果_含销售总额.xlsx', index=False) print("数据已保存到:D:/处理结果_含销售总额.xlsx")
- 代码详解
df['销售总额'] = df['销售数量'] * df['销售价格']- 使用pandas的向量化操作,自动对每行的销售数量和销售价格进行相乘运算
- 将计算结果作为新列"销售总额"添加到DataFrame中
df.to_excel('D:/处理结果_含销售总额.xlsx', index=False)- index=False 表示不保存行索引到Excel文件中
- 如果文件已存在,将被覆盖;如果不存在,将创建新文件
5.3 代码说明
- 每个步骤都有明确的注释,便于理解。
- 添加了条件判断,使程序更加健壮。
- 输出关键信息,便于跟踪处理过程。
课程总结与作业
总结:
- Pandas是处理结构化数据的强大工具。
- 数据处理流程包括读取、清洗、处理和保存。
- 缺失值、重复行是常见数据问题,需要妥善处理。
- 通过列选择可以提取需要的数据子集。
课后作业:
- 作业1:使用提供的学生成绩Excel文件,检查是否存在缺失值,如果存在则填充为0。
- 作业2:从处理后的数据中筛选出数学成绩大于80分的学生记录,保存为新文件。
官方参考资料:
- Pandas 用户指南:https://pandas.pydata.org/docs/user_guide/index.html
- Pandas API 参考:Pandas API https://pandas.pydata.org/docs/reference/index.html
软件安装包下载地址:https://pan.baidu.com/s/1j2dFFPY9516Uw5hIssxGbw(提取码: ygrr)
课程特色: