こんにちは~
Pythonでエクセルやcsvを自動で編集できたら仕事が楽になると思うので、色々プログラムを作成しています。
今回は、For文でフォルダ配下の全csvに同じ処理を実行する方法を学習したので記事にしました。この記事が誰かの役に立ったら幸いです。
概要
Sample_dataと名付けたフォルダ内に↓のようにcsvファイルを複数用意しました。
このcsvファイルに対して同じ処理を行います。
csvの中身は↓のようにA~H列まで値があり、全てA列だけにする処理を行います。
↓のようにA列だけにします。
コード
実装したコードは↓です。
import pandas as pd from pathlib import Path path = Path('./sample_data/') for i, file in enumerate(path.glob('*.csv')): file_index= i df = pd.read_csv(file,encoding='shift-jis') df2 = df['test1'] df2.to_csv('./output_sample/output'+str(file_index)+'.csv',header=True,index=False)
↓のコードで、処理したいcsvのパスを指定しています。
path = Path(‘./sample_data/’)
↓のコードで、指定したパスは以下の拡張子がcsvとなっているファイル全てを処理の対象にしています。
for i, file in enumerate(path.glob(‘*.csv’)):
↓は、出力するファイル名に使用します
file_index= i
↓は、for文で繰り返す処理を書いてます。
読み込んだcsvをdfと定義して、test1という列だけ抽出して、csvファイルを指定のパスに出力する処理を繰り返しています。
ファイル名は、file_indexを割り振ることで名前を変更しています。
df = pd.read_csv(file,encoding='shift-jis') df2 = df['test1'] df2.to_csv('./output_sample/output'+str(file_index)+'.csv',header=True,index=False)
実行結果
実行した結果、↓のように指定のパスに処理したcsvを吐き出すことができました。
中身もちゃんとやりたい処理が実行されていました。
まとめ
以上になります。
今回試したのは3ファイルだけですが、これが100とか200とかになってくるとメチャメチャ早く処理することができるようになるかと思いました。
これからも勉強してきます。
ではまた!!
コメント