【Pandas】pd.read_csv() 函数:读取 CSV 文件

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)

常用参数

参数作用
filepathCSV 文件路径(本地路径或 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-8latin1gbk

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/ANULL 识别为 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. 总结

用法代码
读取标准 CSVpd.read_csv("data.csv")
读取无表头 CSVpd.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})
读取前 npd.read_csv("data.csv", nrows=10)
跳过前 npd.read_csv("data.csv", skiprows=5)
解决编码错误pd.read_csv("data.csv", encoding="latin1")

pd.read_csv() 是 Pandas 最常用的数据读取方法,支持 各种格式、数据过滤、编码处理,适用于 大规模数据分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值