第 44 课 · 阶段八 · 项目实战

数据分析入门:pandas

pandas 是数据分析的绝对主角。这一课学会用 DataFrame 读取、筛选、统计、清洗数据,为第 45 课画图打基础。

第 44 课阶段八 · 项目实战难度:进阶建议时长:45 分钟关键词:pandas · DataFrame · 清洗

🎯 学完本课你将掌握

  • 安装并导入 pandas
  • 用 DataFrame 读取与创建数据
  • 掌握筛选、排序、分组统计
  • 处理缺失值

一、安装 pandas

安装
1pip install pandas

二、两个核心对象

Series:一列数据(带索引);DataFrame:二维表格,Excel 里的那种表。

创建 DataFrame.py
1import pandas as pd
2
3data = {
4 "姓名": ["小明", "小红", "小刚"],
5 "语文": [92, 88, 95],
6 "数学": [85, 90, 78],
7}
8df = pd.DataFrame(data)
9print(df)

三、读取 CSV / Excel

读取文件.py
1import pandas as pd
2
3# 读取 CSV
4df = pd.read_csv("scores.csv")
5# 读取 Excel(需要 openpyxl)
6# df = pd.read_excel("scores.xlsx")
7print(df.head()) # 前5行
8print(df.shape) # (行数, 列数)
9print(df.columns) # 列名

四、查看与筛选

筛选.py
1import pandas as pd
2df = pd.DataFrame({"姓名": ["小明", "小红", "小刚", "小丽"], "分数": [92, 88, 95, 60]})
3
4print(df["姓名"]) # 取一列
5print(df[["姓名", "分数"]]) # 取多列
6print(df.iloc[0]) # 取第一行(按位置)
7print(df[df["分数"] >= 90]) # 条件筛选:>=90 的
8print(df[df["分数"].isin([92, 95])]) # 值匹配

五、排序与统计

统计.py
1print(df["分数"].mean()) # 平均分
2print(df["分数"].max()) # 最高
3print(df["分数"].min()) # 最低
4print(df.describe()) # 一键统计总览
5
6df2 = df.sort_values("分数", ascending=False) # 按分数降序
7print(df2)

六、分组统计

groupby.py
1import pandas as pd
2df = pd.DataFrame({
3 "班级": ["一班", "一班", "二班", "二班"],
4 "分数": [92, 88, 95, 60],
5})
6print(df.groupby("班级")["分数"].mean()) # 每班平均分

七、处理缺失值

缺失值.py
1import pandas as pd
2import numpy as np
3
4df = pd.DataFrame({"a": [1, None, 3], "b": [4, 5, None]})
5print(df.isna()) # 哪些是缺失
6print(df.dropna()) # 删除有缺失的行
7print(df.fillna(0)) # 用0填充缺失
8print(df["a"].fillna(df["a"].mean())) # 用平均值填充

八、常见错误与解决

常见错误与解决

错误现象原因 / 解决方法
No module named 'pandas'先 pip install pandas,并用 venv 激活。
读取中文 CSV 乱码read_csv("f.csv", encoding="utf-8");若还乱码试 encoding="gbk"。
Excel 读取报错需要额外库:pip install openpyxl。
✍️ 小练习
创建一个包含 5 名同学三科成绩的 DataFrame,完成:求每科平均分、按总分排序、筛选出总分>=250 的同学、把缺失分填 0。
📌 本节小结
pandas 核心:DataFrame 存二维表、loc/iloc 定位、条件筛选、groupby 分组、fillna 清洗。它是数据分析的地基,配合第 45 课画图,就能把数据讲成故事。