6.3 读取文本文件(TXT)
Pandas中文学习手册:轻松读取文本文件(TXT)基础与高级技巧
本章详细讲解Pandas中读取文本文件(TXT)的方法,包括基础函数pd.read_table和pd.read_csv,分隔符配置技巧,以及如何处理无表头和固定宽度文件,适合数据分析初学者快速上手。
读取文本文件(TXT)在Pandas中的应用
在数据分析工作中,我们经常需要从文本文件(如TXT文件)中导入数据。Pandas作为Python中强大的数据分析库,提供了多种读取文本文件的函数,让数据导入变得简单高效。本章将带你从基础开始,学习如何使用Pandas读取文本文件,包括常见场景如分隔符配置、无表头文件处理,以及固定宽度文件的读取。
1. 基础读取方法:pd.read_table 和 pd.read_csv
pd.read_table()
pd.read_table() 是读取表格数据的通用函数,默认使用制表符(\t)作为分隔符。它适用于各种分隔符格式的文本文件。
示例代码:
import pandas as pd
# 读取以制表符分隔的TXT文件
data = pd.read_table('data.txt') # 默认分隔符是制表符
print(data.head()) # 查看前几行数据
pd.read_csv()
pd.read_csv() 专门用于读取逗号分隔值(CSV)文件,但也可以通过参数配置处理其他分隔符。默认分隔符是逗号(,)。
示例代码:
# 读取CSV文件
data = pd.read_csv('data.csv') # 默认分隔符是逗号
print(data.head())
小提示: 在实际使用中,pd.read_table() 和 pd.read_csv() 功能相似,主要区别在于默认分隔符。你可以根据需要选择,并通过 sep 参数调整分隔符。
2. 分隔符配置(sep参数)
文本文件可能使用不同分隔符,如逗号、制表符、空格或自定义符号(如分号、冒号)。使用 sep 参数来指定分隔符,确保数据正确解析。
示例代码:
# 读取以分号分隔的文件
data = pd.read_csv('data_semicolon.txt', sep=';')
print(data.head())
# 读取以空格分隔的文件(单个空格)
data = pd.read_table('data_space.txt', sep=' ')
print(data.head())
# 读取以多个空格分隔的文件(使用正则表达式)
data = pd.read_table('data_multi_space.txt', sep='\s+')
print(data.head())
常见分隔符设置:
- 逗号:
sep=',' - 制表符:
sep='\t' - 空格:
sep=' '(单个空格)或sep='\s+'(多个空格) - 自定义符号:如
sep=';'、sep=':'等
3. 读取无表头的文本文件
如果文本文件没有表头(即第一行直接是数据,而不是列名),可以使用 header=None 参数。Pandas会分配默认列名(如0, 1, 2等),你也可以通过 names 参数指定自定义列名。
示例代码:
# 读取无表头文件,使用默认列名
data = pd.read_table('data_no_header.txt', header=None)
print(data.head())
# 指定列名
data_with_names = pd.read_table('data_no_header.txt', header=None, names=['姓名', '年龄', '城市'])
print(data_with_names.head())
好处: 这样可以让数据更易读,便于后续分析。
4. 读取固定宽度的文本文件
固定宽度文件是指每列数据有固定的字符数,没有明确的分隔符。对于这类文件,可以使用 pd.read_fwf() 函数,它是专门设计用于读取固定宽度文件的。
示例代码:
# 读取固定宽度文件,指定每列的起始和结束位置
data = pd.read_fwf('data_fixed_width.txt', colspecs=[(0, 10), (11, 20), (21, 30)]) # 假设第一列0-9字符,第二列11-19字符,第三列21-29字符
print(data.head())
替代方法: 如果你习惯用 pd.read_table(),某些版本支持 widths 参数,但 pd.read_fwf() 更直接且功能强大。
5. 注意事项与常见问题
-
编码问题: 如果文件包含中文字符或其他非ASCII字符,使用
encoding参数指定编码,例如encoding='utf-8'。data = pd.read_csv('data_chinese.txt', encoding='utf-8') -
大文件处理: 对于大型文件,可以使用
chunksize参数分块读取,避免内存溢出。for chunk in pd.read_csv('large_data.txt', chunksize=1000): # 处理每个块 print(chunk.head()) -
错误处理: 如果分隔符设置错误,可能导致数据解析失败。检查文件格式并使用正确的
sep参数。
总结
通过本章学习,你应该掌握了使用Pandas读取文本文件的核心技巧:
- 基础使用
pd.read_table()和pd.read_csv()。 - 通过
sep参数适配不同分隔符格式。 - 处理无表头文件,使用
header=None和names参数。 - 读取固定宽度文件,使用
pd.read_fwf()。
建议多练习这些方法,结合实际数据文件,加深理解。在后续章节中,我们将继续探索Pandas的其他高级功能。