Pandas 中如何从文本文件加载数据

Asad Riaz 2023年1月30日
  1. 使用 read_csv() 方法从文本文件加载数据
  2. 使用 read_fwf() 方法将宽度格式的文本文件加载到 Pandas dataframe 中
  3. 使用 read_table() 方法将文本文件加载到 Pandas dataframe 中
Pandas 中如何从文本文件加载数据

我们将介绍 Pandas Dataframe 从 txt 文件中加载数据的方法。我们还将介绍可用的选项。

首先,我们将创建一个名为 sample.txt 的简单文本文件,并在文件中添加以下几行:

45 apple orange banana mango
12 orange kiwi onion tomato

我们需要将其保存到运行 Python 脚本的目录中。

使用 read_csv() 方法从文本文件加载数据

read_csv() 是将文本文件转换为 Pandas Dataframe 的最佳方法。我们需要设置 header=None,因为上面创建的文件中没有任何 header。如果我们希望将空值替换为 NaN,我们还可以在方法内部设置 keep_default_na=False

示例代码:

# python 3.x
import pandas as pd

df = pd.read_csv("sample.txt", sep=" ", header=None)
print(df)

输出:

    0       1       2       3       4
0  45   apple  orange  banana   mango
1  12  orange    kiwi   onion  tomato

我们将设置 sep =" " 因为值之间用一个空格隔开。同样,如果我们从逗号分隔的文件中读取数据,则可以设置 sep =","。将 sample.txt 中的空格替换为 ,,然后将 sep =" "替换为 sep =",",然后运行代码。

Sample.txt

45,apple,orange,banana,mango
12,orange,kiwi,,tomato

代码:

# python 3.x
import pandas as pd

df = pd.read_csv("sample.txt", sep=",", header=None)
print(df)

输出:

    0       1       2       3       4
0  45   apple  orange  banana   mango
1  12  orange    kiwi     NaN  tomato

使用 read_fwf() 方法将宽度格式的文本文件加载到 Pandas dataframe 中

当我们有一个宽度格式化文本文件时,read_fwf() 将非常有用。我们不能使用 sep,因为不同的值可能具有不同的分隔符。考虑以下文本文件:

Sample.txt

45 apple  orange banana mango
12 orange kiwi   onion  tomato

如果我们看一下 Sample.text,我们将看到分隔符 delimiter 对于每个值都不相同。所以 read_fwf() 将能达到我们正确读取这个文件数据的目的。

代码:

# python 3.x
import pandas as pd

df = pd.read_fwf("sample.txt", header=None)
print(df)

输出:

    0       1       2       3       4
0  45   apple  orange  banana   mango
1  12  orange    kiwi   onion  tomato

使用 read_table() 方法将文本文件加载到 Pandas dataframe 中

read_table() 是将数据从文本文件加载到 Pandas DataFrame 的另一种方法。

Sample.txt:

45 apple orange banana mango
12 orange kiwi onion tomato

代码:

# python 3.x
import pandas as pd

df = pd.read_table("sample.txt", header=None, sep=" ")
print(df)

输出:

    0       1       2       3       4
0  45   apple  orange  banana   mango
1  12  orange    kiwi   onion  tomato