1
私は、2つのカテゴリ変数(私の例では都市と色)、パーセンテージのある列、および1つの重み付きのパンダデータフレームを持っています。 私は都市と色のクロス集計を行い、2つの組み合わせのそれぞれについて、パルクの加重平均を示したいと思います。パンダクロス集計:加重平均を計算する方法は?行と列の合計を追加する方法
私は最初に重みx percを持つ列を作成し、次に(重みx perc)の合計を持つ1つのクロス集計、重みの合計を持つ別のクロス集計、次に最終的に分割するコードでそれを実行しました最初の2番目の。
それは動作しますが、はそれを行うためのより早く/よりエレガントな方法はありますか?ありがとう!
import pandas as pd
import numpy as np
np.random.seed(123)
df=pd.DataFrame()
myrows=10
df['weight'] = np.random.rand(myrows)*100
np.random.seed(321)
df['perc']=np.random.rand(myrows)
df['weight x perc']=df['weight']*df['perc']
df['colour']=np.where(df['perc']<0.5, 'red','yellow')
np.random.seed(555)
df['city']=np.where(np.random.rand(myrows) <0.5,'NY','LA')
num=pd.crosstab(df['city'], df['colour'], values=df['weight x perc'], aggfunc='sum', margins=True)
den=pd.crosstab(df['city'], df['colour'], values=df['weight'], aggfunc='sum', margins=True)
out=num/den
print(out)
おかげにパッケージングされない確かに合計
を生成します。私は合計が必要なので、私のアプローチは簡単かもしれません。 –