Python 按占总数的百分比划分
对于学校项目,我需要实现以下功能 制作一个函数Python 按占总数的百分比划分,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,对于学校项目,我需要实现以下功能 制作一个函数select(df,col1,col2),该函数接受一个数据帧和两个列标签,并输出一个多索引序列,其中包含给定col1值的col2可能值出现的分数 例如select(df_测试,'你曾经赌博吗?','彩票类型')会产生 No risk yes 0.433099 risk no 0.566901 Yes risk
select(df,col1,col2)
,该函数接受一个数据帧和两个列标签,并输出一个多索引序列,其中包含给定col1值的col2可能值出现的分数
例如select(df_测试,'你曾经赌博吗?','彩票类型')
会产生
No risk yes 0.433099
risk no 0.566901
Yes risk yes 0.548872
risk no 0.451128
请注意,彩票类型:风险是+彩票类型:风险否的总和为1.0
这是一个大得多的数据帧,但我设法使用gr=df.groupby([col1,col2],as_index=True)对其进行分组并聚合到一个点。count()
这导致了下面的小数据帧
Do you ever smoke cigarettes? Do you ever drink alcohol? Have you ever been skydiving? Do you ever drive above the speed limit? Have you ever cheated on your significant other? Do you eat steak? How do you like your steak prepared? Gender Age Household Income Education Location (Census Region)
Do you ever gamble? Lottery Type
No risk no 155 157 156 157 155 157 121 147 147 121 147 145
risk yes 120 120 120 119 120 120 89 117 117 94 116 117
Yes risk no 114 114 113 113 114 114 99 110 110 96 109 110
risk yes 141 142 141 142 142 141 116 133 133 113 133 133
代码看起来很凌乱,所以这是上面DF的图像。所以我的问题是,我怎样才能把说不吸烟的人的百分比和吸烟的人的百分比加起来。我尝试使用自定义聚合函数,但我不明白。使用下面的函数只会抛出一个类型错误。
.agg(λx:sum(x)/len(x))
TypeError:不支持+:'int'和'str'的操作数类型
请查看pivot\u表。有一个很好的例子,说明如何使用pivot_表对总计进行求和,然后将结果除以该总计并乘以100
group = pd.pivot_table(df,
...
aggfunc=np.sum)
.div(len(df.index))
.mul(100)