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
:指定要读取的文件的路径或指向文件的 URLsep
:指定文件中用于分隔列的分隔符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+"
,这表明文件中的值由一个或多个空格分隔。