У меня есть набор данных, который доступен здесь
Это дает нам 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
Я хочу выяснить, что такоесоотношение мужчин и женщин в каждом occupation
Я использовал приведенную ниже функцию, но это не самый оптимальный подход.
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
Вышеуказанный ans находится в совершенно другом формате, так как я хочу что-то вроде: (демо)
occupation M:F
programmer 2:3
farmer 7:2
Может кто-нибудь, пожалуйста, скажите мне, как сделать собственные функции агрегирования