利用Dataframe groupby 函数统计重复值出现的次数

貌似很简单,结果却出乎意料

groupby函数可以对dataframe一个或多个字段进行分类统计,count的方法用于统计各个字段出现的个数。但是如果要统计groupby 字段本身出现的次数,就没有那么方便了。例如,以下代码貌似可以统计,结果却出乎意料。

import pandas as pd
lc = ['beijing','shanghai','guangzhou','shenzhen','beijing','beijing','guangzhou']
df =pd.DataFrame(lc,columns=['city'])
dfg=df.groupby['city'].count()
print(dfg)

这个dfg是虽然是dataframe(我一开始以为dataframe groupby对象),但只有索引没有数据(见下图)。我的主要目的是想通过groupby去重,并且获得每一个城市出现的次数。
利用Dataframe groupby 函数统计重复值出现的次数_第1张图片

解决办法尝试

增加一列counts,值得设定为1,然后重设索引,把city设定为普通列(groupby[‘city’]默认将city设定为索引列)

df =df.insert(1,'counts',1)
dfg =df.groupby['city']).count().reset_index()
print(dfg)

得到了想要的城市出现的次数。(见下图)

利用Dataframe groupby 函数统计重复值出现的次数_第2张图片

总结

groupby(字段1)是以字段1为索引对其他字段进行的分类统计,如果要对字段进行相关统计,需要增加一列或几列对字段进行描述(例如:计数需要增加一列值为1的数据),最后还要解除字段1的索引属性。这样就可以对字段1正常进行各种访问和读取了。

你可能感兴趣的:(Python,python,pandas,dataframe,分类汇总,groupby)