读取数据
这是什么:CSV(逗号分隔的纯文本表格)和 Excel 文件的读写,也就是"喂数据"和"吐数据"。
为什么用:上一章的 DataFrame 都是手写字典造的,真实数据却都躺在文件里。不学会读文件,pandas 只能处理你手写的那几行;学会写出,报告才拿得出手。
如何用:本章用 pd.read_csv() 和 pd.read_excel() 把文件读成 DataFrame,再把结果存回文件。
读 CSV
CSV 就是用逗号分隔的纯文本表格,最通用的数据格式。先用记事本建一个 成绩.csv:
姓名,年龄,成绩
小明,18,92
小红,17,88
小刚,19,95
一行代码读进来:
import pandas as pd
df = pd.read_csv("成绩.csv")
print(df)
姓名 年龄 成绩
0 小明 18 92
1 小红 17 88
2 小刚 19 95
读 Excel
读 Excel 需要多装一个小工具 openpyxl(pandas 自己不会拆 .xlsx 文件):
pip install openpyxl
df = pd.read_excel("成绩.xlsx") # 默认读第一个工作表
两个常用参数
只挑有用的列——文件几十列你只要两列时:
df = pd.read_csv("成绩.csv", usecols=["姓名", "成绩"])
指定哪列当行索引——比如把"姓名"当标签,不再用 0/1/2:
df = pd.read_csv("成绩.csv", index_col="姓名")
print(df)
年龄 成绩
姓名
小明 18 92
小红 17 88
小刚 19 95
中文乱码坑
read_csv 打开中文文件报 UnicodeDecodeError?八成是编码问题。Windows 上不少 CSV 是 GBK 编码,换个参数就好:
df = pd.read_csv("成绩.csv", encoding="gbk") # 默认 utf-8,报错就试 gbk
判断方法:用记事本打开 CSV,点「另存为」看"编码"那一栏,写的啥就填啥。
导出:to_csv
分析完总要存出去,一行搞定:
df.to_csv("新成绩.csv", index=False) # index=False:不把行号写进文件
df.to_excel("新成绩.xlsx", index=False) # 导出 Excel 同理
打开 新成绩.csv 检查一下——干净整齐,没有多余的行号列。
本章解读
| 代码 | 作用 |
|---|---|
pd.read_csv("文件.csv") |
读 CSV 文件 |
pd.read_excel("文件.xlsx") |
读 Excel(需先装 openpyxl) |
usecols=[...] |
只读指定的列 |
index_col="列名" |
指定某列当行索引 |
encoding="gbk" |
中文乱码时的救命参数 |
df.to_csv("新文件", index=False) |
导出 CSV,不带行号 |
记忆口诀
read 进 to 出,乱码换 encoding,导出记得 index=False。
动手改
- 手动建一个三行学生数据的 CSV,用 pandas 读出来并
print - 给
read_csv加上usecols只读两列,对比输出少了什么 - 把读进来的 DataFrame 用
to_csv导出成新文件,再读回来验证没丢数据
下一章:数据清洗,真实数据从来都不干净 🐸