Pandas 读取文本文件

Pandas 提供了多种方法来读取纯文本(.txt)文件并将其转换为 Pandas DataFrame

我们可以通过以下方式在 Pandas 中读取文本文件:

  • 使用 read_fwf() 函数
  • 使用 read_table() 函数
  • 使用 read_csv() 函数

使用上述方法,让我们读取一个名为 data.txt 的示例文本文件,内容如下。

John  25  170
Alice 28  165
Bob   30  180

使用 read_fwf() 读取文本

Pandas 的 read_fwf() 函数中的缩写 fwf 代表固定宽度行(fixed-width lines),它用于从文本文件等文件中加载 DataFrames。

要使用 read_fwf() 读取文本文件,文本文件应该被分隔成固定宽度的列。

语法

Pandas 中 read_fwf() 的语法是:

pandas.read_fwf(
    filepath_or_buffer,
    colspecs = [],
    widths=None,
    infer_nrows=100,
    **kwds
)
  • filepath_or_buffer:指定文件路径或从中读取数据的类文件对象
  • colspecs:定义文件中的列位置或范围
  • widths(可选):是 colspecs 的替代项,可用于定义文件中每列的宽度
  • infer_nrows(可选):指定用于推断列宽的行数(如果未显式提供 widths)
  • **kwds(可选):允许传递额外的关键字参数以进行进一步的自定义

要了解更多信息,请参阅官方文档关于 read_fwf() 的内容。


示例:read_fwf()

data.txt 文件的内容与引言部分提到的相同。

import pandas as pd

# read the fixed-width file df = pd.read_fwf('data.txt', colspecs=[(0, 5), (6, 10), (11, 15)], names = ['Name', 'Age', 'Height'])
print(df)

输出

    Name  Age  Height
0   John   25      70
1  Alice   28      65
2    Bob   30      80

在上面的示例中,我们使用 read_fwf() 读取了文本文件 'data.txt'

这里,

  • colspecs = [(0,5), (6,10), (11,15)]:指定了文本文件中每列的位置
  • names = ['Name', 'Age', 'Height']:指定了要分配给每列的名称

names 参数是 **kwds 中关键字参数的一个示例。


使用 read_table() 读取文本

pandas 的 read_table() 函数用于从文件或 URL 读取表格数据。它是从分隔文本文件读取数据的便捷方式。

语法

Pandas 中 read_table() 的语法如下:

df = pd.read_table(
    filepath_or_buffer,
    sep='\t',
    header='infer',
    names=None
)

这里,

  • filepath_or_buffer:指定要读取的文件的路径或指向文件的 URL
  • sep:指定文件中用于分隔列的分隔符
  • header:指定用作列名的行号(0 索引)
  • names:DataFrame 的列名列表

要了解更多信息,请参阅官方文档关于 read_table() 的内容。


示例:read_table()

data.txt 文件的内容与引言部分提到的相同。

import pandas as pd

# read the file using read_table() df = pd.read_table("data.txt", sep="\s+", names=['Name', 'Age', 'Height'])
print(df)

输出

    Name  Age  Height
0   John   25     170
1  Alice   28     165
2    Bob   30     180

这里,使用了 sep="\s+" 参数来指定数据由一个或多个空格分隔。

分隔符的选择取决于文本文件的格式。例如,如果文本文件包含逗号分隔值,我们将使用 sep = ','


使用 read_csv() 读取文本

Pandas 的 read_csv() 函数用于读取 csv 文件。

它还可以用于读取文本文件,因为 read_csv() 除了逗号之外,还允许使用其他分隔符,如空格、制表符、分号等。

语法

Pandas 中 read_csv() 的语法如下:

df = pd.read_csv(
    filepath_or_buffer,
    sep=',',
    header=0,
    names=['col1', 'col2', 'col3'],
    index_col='col1'
)

这里,

  • filepath_or_buffer:表示要读取的 CSV 数据所在的路径或缓冲区对象
  • sep(可选):指定 CSV 文件中使用的分隔符
  • header(可选):指示用作标题或列名的行号
  • names(可选):要分配给 DataFrame 的列名列表
  • index_col(可选):指定要用作 DataFrame 索引的列

这些是 read_csv() 函数的一些常用参数。除 filepath_or_buffer 外,它们都是可选的。还有许多其他可选参数可以与 read_csv() 一起使用。

要了解更多信息,请访问我们的 Pandas CSV 文章。


示例:read_csv()

data.txt 文件的内容与引言部分提到的相同。因此,文件中的值由空格分隔。

import pandas as pd

# read the file using read_table() df = pd.read_csv("data.txt", sep="\s+", header = None, names=['Name', 'Age', 'Height'])
print(df)

输出

    Name  Age  Height
0   John   25     170
1  Alice   28     165
2    Bob   30     180

在这里,header = None 表明文本文件中的任何行都不是标题行。

另外,请注意使用了 sep="\s+",这表明文件中的值由一个或多个空格分隔。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战