第 44 课 · 阶段八 · 项目实战
数据分析入门:pandas
pandas 是数据分析的绝对主角。这一课学会用 DataFrame 读取、筛选、统计、清洗数据,为第 45 课画图打基础。
🎯 学完本课你将掌握
- 安装并导入 pandas
- 用 DataFrame 读取与创建数据
- 掌握筛选、排序、分组统计
- 处理缺失值
一、安装 pandas
安装
1pip install pandas二、两个核心对象
Series:一列数据(带索引);DataFrame:二维表格,Excel 里的那种表。
创建 DataFrame.py
1import pandas as pd23data = {4 "姓名": ["小明", "小红", "小刚"],5 "语文": [92, 88, 95],6 "数学": [85, 90, 78],7}8df = pd.DataFrame(data)9print(df)三、读取 CSV / Excel
读取文件.py
1import pandas as pd23# 读取 CSV4df = 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 pd2df = pd.DataFrame({"姓名": ["小明", "小红", "小刚", "小丽"], "分数": [92, 88, 95, 60]})34print(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()) # 一键统计总览56df2 = df.sort_values("分数", ascending=False) # 按分数降序7print(df2)六、分组统计
groupby.py
1import pandas as pd2df = pd.DataFrame({3 "班级": ["一班", "一班", "二班", "二班"],4 "分数": [92, 88, 95, 60],5})6print(df.groupby("班级")["分数"].mean()) # 每班平均分七、处理缺失值
缺失值.py
1import pandas as pd2import numpy as np34df = 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 课画图,就能把数据讲成故事。