Data Wrangling

高效加载文本数据到Pandas

Spread the love

Pandas 是一个强大的 Python 库,用于数据处理和分析,从文本文件加载数据是一项基本任务。本文探讨了将各种文本格式的数据高效导入 Pandas DataFrame 的方法。

目录

1. 使用 read_csv() 加载 CSV 和分隔符文件

read_csv() 函数是导入逗号分隔值 (CSV) 文件的主力军。通过使用 sepdelimiter 参数指定分隔符,它的用途可以扩展到其他分隔符文件。让我们探索它的功能:


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() 还提供强大的参数来进行细粒度控制:

  • sepdelimiter:指定分隔符(默认为 ‘,’)。
  • 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:定义列起始和结束位置的元组列表。
  • widthscolspecs 的替代方法,提供列宽列表。
  • 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 提供了强大的工具,可以高效地从各种文本文件格式导入数据。选择正确的方法取决于数据的结构。记住在加载后处理编码问题和缺失值。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注