フォルダ内のcsv,xlsxファイルを一気に読み込みたい(glob関数)

Numpy

ここではやや複雑なglob関数を用いら複数ファイルの読み込みについて記載していきます。評価結果のデータ大量になり一つ一つ読み込めないことはよくありますよね。そんな時にはglob関数を用いてやるとうまく処理することができます。

まずは下記コードを参照にしてみて、フォルダ内のデータを取り込んでみてください。

import glob
glob.glob('*.xlsx')
#すべて取り込みたい場合
glob.glob(’*’)

これでフォルダ内にある.xlsxファイルは取り込めたはずです。
これを活用して下記コードを勉強しましょう。

import numpy as np 
import pandas as pd
import glob
 
file_list = glob.glob('*.xlsx')

df = pd.DataFrame()
for file in file_list:
    df2 = pd.read_excel(file, parse_dates=True,header=2, index_col=1)
    df = pd.concat([df, df2])
# header,indexはPandasコラム参照ください
# CSVを読み込みたい場合は代わりに「pd.read_csv()関数」を使うとよいです

df2取り込んで設定したdfにconcatしていくというコードになっています。そんなに難しくはないと思いますので一度やってみてください。

注意ポイント
取り込みデータは様々だとおもいますが、私が日ごろ扱っているデータは質が悪くNaNが多く含まれているデータがほとんどです。この場合取り込んだデータのNaNをdropna()関数を使って消去しながら集約していくとうまくいくケースがあるので試してみてください。下記コードとなります。

import numpy as np 
import pandas as pd
import glob
 
file_list = glob.glob('*.xlsx')

df = pd.DataFrame()
for file in file_list:
    df2 = pd.read_excel(file, parse_dates=True,header=2, index_col=1).dropna(how='all')
    df = pd.concat([df, df2])

コメント

タイトルとURLをコピーしました