Skip to content

读取文本文件

Pandas 提供了多种读取文本文件的方法,最常用的是 read_csv

基础读取

python
import pandas as pd

# 读取CSV文件
df = pd.read_csv('data.csv')

# 读取TSV文件
df = pd.read_csv('data.tsv', sep='\t')

# 读取指定编码
df = pd.read_csv('data.csv', encoding='utf-8')
df = pd.read_csv('data.csv', encoding='gbk')

常用参数

python
# 指定列名
df = pd.read_csv('data.csv', header=0)  # 第一行作为列名
df = pd.read_csv('data.csv', header=None)  # 无列名
df = pd.read_csv('data.csv', names=['A', 'B', 'C'])  # 自定义列名

# 指定索引列
df = pd.read_csv('data.csv', index_col=0)  # 第一列为索引
df = pd.read_csv('data.csv', index_col='id')  # 指定列为索引

# 选择特定列
df = pd.read_csv('data.csv', usecols=['姓名', '年龄'])
df = pd.read_csv('data.csv', usecols=[0, 2, 3])  # 按位置选择

数据类型控制

python
# 指定数据类型
df = pd.read_csv('data.csv', dtype={'年龄': int, '工资': float})

# 解析日期
df = pd.read_csv('data.csv', parse_dates=['日期'])

# 自定义日期解析
df = pd.read_csv('data.csv', parse_dates={'日期时间': ['日期', '时间']})

缺失值处理

python
# 指定缺失值标识
df = pd.read_csv('data.csv', na_values=['NA', 'N/A', 'null'])

# 不同列不同缺失值
df = pd.read_csv('data.csv', na_values={'年龄': ['未知'], '工资': ['待定']})

# 不将空值视为缺失值
df = pd.read_csv('data.csv', keep_default_na=False)

大文件处理

python
# 分块读取
chunk_size = 1000
chunks = pd.read_csv('large_file.csv', chunksize=chunk_size)

for chunk in chunks:
    # 处理每个块
    print(chunk.shape)

# 只读取前n行
df = pd.read_csv('data.csv', nrows=100)

# 跳过行
df = pd.read_csv('data.csv', skiprows=10)  # 跳过前10行
df = pd.read_csv('data.csv', skiprows=[1, 3, 5])  # 跳过指定行

其他格式

python
# 读取固定宽度格式
df = pd.read_fwf('data.txt')

# 读取表格格式
df = pd.read_table('data.txt')

# 从字符串读取
from io import StringIO
data = """姓名,年龄
张三,25
李四,30"""
df = pd.read_csv(StringIO(data))

读取JSON

python
# 读取JSON文件
df = pd.read_json('data.json')

# 读取JSON字符串
json_str = '[{"姓名": "张三", "年龄": 25}, {"姓名": "李四", "年龄": 30}]'
df = pd.read_json(json_str)

读取HTML

python
# 从HTML表格读取
dfs = pd.read_html('table.html')
df = dfs[0]  # 获取第一个表格

# 从URL读取
dfs = pd.read_html('https://example.com/table.html')

掌握文件读取方法可以高效地导入各种格式的数据。