pandas的聚合函数 groupby 和mysql中的 group by 类似,但是mysql不支持分组排名

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