综合案例:Python 数据处理——从Excel文件到数据分析

适合对象 :零编程基础的大一新生
课程目标:掌握使用Python处理Excel数据的基本方法,包括读取、清洗、处理和保存数据,为进一步的数据分析打下基础。

课程大纲

模块1:Pandas入门------数据分析的利器

1.1 什么是Pandas?

  • 生活类比:就像Excel是处理表格数据的工具一样,Pandas是Python中处理表格数据的专业库。
  • 编程场景:处理Excel、CSV等格式的结构化数据。

1.2 为什么选择Pandas?

  • 易用性:语法简洁,学习曲线平缓。
  • 高效性:基于NumPy,性能优秀。
  • 功能全面:涵盖数据分析的各个环节。
  • 广泛应用:数据科学、金融分析、商业智能等领域。

1.3 安装和导入Pandas

  • 安装 :在命令行中运行以下命令之一:

    bash 复制代码
    # 普通安装
    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
  • 导入

    python 复制代码
    import pandas as pd

1.4 动手实验

  • 任务:导入pandas库并检查版本。

  • 提示:使用pd.__version__查看版本。

  • 参考答案:

    python 复制代码
    import pandas as pd
    print(pd.__version__)

模块2:读取Excel数据------让Python认识你的数据

2.1 数据结构简介

  • DataFrame:二维表格数据结构,类似Excel表格。
  • Series:一维数组,类似列表或Excel中的一列。

2.2 读取Excel文件

  • 核心函数pd.read_excel()
    数据示例

    下表展示了销售数据.xlsx文件中的前10条内容。完整内容打开百度网盘下载(提取码: 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 |
    | ......     | ......       | ......       | ......       | ......       |
  • 示例演示

    python 复制代码
    import pandas as pd
    
    # 读取Excel文件
    df = pd.read_excel('D:/销售数据.xlsx')
    
    # 显示前5行数据
    print(df.head(5))

    输出结果:

    复制代码
    客户 ID 产品名称  销售数量    销售价格       销售日期
    0  123456   手机    20  3000.0 2023-01-15
    1  654321   电脑    15  5000.0 2023-02-20
    2  789012   平板    18  2500.0 2023-03-10
    3  345678   耳机    30   500.0 2023-04-05
    4  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)方法。

  • 参考答案:

    python 复制代码
    import pandas as pd
    df = pd.read_excel('D:/销售数据.xlsx')
    print(df.head(3))

模块3:数据清洗------处理不完美的数据

3.1 检查缺失值

  • 核心方法isnull()any()

  • 示例演示

    python 复制代码
    # 检查数据中是否存在缺失值
    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()

  • 示例演示

    python 复制代码
    # 将缺失值统一填充为指定值
    df = df.fillna(99999)
    
    # 输出填充结果
    print(df[missing_values])

3.3 删除重复行

  • 核心方法duplicated()drop_duplicates()

  • 示例演示

    python 复制代码
    # 检查并打印重复行
    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()

  • 示例演示

    python 复制代码
    # 统一数值列的数据格式,四舍五入到指定小数位
    df['销售价格'] = df['销售价格'].round(2)
    
    # 输出处理后的前5行数据
    print(df.head(5))
  • 代码详解

    • df['销售价格']:选择数据框中的"销售价格"列
      • 这是pandas的列选择语法,类似于Excel中选择一列
    • round(2):对选中的列进行四舍五入处理
      • round()是pandas的数值处理方法
      • 参数2表示保留2位小数
      • 会对列中的每个数值进行四舍五入

3.5 综合练习

  • 任务:处理一个包含缺失值和重复行的销售数据文件。

  • 提示:按顺序执行检查缺失值、填充缺失值、删除重复行、统一数据格式等操作。

  • 参考答案:

    python 复制代码
    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']]

  • 示例演示

    python 复制代码
    # 选择单列
    product_names = df['产品名称']
    print(product_names.head())
    
    # 选择多列
    selected_columns = df[['产品名称', '销售数量']]
    print(selected_columns.head())

4.2 保存数据到Excel

  • 核心函数to_excel()

  • 示例演示

    python 复制代码
    # 筛选需要的列
    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中,最后将包含销售总额的数据保存到新文件。

  • 提示:使用列选择和保存方法。

  • 参考答案:

    python 复制代码
    import pandas as pd
    
    # 读取数据
    df = pd.read_excel('D:/销售数据.xlsx')
    
    # 筛选需要的列
    df_filtered = df[['产品名称', '销售数量']]
    
    # 保存为新文件
    df_filtered.to_excel('D:/产品销售数量.xlsx', index=False)
    python 复制代码
    # 根据公式「销售总额 = 销售数量 × 销售价格」计算新的「销售总额」列,并将其添加到DataFrame中
    df['销售总额'] = df['销售数量'] * df['销售价格']
    
    # 将包含销售总额的数据保存到新文件
    df.to_excel('D:/处理结果_含销售总额.xlsx', index=False)
    
    print("数据已保存到:D:/处理结果_含销售总额.xlsx")

模块5:完整案例实践------构建数据处理流水线

5.1 案例目标

构建一个完整的数据处理流水线,包括读取、清洗、处理和保存数据。

5.2 完整代码示例

python 复制代码
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 代码说明

  • 每个步骤都有明确的注释,便于理解。
  • 添加了条件判断,使程序更加健壮。
  • 输出关键信息,便于跟踪处理过程。

课程总结与作业

  1. 总结

    • Pandas是处理结构化数据的强大工具。
    • 数据处理流程包括读取、清洗、处理和保存。
    • 缺失值、重复行是常见数据问题,需要妥善处理。
    • 通过列选择可以提取需要的数据子集。
  2. 课后作业

    • 作业1:使用提供的学生成绩Excel文件,检查是否存在缺失值,如果存在则填充为0。
    • 作业2:从处理后的数据中筛选出数学成绩大于80分的学生记录,保存为新文件。
  3. 参考资料

  4. 软件安装包下载地址


课程特色

  • 生活化类比:用Excel等常见工具类比,降低学习门槛。
  • 逐步引导:从基础概念到完整案例,层层递进。
  • 实战驱动:通过真实数据处理任务强化应用能力。
  • 避坑指南:提前预警缺失值、重复行等常见数据问题。
相关推荐
陌路208 小时前
C23构造函数与析构函数
开发语言·c++
_OP_CHEN8 小时前
C++进阶:(二)多态的深度解析
开发语言·c++·多态·抽象类·虚函数·多态的底层原理·多态面试题
CsharpDev-奶豆哥8 小时前
JavaScript性能优化实战大纲
开发语言·javascript·性能优化
l1t8 小时前
利用DeepSeek修改数据结构提升求解集合程序效率
数据结构·python·deepseek
小妖同学学AI8 小时前
Rust 深度解析:变量、可变性与所有权的“安全边界”
开发语言·安全·rust
jiushun_suanli8 小时前
PyTorch CV模型实战全流程(一)
人工智能·pytorch·python
2301_764441339 小时前
基于python构建的低温胁迫实验
开发语言·python
ICT系统集成阿祥9 小时前
华为CloudEngine系列交换机堆叠如何配置,附视频
开发语言·华为·php
wjs20249 小时前
C++ 基本语法
开发语言