综合案例:Python 数据处理——从Excel文件到数据分析
- 2026-11-02 14:42:43
适合对象:零编程基础的大一新生 课程目标:掌握使用Python处理Excel数据的基本方法,包括读取、清洗、处理和保存数据,为进一步的数据分析打下基础。
课程大纲
模块1:Pandas入门——数据分析的利器
1.1 什么是Pandas?
- 生活类比
:就像Excel是处理表格数据的工具一样,Pandas是Python中处理表格数据的专业库。 - 编程场景
:处理Excel、CSV等格式的结构化数据。
1.2 为什么选择Pandas?
- 易用性
:语法简洁,学习曲线平缓。 - 高效性
:基于NumPy,性能优秀。 - 功能全面
:涵盖数据分析的各个环节。 - 广泛应用
:数据科学、金融分析、商业智能等领域。
1.3 安装和导入Pandas
安装:在命令行中运行以下命令之一:
# 普通安装pip install pandas# 使用清华源安装(推荐,速度更快)pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple# 升级安装pip install --upgrade pandas -i https://pypi.tuna.tsinghua.edu.cn/simple导入:
import pandas as pd
1.4 动手实验
任务:导入pandas库并检查版本。
提示:使用
pd.version查看版本。参考答案:
import pandas as pdprint(pd.__version__)
模块2:读取Excel数据——让Python认识你的数据
2.1 数据结构简介
- DataFrame
:二维表格数据结构,类似Excel表格。 - Series
:一维数组,类似列表或Excel中的一列。
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_path:文件路径。 sheet_name:工作表名称(默认为第一个工作表)。 header:指定哪一行作为列名(默认为0,即第一行)。
2.4 互动练习
任务:读取Excel文件并显示前3行数据。
提示:使用
head(3)方法。参考答案:
import pandas as pddf = pd.read_excel('D:/销售数据.xlsx')print(df.head(3))
模块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 填充缺失值
核心方法:
fillna()示例演示:
# 将缺失值统一填充为指定值df = df.fillna(99999)# 输出填充结果print(df[missing_values])
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 数据格式统一
核心方法:
round()示例演示:
# 统一数值列的数据格式,四舍五入到指定小数位df['销售价格'] = df['销售价格'].round(2)# 输出处理后的前5行数据print(df.head(5))代码详解:
df['销售价格']:选择数据框中的"销售价格"列- 这是pandas的列选择语法,类似于Excel中选择一列
round(2):对选中的列进行四舍五入处理round()是pandas的数值处理方法 - 参数2表示保留2位小数
- 会对列中的每个数值进行四舍五入
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 列选择
单列选择:
df['列名']多列选择:
df[['列名1', '列名2']]示例演示:
# 选择单列product_names = df['产品名称']print(product_names.head())# 选择多列selected_columns = df[['产品名称', '销售数量']]print(selected_columns.head())
4.2 保存数据到Excel
核心函数:
to_excel()示例演示:
# 筛选需要的列df_filtered = df[['产品名称', '销售数量']]# 保存为新文件df_filtered.to_excel('D:/筛选结果.xlsx', index=False)代码详解:
index=False:参数设置,不保存行索引- 如果设为True,会在Excel中多出一列显示行号(0, 1, 2…)
- 设为False可以避免在Excel中显示不必要的行索引
4.3 参数说明
file_path:保存的文件路径。 index:是否保存行索引(通常设为False)。
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):将包含新列的完整数据保存到Excel文件 - 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)
课程特色:
- 生活化类比
:用Excel等常见工具类比,降低学习门槛。 - 逐步引导
:从基础概念到完整案例,层层递进。 - 实战驱动
:通过真实数据处理任务强化应用能力。 - 避坑指南
:提前预警缺失值、重复行等常见数据问题。