Pandas 是一个强大的 Python 库,用于数据处理和分析,从文本文件加载数据是一项基本任务。本文探讨了将各种文本格式的数据高效导入 Pandas DataFrame 的方法。
目录
1. 使用 read_csv()
加载 CSV 和分隔符文件
read_csv()
函数是导入逗号分隔值 (CSV) 文件的主力军。通过使用 sep
或 delimiter
参数指定分隔符,它的用途可以扩展到其他分隔符文件。让我们探索它的功能:
import pandas as pd
# 加载 CSV 文件
df_csv = pd.read_csv("data.csv")
print(df_csv.head()) # 使用 head() 只显示前几行,以便更好地阅读
# 加载制表符分隔文件
df_tsv = pd.read_csv("data.tsv", sep="t")
print(df_tsv.head())
# 加载使用管道符作为分隔符的文件
df_pipe = pd.read_csv("data.txt", delimiter="|")
print(df_pipe.head())
除了基本加载之外,read_csv()
还提供强大的参数来进行细粒度控制:
sep
或delimiter
:指定分隔符(默认为 ‘,’)。header
:列名的行号(默认为 0,如果无标题行则使用None
)。names
:如果没有标题行,则列出列名。index_col
:用作 DataFrame 索引的列。usecols
:选择特定的列以提高性能。nrows
:仅读取前n
行以预览大型文件。skiprows
:跳过开头指定的行。encoding
:指定文件编码(例如,’utf-8’、’latin-1’)。dtype
:指定列的数据类型comment
:指示注释行的字符
2. 使用 read_fwf()
处理定长文件
read_fwf()
(读取定长格式)方法对于列由其固定宽度而不是分隔符定义的文件至关重要。这在旧系统中很常见。
import pandas as pd
# 定义列宽
colspecs = [(0, 10), (10, 20), (20, 30)] # 列宽分别为 10、10 和 10 个字符
# 加载定长文件
df_fwf = pd.read_fwf("data_fwf.txt", colspecs=colspecs, header=None)
df_fwf.columns = ['Column1', 'Column2', 'Column3']
print(df_fwf.head())
read_fwf()
的关键参数包括:
colspecs
:定义列起始和结束位置的元组列表。widths
:colspecs
的替代方法,提供列宽列表。header
:标题行号(与read_csv()
相同)。names
:提供列名(与read_csv()
相同)。
3. 使用 read_table()
处理制表符分隔和其他分隔符文件
read_table()
在很大程度上等同于 read_csv()
,默认为制表符 (t
) 分隔符。它非常适合制表符分隔文件 (TSV),但可以通过指定 sep
参数来处理其他分隔符。它与 read_csv()
共享所有参数,提供了类似的灵活性。
import pandas as pd
# 加载制表符分隔文件
df_table = pd.read_table("data.tsv")
print(df_table.head())
# 指定不同的分隔符
df_table_custom = pd.read_table("data.txt", sep="|")
print(df_table_custom.head())
Pandas 提供了强大的工具,可以高效地从各种文本文件格式导入数据。选择正确的方法取决于数据的结构。记住在加载后处理编码问题和缺失值。