• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共95篇

    python3.X - 数据分析 - Pandas

关闭

返回栏目

关闭

返回python3.X - 数据分析 - Pandas栏目

67 - 分组 - df.groupby(by="A列") - 分组

作者:

贺及楼

成为作者

更新日期:2024-08-14 13:04:32

groupby()

groupby()分组功能

  1. import numpy as np
  2. import pandas as pd
  3. df = pd.DataFrame()
  4. ls = [
  5. {'名字': '小A', 'd1': 1, 'd2': 3, 'd3': 5},
  6. {'名字': '小A', 'd1': 2, 'd2': 4, 'd3': 6},
  7. {'名字': '小B', 'd1': 2, 'd2': 4, 'd3': 6},
  8. {'名字': '小B', 'd1': 2, 'd2': 4, 'd3': 6},
  9. ]
  10. df = df.append(ls, ignore_index=True)
  11. >>> df
名字 d1 d2 d3
0 小A 1 3 5
1 小A 2 4 6
2 小B 2 4 6
3 小B 2 4 6
  1. groupbying = df.groupby(by="名字")
  2. >>> groupbying
  3. <pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000016813E554E0>
  4. # 查看对象内部的情况
  5. >>> list(groupbying)
  6. [
  7. ('小A',
  8. 名字 d1 d2 d3
  9. 0 A 1 3 5
  10. 1 A 2 4 6),
  11. ('小B',
  12. 名字 d1 d2 d3
  13. 2 B 2 4 6
  14. 3 B 2 4 6)
  15. ]
  16. >>> list(groupbying)[0]
  17. ('小A', 名字 d1 d2 d3
  18. 0 A 1 3 5
  19. 1 A 2 4 6)
  20. >>> list(groupbying)[1]
  21. ('小B', 名字 d1 d2 d3
  22. 2 B 2 4 6
  23. 3 B 2 4 6)
  24. >>> type(list(groupbying)[0])
  25. <class 'tuple'>
  26. >>> type(list(groupbying)[0][0])
  27. <class 'str'>
  28. >>> list(groupbying)[0][0]
  29. '小A'
  30. >>> list(groupbying)[0][1]
  31. 名字 d1 d2 d3
  32. 0 A 1 3 5
  33. 1 A 2 4 6
  34. >>> type(list(groupbying)[0][1])
  35. <class 'pandas.core.frame.DataFrame'>
  36. # 遍历.DataFrameGroupBy对象
  37. >>> for name,group in groupbying:
  38. ... print(name)
  39. ... print(group)
  40. ...
  41. A
  42. 名字 d1 d2 d3
  43. 0 A 1 3 5
  44. 1 A 2 4 6
  45. B
  46. 名字 d1 d2 d3
  47. 2 B 2 4 6
  48. 3 B 2 4 6
  49. # 选择
  50. >>> groupbying.get_group('小A')
  51. 名字 d1 d2 d3
  52. 0 A 1 3 5
  53. 1 A 2 4 6
  54. # 总数、最大值、最小值、平均值
  55. >>> df
  56. 名字 d1 d2 d3
  57. 0 A 1 3 5
  58. 1 A 2 4 6
  59. 2 B 2 4 6
  60. 3 B 2 4 6
  61. # df.groupby(["名字1","名字2"])["d1"].agg(["sum","max","min","mean","size"]).reset_index()
  62. >>> df.groupby("名字")["d1"].agg(["sum","max","min","mean","size"]).reset_index()
名字 sum max min mean size
0 小A 3 2 1 1.5 2
1 小B 4 2 2 2.0 2
  1. 不用reset_index()
  2. 也可以用df.columns = ['名字','sum','max'] # 重命名列名