メモランダム!!

自分用の端書のため,他の人が読めるようには書いていません.悪しからずm(_ _)m

Python3,Pandas:データフレームを用いて複数のCSVファイルを連続で読み込む

この記事に書いてあること

Pandasを使ってCSVファイルを連続で読み込んで結合する.
to_csvで出力すれば,ファイルをくっつけたりすることが出来る.

1.簡単な例

最も単純な例.CSVファイルが2つを読み込んで結合する

import pandas as pd

# データの読み込み
f1 = pd.read_csv('CSVfile1.csv', header=None)
f2 = pd.read_csv('CSVfile2.csv', header=None)

# 結合
data = pd.concat([f1, f2])

# 書き出し
data.to_csv('newData.csv', index=False)
解説
  • pandasを呼び出して,データをくっつける
  • pd.read_csvCSVファイルを読み込む.何も入れないと一番上の行をheaderとして読まれてしまう.そうすると結合したときにNaNがパディングされまくる.なので引数にheader=Noneを与えることで,あとでheaderを無視して結合できるようにした 
  • pd.concat([f1, f2])は結合コマンド.headerを無くしたので,単純にくっつければ良い
  • data.to_csvCSVファイルを出力

2.ちょっと複雑な例

「data」というフォルダに複数のCSVファイルが格納されているとする.
これらを「glob」を使ってフォルダ全体を読み込み,データフレームに格納して結合する.

import glob
import pandas as pd

# ファイル読み込み
files = glob.glob('data/*.csv')

# ファイルを読み込んでデータフレーム作成
df = pd.concat(
  (pd.read_csv(f, header=None, # ファイルを読み込む.読み込む際にHeader名は無視する
  names=('id','val'), # Headerの名前を決める
  dtype={'id':'str', 'val':'str'}) # データの型を定義
  for f in files)) # ファイルを連続で読み込む

# 表示
print(df)