🐸 青蛙编程网
首页 / Python / Pandas / 2. 读取数据

读取数据

这是什么: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。

动手改

  1. 手动建一个三行学生数据的 CSV,用 pandas 读出来并 print
  2. 给 read_csv 加上 usecols 只读两列,对比输出少了什么
  3. 把读进来的 DataFrame 用 to_csv 导出成新文件,再读回来验证没丢数据

下一章:数据清洗,真实数据从来都不干净 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。