我有一个数据集,可以在这里找到。
它提供了一个类似于DataFrame
的数据结构。
df=pd.read_csv('https://raw.githubusercontent.com/justmarkham/DAT8/master/data/u.user', sep='|')
df.head()
user_id age gender occupation zip_code
1 24 M technician 85711
2 53 F other 94043
3 23 M writer 32067
4 24 M technician 43537
5 33 F other 15213
我想了解每个职业中男性和女性的比例
我已经使用了下面给出的函数,但这不是最优的方法。
df.groupby(['occupation', 'gender']).agg({'gender':'count'}).div(df.groupby('occupation').agg('count'), level='occupation')['gender']*100
这将为我们提供类似以下的结果。
occupation gender
administrator F 45.569620
M 54.430380
artist F 46.428571
M 53.571429
上述回答的格式与我想要的不同,我希望得到如下格式的内容:(示例)
occupation M:F
programmer 2:3
farmer 7:2
请问有人能告诉我如何创建自己的聚合函数吗?
unstack
,代码如下:(df.groupby(["occupation", "gender"]).agg({"gender": "count"}).div( df.groupby("occupation").agg("count"), level="occupation" ).unstack('gender')["gender"] * 100)
。但我不明白你是怎么得到2:3和7:2的? - Umar.H