前提・実現したいこと
pandasの処理時間を短縮したいです。
発生している問題・エラーメッセージ
for文を使わずにmap関数を使う事で短縮できるとネットで見かけましたが、実装方法がわからず悩んでおります。又、map関数以外でも良い方法がありましたらアドバイスを頂けないでしょうか。よろしくお願い致します。
該当のソースコード
↓sample.csvから必要項目を取得し、一つのデータフレームにまとめている。
python3
1import csv 2import pandas as pd 3import re 4import traceback 5 6# sample.csvは実際は数千個あります 7csv_list = [ "sample.csv", "sample.csv", "sample.csv"] 8 9columns = ['date', 'code', 'market', 'industry', 'name', 'start', "end", "low", "high", "volume"] 10df = pd.DataFrame(columns=columns) 11 12array = [] 13count = 1 14 15for i in csv_list: 16 csv = pd.read_csv(i, encoding='cp932',index_col=None) 17 for i in range(len(csv)-1): 18 try: 19 title = csv.columns[0] 20 # date 21 date = csv.index[count] 22 # code 23 code = title[:4] 24 # market 25 market = "" 26 if "東証1部" in title: 27 market = "東証1部" 28 elif "東証2部" in title: 29 market = "東証2部" 30 elif "マザーズ" in title: 31 market = "マザーズ" 32 elif "JQ" in title: 33 market = "ジャスダック" 34 elif "東証ETF" in title: 35 market = "東証ETF" 36 # industry 37 industry_pattern = r"\(.*" 38 industry_text = str(title) 39 industry_matchobj = re.search(industry_pattern, industry_text) 40 industry = industry_matchobj.group()[1:-1] 41 # name 42 name_pattern = r"(.*\(" 43 name_text = str(title) 44 name_matchobj = re.search(name_pattern, name_text) 45 if name_matchobj is None: 46 name = title.split(" ")[2] 47 else: 48 name = name_matchobj.group()[:-1] 49 # start 50 start = csv.iloc[count, 0] 51 # end 52 end = csv.iloc[count, 1] 53 # low 54 low = csv.iloc[count, 2] 55 # high 56 high = csv.iloc[count, 3] 57 # volume 58 volume = csv.iloc[count, 4] 59 # df 60 array.extend([date, code, market, industry, name, start, end, low, high, volume]) 61 series = pd.Series(array, index=df.columns) 62 df = df.append(series, ignore_index=True) 63 count += 1 64 array = [] 65 except Exception as e: 66 print(traceback.format_exc()) 67 break 68 # count初期化 69 count = 1 70
↓sample.csv
(書式は全ファイル同様で行数、セルの値のみが各々のファイルで異なっております)
sample.csv 例1
sample.csv 例2
sample.csv 例3
処理後のデータフレーム
](ad95200e5a6b5d1d2e90777b5db6d9c8.png)
補足情報(FW/ツールのバージョンなど)
python3
pandas