팬더에서 여러 열의 두 그룹의 평균을 계산하고 테스트하고 싶습니다. 계산 부분을 작업 할 수는 있지만 지금까지 테스트 부분에 대한 좋은 해결책은 없습니다. 아래는 장난감 샘플과 내가 원하는 결과입니다.
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=['col_1','col_2'])
df['group'] = ['A']*50 + ['B']*50
df.groupby('group').agg({"col_1":"mean","col_2":"mean"})
col_1 col_2
group
A 52.26 56.58
B 53.04 49.18
내가 갖고 싶은 것 :
col_1 t_col_1 col_2 t_col_2
group
A 52.26 4.3*** 56.58 0.8
B 53.04 4.3*** 49.18 0.8
하는 t_col_1
수단의 차이 t 통계 인 col_1
그룹 A와 그룹 B, 익스플로러 t.test(df.loc[df['group'].isin(['B'])][col_1], df.loc[df['group'].isin(['A'])][col_1])
. 별은 필요하지 않지만 거기에있을 수 있다면 좋을 것입니다.
이를 수행하는 방법에 대한 제안 사항이 있습니까?
열을 반복하고 그룹별로 t 테스트를 수행 할 수 있습니다.
import pandas as pd
import scipy.stats as stats
tstats = {}
ix_a = df['group'] == 'A'
for x in df:
if x != 'group':
tstats['t_' + x] = stats.ttest_ind(df[x][ix_a], df[x][~ix_a])[0]
df.groupby('group').mean().assign(**tstats)
결과:
col_1 col_2 t_col_1 t_col_2
group
A 56.24 46.84 0.85443 -0.281279
B 51.24 48.42 0.85443 -0.281279
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다