0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pandasでカンマで区切られていないテキストファイルのデータを列ごとに抽出する方法

Last updated at Posted at 2021-02-18

あるテキストファイルから各列を抽出する方法をまとめておく。

ポイントとして、今回扱うテキストファイルは項目ごとにカンマで区切られていない。(スペースで区切られている。)
また列(カラム)の名前がない。

data.txt
-4.27664    2.32979
4.31421    6.18227
-2.71355    4.94826
-0.969893    6.99936
0.919589    9.9744

このデータを1列目がx, 2列目がyの5行2列のデータとして認識させたい。

###結論

import pandas as pd
df = pd.read_csv("data.txt", delim_whitespace=True, names=('x','y'))

image.png

以下で詳しく説明する。

##pandasのread_csvを用いてデータを読み込む

import pandas as pd
df_1 = pd.read_csv("data.txt")

print(df_1)

このままだとdf_1は、カラム名が-4.27664 2.32979の4行1列のデータとなってしまう。

image.png

##スペースを区切り文字に指定する

delim_whitespaceをTrueにすることでスペースを区切りとして認識させることができる。

df_2=pd.read_csv("data.txt", delim_whitespace=True)
print(df_2)

これにより、df_2は2列のデータとして認識させることができた。
ただし、このままではカラムの名前がそれぞれ-4.27664, 2.32979の4行2列のデータとなってしまう。

image.png

※ 区切り文字の指定については他にもsep, delimiterなどがある。
 参照:https://deepage.net/features/pandas-readcsv-deep.html

##カラム名を設定する

namesによって2列のカラム名をそれぞれx, yと設定する。

df_3=pd.read_csv("data.txt", delim_whitespace=True, names=('x','y'))
print(df_3)

image.png

これにより、1列目がx, 2列目がyの5行2列のデータとして認識させることができた。

####補足

x列のデータ、y列のデータはそれぞれ以下のようにして取り出すことができる。
これは列ごとの合計や平均、またxとyの共分散などを求める際に便利である。

df["x"]
df["y"]
0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?