検索値ごとに個数をカウントしたい
Pythonを始めて2ヶ月目の初心者です。(プログラミング言語を学ぶのも初めてです。)
Pythonで、マスタデータから、検索IDごとのデータ個数を集計する作業をしたいです。
マスタデータは約17万件×12ヶ月分、検索IDは約2万3000件あります。
処理時間が長い
現在だと、マスタデータを5000件にしても集計に40分ほどかかります。
これを短縮する方法はないでしょうか?
私のPC仕様は以下の通りです;
Windows10 pro
プロセッサ Intel Core i5-7200U@2.50GHz 2.70GHz
実装RAM 8.00GB
また、Python 3.10.0を利用しています。
該当のソースコード
Python
1 2import openpyxl 3 4#検索IDのブック、シート 5wb_ID=openpyxl.load_workbook("検索ID.xlsx") 6ws_ID=wb_master.worksheets[0] 7 8#マスタデータのブック、シート 9wb_data=openpyxl.load_workbook("マスタデータ.xlsx", data_only=True) 10ws_data=wb_data.worksheets[0] 11 12#検索IDの全データリスト 13ID_list=[] 14 15for row in ws_ID.iter_rows(): 16 if row[0].value is None: 17 break 18 value_list=[] 19 for c in row: 20 value_list.append(c.value) 21 ID_list.append(value_list) 22 23#集計結果を入れるリスト 24result_list=[] 25 26#検索IDごとに処理 27for ID in ID_list: 28 dataID=ID[0] 29 #マスタデータのカウント 30 data_count=0 31 #マスタデータの検索 32 for row in ws_data.iter_rows(): 33 #検索条件(検索IDが一致) 34 if row[0].value==dataID: 35 data_count=trip_count+1 36 37 if data_count>0: 38 result_list.append([dataID,data_count]) 39 40#集計結果用シートを追加 41ws_new=wb_dataSum.create_sheet(title="集計結果") 42#集計結果書き込み 43for result in result_list: 44 ws_new.append(result) 45#別名で保存 46wb_dataSum.save("集計結果.xlsx") 47 48
###試した方法
「Python 検索時間 短縮」などでウェブを検索していますが、結果は今のところ芳しくありません。
この質問を書いている間に、検索IDを短くすればいいのかな?と思いついたくらいです。。
補足情報)検索IDの成り立ち
検索IDは英数字とハイフンの組み合わせ10~12桁からなっています。
例)Q3-01Q3-24、Q3-127Q3-108 など
マスタデータは、A列とB列にそれぞれ「Q3ー整数」が振られています。
その組み合わせごとに集計したかったので、A列とB列の順列組み合わせを検索IDとしています。
例)A列にQ3-01、B列にQ3-24があるマスタデータには、検索IDとしてQ3-01Q3-24を振っています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/25 04:20