前提・実現したいこと
pythonに関する質問です。
実行したい内容は下記1~4のコードになります。これを高速化する方法はあるでしょうか。
どなたかご教示お願い致します。
1.irisのpetal_length,petal_widthごとに,sepal_lengthの平均値を算出する。
2.irisのsepal_lengthに対して、1で算出した平均値を除く。
3.算出後にデータフレームを結合する。
4.5回繰り返す
発生している問題・エラーメッセージ
実行時間が長い。
該当のソースコード
python
1import pandas as pd 2import numpy as np 3import os 4from dfply import * 5from sklearn.datasets import load_iris 6iris = load_iris() 7df = pd.DataFrame(iris['data'],columns=['sepal_length','sepal_width','petal_length','petal_width']) 8petal_length_all = df['petal_length'].unique() 9petal_width_all = df['petal_width'].unique() 10 11df_tmp_summary=pd.DataFrame() 12 13for i in range(0,5): 14 for petal_length_Number in range(0, len(petal_length_all)): 15 for petal_width_Number in range(0, len(petal_width_all)): 16 df_tmp=df >> filter_by(X.petal_length == petal_length_all[petal_length_Number]) >> filter_by(X.petal_width == petal_width_all[petal_width_Number]) 17 df_tmp['sepal_length']=df_tmp['sepal_length'].apply(lambda x: x - df_tmp['sepal_length'].mean()) 18 df_tmp_summary = pd.concat([df_tmp_summary, df_tmp])
何か調べたり、試したりしたことがあれば質問に追記してください。
「Python 高速化」でググりましょう。
https://qiita.com/ishitoki47259/items/1c2c25bf4bd71e6c105b
ご返信できず、申し訳ありませんでした。for文をできるだけ使用しないようにする、for文を使用する場合は内包表記を使用するようにする等、1つ1つ習得していきたいと思います。
回答1件
あなたの回答
tips
プレビュー