真正学Python数据分析需掌握三个关键动作:读得进数据、算得对逻辑、画得出结论;中文路径用原始字符串或正斜杠,CSV编码需显式指定或用chardet检测,groupby().agg()推荐命名元组语法,Jupyter绘图须配%matplotlib inline,导出图片要加bbox_inches参数。

pd.read_csv() 读不出来中文路径或乱码?
常见现象是 FileNotFoundError 报错路径不存在,或者读出来列名/内容全是 或空值。根本原因不是 pandas 有问题,而是没告诉它文件编码和系统路径处理方式。
- Windows 下含中文路径,必须用原始字符串:
r"C:\用户\张三\data.csv"或正斜杠:"C:/用户/张三/data.csv" - CSV 文件用 Excel 保存过,默认是 GBK 编码,得显式指定:
pd.read_csv("data.csv", encoding="gbk") - 不确定编码时,先用
chardet检测:import chardet
with open("data.csv", "rb") as f:
print(chardet.detect(f.read(10000)))
groupby().agg() 聚合结果列名变奇怪?
比如写 df.groupby("city").agg({"sales": "sum", "profit": ["mean", "std"]}),结果列变成多级索引 (sales, sum) 和 (profit, mean),后续取列麻烦,导出也难看。
- 加
as_index=False只解决索引问题,不改列名结构 - 更直接的办法是用命名元组语法(Pandas ≥ 1.3):
df.groupby("city").agg(
total_sales=("sales", "sum"),
avg_profit=("profit", "mean"),
std_profit=("profit", "std")
) - 旧版本可用
rename(columns={...}),但别链式调用后又忘了赋值
plt.show() 不出图,Jupyter 里只显示 ?
这不是代码错了,是 matplotlib 后端没配对。默认后端在脚本里能弹窗,在 Jupyter 里却只返回对象。
- Jupyter 中优先用
%matplotlib inline(启动时就加,别放在画图之后) - 想交互式缩放?换
%matplotlib widget,但需提前装ipympl - 导出图片务必调
plt.savefig("plot.png", dpi=150, bbox_inches="tight"),漏掉bbox_inches常导致标题或坐标轴被截










