1
두 가지 범주 변수 (예 : 도시 및 색상), 백분율이있는 열 및 가중치가있는 팬더 데이터 프레임이 있습니다. 도시와 색상의 크로스 탭을 만들고 싶습니다.이 두 가지 조합에 대해 퍼크의 가중 평균을 보여줍니다.pandas crosstab : 가중 평균을 계산하는 방법은 무엇입니까? 행 및 열 합계를 추가하는 방법은 무엇입니까?
나는 아래에있는 코드에서 먼저 가중치 x perc을 가진 열을 만든 다음, (가중치 x 퍼크)의 합계를 가진 하나의 크로스 탭과 가중치의 합계를 갖는 다른 크로스 탭을 작성하여 마지막으로 나눕니다 첫 번째는 두 번째.
작동하지만, 이 더 빠르고 우아한 방법입니까? 감사!
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)
감사로 포장하지
허가를 생성합니다. 나는 총계가 필요해, 나의 접근은 더 쉬울지도 모르다. –