複数ファイルの連続読み込み、処理
ディレクトリ内の複数のCSVファイルを読み込み、
例えば連番でデータフレーム(名称を可変、変数にしたい※)を作成し、後続処理に進めたい。
※または今後は月次でファイルが増えていく想定のため、データフレームの配列(3次元)に格納する形がよさそう。
python初心者のため、データフレーム名を変数としたり、グローバル化したりするところがまだ分かっていないため考えた処理が実行出来ていません。またはPythonらしい違うアプローチをご教示頂ければありがたいです。
1ディレクトリ内に1か月分、数十ファイル、かつ複数ディレクトリに存在するため閲覧性が非常に悪い状況ですので、今後定型、非定型の分析レポートを作成するために、まとめて処理したいと考えています。ディレクトリ内の複数ファイル名を取得するところは一応出来ています。
ご教示よろしくお願いいたします。
###該当のソースコード
python
1 2import pandas as pd 3#import numpy as np 4#import pickle 5#import zipfile 6import os 7import sys 8 9 10#データ読み込み関数 1ファイルを読み込み 11def read_file( i, path, rfile ): 12 13 filepath = r"{0}\{1}".format(path,rfile) 14 tmp_data = pd.read_csv( filepath, 15 encoding="sjis", 16 nrows=100, #今だけ100行に制限 17 header=None 18 ) 19 20 #カラム名を設定 21 tmp_data.columns =['ID', 'name','score'] 22 # ファイル内に科目名を示す情報がないため列(index)を追加 23 tmp_data['nm_filenumber'] = '{0:02d}'.format(i) 24 return tmp_data 25 26##ディレクトリ以下の全ファイルを繰り返し処理 27target_dir = r"\\Server\Readonly\ClientA\17年2月" 28 29for i, filename in enumerate( os.listdir(target_dir)): 30 print(i, filename ) 31 32# ここで展開したファイル名を次々にデータ化したい、このループ内を想定。 33# 一旦ループの外で、手入力すると下記の様になる。 34 35df_01 = read_file( 1, target_dir, r"ClientA_KOKUGO_201702.csv" ) 36df_02 = read_file( 2, target_dir, r"ClientA_RIKA_201702.csv" ) 37df_03 = read_GC( 3, target_dir, r"ClientA_SANSU_201702.csv" ) 38#... 続く 39 40# 後続処理 41# 上記データを全て横結合 42# 上記データを全て縦結合
##環境
現在はwindowsです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/25 05:56
2017/04/26 06:01