value_counts结果-按其他列拆分?

时间:2019-10-15 09:53:50

标签: python pandas pandas-groupby

value_counts不允许我通过其他列进一步细分。基本上,我想做的就是在熊猫中重新创建这样的东西:

https://imgur.com/WruS8J0

数据在这里https://data.seattle.gov/Community/Seattle-Pet-Licenses/jguv-t9rb

为简单起见,此刻我只想将数据分为3列: 名字,猫(名字数),狗(名字数)。

我一直在环顾四周,并尝试使用groupby和ivot_tables,但我认为我不太了解。

我尝试过的事情:

`animal_names.groupby(['animals_name', 
'species']).size().sort_values(ascending=False)`

返回:

`animals_name                    species
Lucy                            Dog        335
Charlie                         Dog        306
Bella                           Dog        248
Luna                            Dog        242
Daisy                           Dog        217
                                          ... 
Mossi                           Dog          1
Mosses                          Dog          1
Mossberg                        Dog          1
Moska                           Dog          1
"Luci" Lucia Rosalin Wicksugal  Dog          1
Length: 16749, dtype: int64`

我已经尝试过:

`animal_names.pivot_table(
    index=['animals_name', 'species'],
    values='primary_breed',
    aggfunc='count')
`

哪个也不返回期望值。

有没有办法做一件简单的事情     dataframe['animals_name'].value_counts(),然后将结果划分为另一列(在这种情况下为物种)?

2 个答案:

答案 0 :(得分:0)

你很近。


df=animal_names.pivot_table( index='animals_name', columns='species', aggfunc='count')

值是可选的,为帮助您记住数据透视的工作原理,请看一下最终表。

  • 第一列的内容是什么?这是您的索引,所以这里是animal_name。
  • 什么是列名?每个物种。
  • 通过上述参数简单地推导出值,这就是为什么它是可选的

答案 1 :(得分:0)

请尝试以下方法:

df = pd.pivot_table(data1,index="Animal's Name",columns = "Species",aggfunc = np.count_nonzero)

数据1包含两列,动物名称和物种。

输出将显示各个物种的名称和计数。

会有NAN值,您可以将其替换为零。