SQL中的聚合方法与Pandas的对应关系

小小小幸运  金牌会员 | 2024-8-17 17:36:00 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 629|帖子 629|积分 1887

在SQL和Pandas中,聚合方法是用来对数据进行汇总统计的重要工具。下面是SQL中的各种聚合方法及其与Pandas中相应利用的对应关系:
1. COUNT



  • SQL:

    • COUNT(*) 返回表中的行数。
    • COUNT(column) 返回指定列中非空值的数目。

  • Pandas:

    • count() 方法用于计算非空值的数目。
    • 示例代码:
      1. count_result = df['column'].count()
      复制代码

2. SUM



  • SQL:

    • SUM(column) 返回指定列中所有值的总和。

  • Pandas:

    • sum() 方法用于计算指定列中所有值的总和。
    • 示例代码:
      1. sum_result = df['column'].sum()
      复制代码

3. AVG / AVERAGE



  • SQL:

    • AVG(column) 返回指定列中所有值的均匀值。

  • Pandas:

    • mean() 方法用于计算指定列中所有值的均匀值。
    • 示例代码:
      1. avg_result = df['column'].mean()
      复制代码

4. MIN



  • SQL:

    • MIN(column) 返回指定列中的最小值。

  • Pandas:

    • min() 方法用于计算指定列中的最小值。
    • 示例代码:
      1. min_result = df['column'].min()
      复制代码

5. MAX



  • SQL:

    • MAX(column) 返回指定列中的最大值。

  • Pandas:

    • max() 方法用于计算指定列中的最大值。
    • 示例代码:
      1. max_result = df['column'].max()
      复制代码

6. GROUP BY



  • SQL:

    • GROUP BY column 用于对指定列中的值进行分组。
    • 可以结合 COUNT, SUM, AVG, MIN, MAX 等聚合函数一起使用。

  • Pandas:

    • groupby() 方法用于对DataFrame中的数据进行分组。
    • 可以结合 count(), sum(), mean(), min(), max() 等方法一起使用。
    • 示例代码:
      1. grouped_df = df.groupby('column').agg({'other_column': 'sum'})
      复制代码

7. DISTINCT



  • SQL:

    • DISTINCT column 返回指定列中的唯一值。

  • Pandas:

    • unique() 方法用于获取指定列中的唯一值。
    • 示例代码:
      1. unique_values = df['column'].unique()
      复制代码

8. HAVING



  • SQL:

    • HAVING condition 用于过滤 GROUP BY 后的结果集。

  • Pandas:

    • 没有直接对应的 having 方法,但可以使用 groupby() 结合 filter() 方法来实现雷同功能。
    • 示例代码:
      1. filtered_df = df.groupby('column').filter(lambda x: x['other_column'].sum() > threshold)
      复制代码

示例代码

假设我们有一个DataFrame df,我们将演示这些聚合利用:
  1. import pandas as pd
  2. # 创建示例 DataFrame
  3. data = {
  4.     'category': ['A', 'B', 'A', 'B', 'A', 'B'],
  5.     'value': [10, 20, 30, 40, 50, 60]
  6. }
  7. df = pd.DataFrame(data)
  8. # COUNT
  9. count_result = df['category'].count()
  10. print("COUNT:")
  11. print(count_result)
  12. # SUM
  13. sum_result = df['value'].sum()
  14. print("\nSUM:")
  15. print(sum_result)
  16. # AVG / AVERAGE
  17. avg_result = df['value'].mean()
  18. print("\nAVG:")
  19. print(avg_result)
  20. # MIN
  21. min_result = df['value'].min()
  22. print("\nMIN:")
  23. print(min_result)
  24. # MAX
  25. max_result = df['value'].max()
  26. print("\nMAX:")
  27. print(max_result)
  28. # GROUP BY
  29. grouped_df = df.groupby('category').agg({'value': ['sum', 'mean', 'min', 'max']})
  30. print("\nGROUP BY:")
  31. print(grouped_df)
  32. # DISTINCT
  33. unique_categories = df['category'].unique()
  34. print("\nDISTINCT:")
  35. print(unique_categories)
  36. # HAVING
  37. threshold = 50
  38. filtered_df = df.groupby('category').filter(lambda x: x['value'].sum() > threshold)
  39. print("\nHAVING:")
  40. print(filtered_df)
复制代码
输出示例

假设DataFrame如下所示:
  1.   category  value
  2. 0        A     10
  3. 1        B     20
  4. 2        A     30
  5. 3        B     40
  6. 4        A     50
  7. 5        B     60
复制代码
输出结果将会是:
  1. COUNT:
  2. 6
  3. SUM:
  4. 210
  5. AVG:
  6. 35.0
  7. MIN:
  8. 10
  9. MAX:
  10. 60
  11. GROUP BY:
  12.          value        
  13.          sum mean min max
  14. category                 
  15. A           90  30.0  10  50
  16. B          120  40.0  20  60
  17. DISTINCT:
  18. ['A' 'B']
  19. HAVING:
  20.   category  value
  21. 0        A     10
  22. 2        A     30
  23. 4        A     50
  24. 1        B     20
  25. 3        B     40
  26. 5        B     60
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表