pandas的聚合函数 groupby 和mysql中的 group by 类似,但是mysql不支持分组排名
import pandas as pddf = pd.read_csv('DataAnalyst.csv')df.head()# 分组df.groupby- df.groupby(by='city'),运行后表明存到了内存里,是对城市进行了聚合- 调用count这个方法(函数),就是分组后计数;count换成max/min得到上海最高/底薪资df.groupby(by='city').count()df.avg.value_counts() #类似mysql中分组之后计数# 两个等价df.groupby(by='city')['avg'].max()df.groupby(by='city').avg.max()# 对city、workYear进行聚合,取出平均薪资;这种形式在pandas中叫做多重索引df.groupby(by=['city','workYear']).mean()# 5000多行的一个数据框,groupby之后拆成了10几个数据框,使用for循环,一次一次打印,打印十几次,打印出来的是一个元组形式。for k in df.groupby(by='city'):print(k)# 对每个数据框进行计数for k in df.groupby(by='city'):print(len(k[1]))# 元组的方式不方便,所以for循环里一开始打印两个k,v;k对应聚合的元素就是城市;v对应一个个数据框for k,v in df.groupby(by='city'):print(k)print(v)# 不同城市之间,最高薪资和最低薪资各是多少for k,v in df.groupby(by='city'):print(max(v.avg),min(v['avg']))print('**'*10)#不同城市之间,最高薪资和最低薪资的差距是多少for k,v in df.groupby(by='city'):print(max(v.avg)-min(v['avg']))print('**'*10) #这行只是为了容易区分各个城市的差距通过for循环,把分组之后的明细数据打印出来,然后对它进行一个加工。这个方法可能不是最简单的,因为groupby分组之后,后边还有apply函数更好用。
