Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用DataFrame按字段获取年龄分布的百分比_Python_Pandas_Dataframe - Fatal编程技术网

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总计
    计算行中的发生率,然后使用行中的发生率计算行中的百分比
    百分比

  • 最后,我们需要添加空列1-90


  • “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