【Pandas】pd.read_csv() 函数:读取 CSV 文件
pandas.read_csv() 用于读取 CSV(逗号分隔值)文件,并将其转换为 DataFrame,适用于 数据分析、数据清洗、机器学习 等任务。pd.read_csv() 是 Pandas 最常用的数据读取方法,支持 各种格式、数据过滤、编码处理,适用于 大规模数据分析。
·
pd.read_csv() —— 读取 CSV 文件
pandas.read_csv() 用于读取 CSV(逗号分隔值)文件,并将其转换为 DataFrame,适用于 数据分析、数据清洗、机器学习 等任务。
1. 语法
import pandas as pd
df = pd.read_csv(filepath, sep=',', header='infer', names=None, index_col=None, usecols=None, dtype=None)
常用参数
| 参数 | 作用 |
|---|---|
filepath |
CSV 文件路径(本地路径或 URL) |
sep |
分隔符(默认 ,,支持 \t(TSV)、` |
header |
指定标题行(header=None 表示无表头) |
names |
设定列名(适用于无标题 CSV) |
index_col |
设置索引列(index_col=0 代表第一列为索引) |
usecols |
选择要读取的列(usecols=["col1", "col2"]) |
dtype |
指定列的数据类型(dtype={"col1": str, "col2": float}) |
nrows |
读取前 n 行数据 |
skiprows |
跳过前 n 行(skiprows=10 跳过前 10 行) |
encoding |
指定编码格式(如 utf-8,latin1,gbk) |
2. 读取 CSV 文件
2.1 读取标准 CSV
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head()) # 查看前 5 行
如果 data.csv 内容如下:
name,age,score
Alice,25,90
Bob,30,85
Charlie,22,95
输出
name age score
0 Alice 25 90
1 Bob 30 85
2 Charlie 22 95
2.2 读取无表头 CSV
df = pd.read_csv("data.csv", header=None, names=["Name", "Age", "Score"])
print(df.head())
作用
header=None:告诉 Pandas 这个 CSV 没有列名names=["Name", "Age", "Score"]:指定列名
2.3 读取指定列
df = pd.read_csv("data.csv", usecols=["name", "age"])
print(df.head())
作用
usecols=["name", "age"]:只读取指定的列,忽略score列
2.4 设定索引列
df = pd.read_csv("data.csv", index_col="name")
print(df.head())
作用
index_col="name":将name设为索引列
2.5 处理不同分隔符(TSV、管道分隔)
df = pd.read_csv("data.tsv", sep="\t") # 读取 TSV 文件
df = pd.read_csv("data.txt", sep="|") # 读取 | 分隔文件
作用
sep="\t":读取制表符(TSV 文件)sep="|":读取|分隔的文件
2.6 处理缺失值
df = pd.read_csv("data.csv", na_values=["?", "N/A", "NULL"])
print(df.isnull().sum()) # 查看缺失值
作用
na_values=["?", "N/A", "NULL"]:将?、N/A、NULL识别为 NaN
2.7 只读取前 n 行
df = pd.read_csv("data.csv", nrows=10)
print(df)
作用
nrows=10:只读取前 10 行
2.8 跳过前 n 行
df = pd.read_csv("data.csv", skiprows=5)
print(df)
作用
skiprows=5:跳过前 5 行,不读取
2.9 设定数据类型
df = pd.read_csv("data.csv", dtype={"age": int, "score": float})
print(df.dtypes)
作用
dtype={"age": int, "score": float}:指定age为整数,score为浮点数
2.10 读取 URL CSV
url = "https://people.sc.fsu.edu/~jburkardt/data/csv/hw_200.csv"
df = pd.read_csv(url)
print(df.head())
作用
- 直接读取在线 CSV 文件
3. 解决常见问题
3.1 UnicodeDecodeError(编码问题)
df = pd.read_csv("data.csv", encoding="latin1") # 或 encoding="gbk"
原因
- CSV 可能不是 UTF-8 编码(如 GBK、Latin-1)
3.2 Pandas 解析速度慢
df = pd.read_csv("data.csv", low_memory=False) # 适用于大文件
作用
low_memory=False加速解析大文件
3.3 CSV 文件带 # 开头的注释
df = pd.read_csv("data.csv", comment="#")
作用
comment="#"忽略#开头的注释行
4. 总结
| 用法 | 代码 |
|---|---|
| 读取标准 CSV | pd.read_csv("data.csv") |
| 读取无表头 CSV | pd.read_csv("data.csv", header=None, names=["A", "B"]) |
| 读取指定列 | pd.read_csv("data.csv", usecols=["col1", "col2"]) |
| 设定索引列 | pd.read_csv("data.csv", index_col="name") |
| 处理缺失值 | pd.read_csv("data.csv", na_values=["?", "N/A"]) |
| 设定数据类型 | pd.read_csv("data.csv", dtype={"age": int}) |
读取前 n 行 |
pd.read_csv("data.csv", nrows=10) |
跳过前 n 行 |
pd.read_csv("data.csv", skiprows=5) |
| 解决编码错误 | pd.read_csv("data.csv", encoding="latin1") |
pd.read_csv() 是 Pandas 最常用的数据读取方法,支持 各种格式、数据过滤、编码处理,适用于 大规模数据分析。
更多推荐

所有评论(0)