Open1
Pythonで始める数理最適化
第4章 割引クーポンキャンペーンの効果最大化
<その他>
pivot_table
の使い方
詳しくは公式ドキュメントを参照
import pandas as pd
# サンプルデータの作成
data = {
"fruit": ["apple", "banana", "apple", "banana", "apple", "banana"],
"city": ["Tokyo", "Tokyo", "Osaka", "Osaka", "Kyoto", "Kyoto"],
"sales": [100, 200, 150, 300, 200, 400],
"profits": [10, 20, 15, 30, 20, 40]
}
df = pd.DataFrame(data)
# dfの中身
"""
fruit city sales profits
0 apple Tokyo 100 10
1 banana Tokyo 200 20
2 apple Osaka 150 15
3 banana Osaka 300 30
4 apple Kyoto 200 20
5 banana Kyoto 400 40
"""
# pivot_tableの使用
pivot_df = df.pivot_table(
index="fruit", # 行のインデックス
columns="city", # 列のインデックス
values="sales", # 集計する値
aggfunc="sum" # 集計方法
)
print(pivot_df)
# 出力結果
city Kyoto Osaka Tokyo
fruit
apple 200 150 100
banana 400 300 200
melt
の使い方
import pandas as pd
# サンプルデータの作成
data = {
"Day": ["Monday", "Tuesday", "Wednesday"],
"Tokyo": [15, 20, 18],
"Osaka": [10, 12, 14],
"Kyoto": [8, 9, 11]
}
df = pd.DataFrame(data)
# dfの中身
"""
Day Tokyo Osaka Kyoto
0 Monday 15 10 8
1 Tuesday 20 12 9
2 Wednesday 18 14 11
"""
# meltの使用
melted_df = df.melt(
id_vars="Day", # 保持する列
var_name="City", # 変数名を格納する列の名前
value_name="Temperature" # 値を格納する列の名前
)
print(melted_df)
# 出力結果
Day City Temperature
0 Monday Tokyo 15
1 Tuesday Tokyo 20
2 Wednesday Tokyo 18
3 Monday Osaka 10
4 Tuesday Osaka 12
5 Wednesday Osaka 14
6 Monday Kyoto 8
7 Tuesday Kyoto 9
8 Wednesday Kyoto 11