Pandas のテキストファイルからデータをロードする方法

Asad Riaz 2023年1月30日
  1. テキストファイルからデータを読み込む read_csv() メソッド
  2. read_fwf() メソッドを使用して width formated テキストファイルを Pandas DataFrame に読み込む
  3. テキストファイルを Pandas の DataFrame に読み込むの read_table() メソッド
Pandas のテキストファイルからデータをロードする方法

Pandas DataFrametxt ファイルからデータを読み込む方法を紹介します。利用可能なオプションについても説明します。

まず、sample.txt というシンプルなテキストファイルを作成し、次の行をファイルに追加します。

45 apple orange banana mango
12 orange kiwi onion tomato

Python スクリプトを実行するのと同じディレクトリに保存する必要があります。

テキストファイルからデータを読み込む read_csv() メソッド

read_csv() は、text ファイルを Pandas DataFrame に変換するための最良の方法です。上記で作成したファイルには header がないため、header=None を設定する必要があります。空の値を 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() メソッドを使用して width formated テキストファイルを 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

テキストファイルを Pandas の DataFrame に読み込むの read_table() メソッド

read_table() は、text ファイルから Pandas の DataFrame にデータを load するもう 1つの方法です。

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