Python 使用DataFrame按字段获取年龄分布的百分比
假设我有这个数据帧:Python 使用DataFrame按字段获取年龄分布的百分比,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有这个数据帧: df = pd.DataFrame({'age':[10,11,10,20,25,10],'field':['cat','cat','cat','dog','cow','cat']}) >>> df age field 0 10 cat 1 11 cat 2 10 cat 3 20 dog 4 25 cow 5 10 cat 我的目标是groupby('field'),将其用作索引,并将年龄列从1到9
df = pd.DataFrame({'age':[10,11,10,20,25,10],'field':['cat','cat','cat','dog','cow','cat']})
>>> df
age field
0 10 cat
1 11 cat
2 10 cat
3 20 dog
4 25 cow
5 10 cat
我的目标是groupby('field')
,将其用作索引,并将年龄列从1
到90
,并获得每个字段的百分比分布,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
field
cat 0 0 0 0 0 0 0 0 0 75 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
dog 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 0 0 ...
cow 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 ...
请帮帮我。。。谢谢你的支持 我相信您要找的是
pivot\u table
:
df=pd.DataFrame({'age':[10,11,10,20,25,10],'field':['cat','cat','cat','dog','cow','cat']))
枢轴=\
(df)
.分配(VAL=1)
.pivot_表(值='vals',索引='field',列='age',aggfunc='sum')
.fillna(0)
)
行总和=轴总和(轴=1)
百分比=枢轴div(行总数,轴=0)*100
最终=百分比。重新索引(范围(1,91),轴=1,填充值=0.0)
pivot\u表
计算年龄
和字段
row\u总计
计算行中的发生率,然后使用行中的发生率计算行中的百分比百分比
“a”应该是“pivot”而不是headi发现您还可以执行以下操作:pivot=pd.crosstab(成人_full.field,成人_full.age)
age 1 2 3 4 5 6 7 8 9 10 ... 81 82 83 \
field ...
cat 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 75.0 ... 0.0 0.0 0.0
cow 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
dog 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
age 84 85 86 87 88 89 90
field
cat 0.0 0.0 0.0 0.0 0.0 0.0 0.0
cow 0.0 0.0 0.0 0.0 0.0 0.0 0.0
dog 0.0 0.0 0.0 0.0 0.0 0.0 0.0