这里讲数据透视,基本上和Excel里面的数据透视异曲同工,通过pandas编程实现,功能更加强大

    1. # 基础部分
    2. import pandas as pd
    3. import numpy as np
    4. position = pd.read_csv('position.csv')
    5. company = pd.read_csv('company_sql.csv',encoding='gbk')
    6. position.pivot_table()
    7. # 前四个参数重要:values=None, index=None, columns=None, aggfunc='mean',fill_value=None
    8. # values:具体计算的值
    9. # index:形成的索引
    10. # columns:列
    11. # aggfunc:引用哪个函数,平均值默认
    12. # fill_value:可以对缺失值进行一个填充
    13. # 窍门:想想一下自己想要生成一个什么样的结果
    14. # 数据透视类似于聚合,聚合之后会生成一张新的表格dataframe
    15. # 想一下,我想要的数据形式是什么样的???
    16. # 比如按照城市来聚合,那么就是希望城市变成索引,最终形成了一个索引和列分别是什么样子的透视表
    17. position.pivot_table(index='city',columns='workYear',values='avg')
    18. # NaN缺失值就是没有用这个岗位
    19. # Excel数据透视里都可以支持多重索引,那这里也可以。把education传递到索引里面,columns、values也可以传
    20. position.pivot_table(index=['city','education'],columns='workYear',values='avg')
    21. position.pivot_table(index=['city','education'],
    22. columns='workYear',
    23. values=['top','avg']
    24. )
    25. # 尽量使用np.mean,np.sum,但是'mean'变成['mean',](列表形式)也可以
    26. position.pivot_table(index=['city','education'],
    27. columns='workYear',
    28. values=['top','avg'],
    29. aggfunc=[np.mean,np.sum]
    30. )
    31. # 可以继续切片
    32. position.pivot_table(index=['city','education'],
    33. columns='workYear',
    34. values=['avg'],
    35. aggfunc=['mean','sum']
    36. )['mean']['avg'].loc['上海']
    37. # 几个有用的函数
    38. # margins=False, dropna=True, margins_name='All'
    39. # margins:下边加一个汇总项(True),对列进行汇总,平均对应平均,求和对应求和
    40. # dropna:把空值砍掉
    41. position.pivot_table(index=['city','education'],
    42. columns='workYear',
    43. values=['top','avg'],
    44. aggfunc=[np.mean,np.sum],
    45. margins=True,
    46. )
    47. # 数据透视表里的一些高级用法,应用场景不会特别多
    48. # 对'avg'进行一个'mean';对'top'进行一个'sum'
    49. # 操作:把aggfunc里的列表,改成一个字典
    50. # 后边依然可以进行切片或者query
    51. position.pivot_table(index=['city','education'],
    52. columns='workYear',
    53. values=['avg','top'],
    54. aggfunc={'avg':np.mean,'top':np.sum}
    55. )
    56. # 添加索引
    57. position.pivot_table(index=['city','education'],
    58. columns='workYear',
    59. values=['avg','top'],
    60. aggfunc={'avg':np.mean,'top':np.sum}
    61. ).reset_index().to_csv('test.csv')
    62. # 最终输出是什么形式?
    63. # 后续和etl一起讲
    64. 两种方式输出:to_csv('test.csv')

    数据透视表为我们汇总大数据量提供了一个很有利的工具
    pandas基础应用在这里已经讲完了,汇总、清洗、处理这几方面已经可以自己动手做了
    最后剩下两块:一块是可视化相关的,另一块是时间序列相关的;这两块还是要结合练习题!!!