大量のエクセル処理を自動化するためには、複数のcsvファイル(または、xlsxファイル)を読み込むことがあります。ここでは、その方法の一例を紹介します。
サンプルコード
import pandas as pd
import glob
allFiles = glob.glob("2021/*.csv")
frame = pd.DataFrame()
for file_ in allFiles:
df = pd.read_csv(file_,encoding = 'cp932')
frame = pd.concat([frame,df])
frame.to_excel("frame.xlsx", encoding="shift-jis")
※2023/2/23 追記
DataFrameの結合に『append』を使うと『FutureWarning』が表示されます。それに伴い、『concat』に変更しました。
globについて
glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False)
・pathname
ファイルを指定する(相対パス、絶対パスどちらでも可)
・*
読み込みたいファイル形式を指定する。今回の場合、”.csv”とします。
エクセルの場合は、”.xlsx”とします。
他は今回、扱わないため説明は省略します。詳しくは以下、ライブラリ参照してください。
https://docs.python.org/ja/3/library/glob.html
サンプルコードの解説
ステップとしては、以下の通りです。
1.ファイル名を全て読み込む
2.空のデータフレームを作る
3.csvを読み込み、DataFrameに連結させていく
ファイル名を全て読み込む
allFiles = glob.glob("2021/*.csv")
まずは、指定したフォルダー(ここでは”2021”)の内の全てのcsvファイル名を変数(allFiles)に代入します
空のデータフレームを作る
frame = pd.DataFrame()
空のデータフレーム作っておきます。
csvを読み込み、DataFrameに連結させていく
for file_ in allFiles:
df = pd.read_csv(file_,encoding = 'cp932')
frame = pd.concat([frame,df])
# concatの代わりにappendでも使用できますが、『FutureWarning』で出るので変更しました。
# frame = pd.concat([frame,df])
csvをデータフレームとして読み込み、あらかじめ作っておいたframeにconcatで追加していきます。
これをfor文を使って、繰り返します。
今回、encordingは”cp932″を指定。日本語の場合、”shift-jis”や”utf-8”を用いると良いです。DataFrameで読み込まれていないとエラーになるため、必要に応じて以下のコードを組み込み確認。
print(type(frame))
frame.to_excel("frame.xlsx", encoding="cp932")
最後に、DataFrameとしてまとめたframeをエクセル、またはcsvとしてアウトプットさせます。
まとめ
今回は、エクセルに出力させてますが、アウトプットのさせ方は様々あります。
私の場合、DataFrameのまま計算させて、新しいDataFrameを再構築したり、DataFrameからデータを引っ張ってグラフ化したりしています。
また、ちょっとしたアレンジでクラウドサーバー(AWS s3など)から読み込むことも可能です。
AWS s3からの複数のcsvの読み込みは、下記で紹介していますので、良かったらご覧ください。
プログラミングの勉強に悩んだら、、
プログラミングの勉強に悩んだら、『Udemy』をオススメします。
私自身は、基本的なことは『Udemy』で学びました。具体的な、オススメのポイントは以下の4つです。
オススメのポイント
1.全ての講座がオンライン
スマホでもパソコンでどこからでも受講できます。
2.リーズナブルな価格で、実用的なスキル
セール時に購入すれば、2000~3000円程度で受講できる講座もあります。
また、プロに講師による講座になるため、体系的、かつ実用的に学べます。
3.購入した講座を何度でも見直せる
プログラミングに暗記は必要ありません。見返せば良いです。
4.プログラミングの講座が豊富
特にPython流行りであることもあり、非常に豊富です
関連記事
csvを読み込むとき、以下の記事で紹介しているパラメーターを使うと綺麗に読み込めることもあるので、こちらも良かったらご覧ください。
こちらでは、実際にpythonを導入して日常業務がどう変化したか、紹介しています。