特定条件で抽出した集団へのquantileの適用
閲覧していただきありがとうございます。
以下のデータには東京と大阪(都道府県)における、りんごとみかん(果物)の値段、そして別のデータから算出した割合値(0 <= 割合値 <= 1.0)があります。
今回わからないことは、特定の条件(同一果物、同一都道府県)で値段をグルーピングし、そのグループの中でquantileを割合値を用いて実行する方法です。
例えば最初の行は果物:りんご、都道府県:東京なので、果物がりんご、かつ都道府県が東京の集団を抽出してきて、その中で割合値0.17を用いてquantileし、その結果を別のカラム(以下にあるゴールにおいては結果カラム)に出力するということが行いたいことです。
これを全ての行に適用したいです。
python
1 2df = pd.DataFrame([['りんご', '東京', 157, 0.17], 3 ['りんご', '東京', 172, 0.52], 4 ['りんご', '東京', 146, 0.86], 5 ['りんご', '東京', 152, 0.56], 6 ['りんご', '大阪', 135, 0.32], 7 ['りんご', '大阪', 165, 0.21], 8 ['りんご', '大阪', 148, 0.34], 9 ['りんご', '大阪', 176, 0.59], 10 ['みかん', '東京', 82, 0.87], 11 ['みかん', '東京', 65, 0.35], 12 ['みかん', '東京', 53, 0.43], 13 ['みかん', '東京', 73, 0.74], 14 ['みかん', '大阪', 76, 0.83], 15 ['みかん', '大阪', 58, 0.75], 16 ['みかん', '大阪', 63, 0.12], 17 ['みかん', '大阪', 52, 0.43]], 18 columns=['果物', '都道府県', '値段', '割合値']) 19
ゴール
python
1#ゴール 2 果物 都道府県 値段 割合値 結果 30 りんご 東京 157 0.17 149.06 41 りんご 東京 172 0.52 154.80 52 りんご 東京 146 0.86 165.70 63 りんご 東京 152 0.56 155.40 74 りんご 大阪 135 0.32 147.48 85 りんご 大阪 165 0.21 143.19 96 りんご 大阪 148 0.34 148.34 107 りんご 大阪 176 0.59 161.09 118 みかん 東京 82 0.87 78.49 129 みかん 東京 65 0.35 65.40 1310 みかん 東京 53 0.43 67.32 1411 みかん 東京 73 0.74 74.98 1512 みかん 大阪 76 0.83 69.37 1613 みかん 大阪 58 0.75 66.25 1714 みかん 大阪 63 0.12 54.16 1815 みかん 大阪 52 0.43 59.45
試したこと
for文で1行ずつ取り出しての実行はできたのですが、実際のデータは行数が多いため、このコードだと処理に時間がかかり過ぎてしまいます。
python
1print(df) 2for i in range(len(df)): 3 x = df[(df['果物'] == df.at[i, '果物']) & (df['都道府県'] == df.at[i, '都道府県'])]['値段'] 4 df.at[i, '結果'] = x.quantile(df.at[i,'割合値']) 5 6
そこで**「処理をより高速に終わらせる方法」**を模索しています。
どうかご回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/30 10:32