我有一个pandas数据框,其中包含一些“男性”值和一些“女性”值。我想计算两个性别值的百分比是否显着不同,并告诉我们这些比率的置信区间。下面是示例代码:
data={}
data['gender']=['male','female','female','male','female','female','male','female','male']
data['values']=[10,2,13,4,11,8,14,19,2]
df_new=pd.DataFrame(data)
df_new.head() # make a simple data frame
gender values
0 male 10
1 female 2
2 female 13
3 male 4
4 female 11
df_male=df_new.loc[df_new['gender']=='male']
df_female=df_new.loc[df_new['gender']=='female'] # separate male and female
# calculate percentages
male_percentage=sum(df_male['values'].values)*100/sum(df_new['values'].values)
female_percentage=sum(df_female['values'].values)*100/sum(df_new['values'].values)
# want to tell whether both percentages are statistically different or not and what are their confidence interval rates
print(male_percentage)
print(female_percentage)
任何帮助将不胜感激。谢谢!
尝试一下:
df_new.groupby('gender')['values'].sum()/df_new['values'].sum()*100
gender
female 63.855422
male 36.144578
Name: values, dtype: float64
使用t检验。在这种情况下,使用两次t检验,这意味着您正在比较两个样本的值/均值。
我正在应用另一种假设; A!= B我通过测试原假设A = B来做到这一点。这是通过计算p值来实现的。当p降到称为alpha的临界值以下时,我将拒绝原假设。 alpha的标准值为0.05。低于5%的概率,样本将产生类似于观察值的模式
提取样本,在这种情况下为values
的列表
A=df[df['gender']=='male']['values'].values.tolist()
B=df[df['gender']=='female']['values'].values.tolist()
使用scipy库,进行t -test
from scipy import stats
t_check=stats.ttest_ind(A,B)
t_check
alpha=0.05
if(t_check[1]<alpha):
print('A different from B')