在SQL和Pandas中,聚合方法是用来对数据进行汇总统计的重要工具。下面是SQL中的各种聚合方法及其与Pandas中相应利用的对应关系:
1. COUNT
- SQL:
- COUNT(*) 返回表中的行数。
- COUNT(column) 返回指定列中非空值的数目。
- Pandas:
- count() 方法用于计算非空值的数目。
- 示例代码:
- count_result = df['column'].count()
复制代码
2. SUM
- SQL:
- SUM(column) 返回指定列中所有值的总和。
- Pandas:
- sum() 方法用于计算指定列中所有值的总和。
- 示例代码:
- sum_result = df['column'].sum()
复制代码
3. AVG / AVERAGE
- SQL:
- AVG(column) 返回指定列中所有值的均匀值。
- Pandas:
- mean() 方法用于计算指定列中所有值的均匀值。
- 示例代码:
- avg_result = df['column'].mean()
复制代码
4. MIN
- SQL:
- Pandas:
- min() 方法用于计算指定列中的最小值。
- 示例代码:
- min_result = df['column'].min()
复制代码
5. MAX
- SQL:
- Pandas:
- max() 方法用于计算指定列中的最大值。
- 示例代码:
- 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() 等方法一起使用。
- 示例代码:
- grouped_df = df.groupby('column').agg({'other_column': 'sum'})
复制代码
7. DISTINCT
- SQL:
- DISTINCT column 返回指定列中的唯一值。
- Pandas:
- unique() 方法用于获取指定列中的唯一值。
- 示例代码:
- unique_values = df['column'].unique()
复制代码
8. HAVING
- SQL:
- HAVING condition 用于过滤 GROUP BY 后的结果集。
- Pandas:
- 没有直接对应的 having 方法,但可以使用 groupby() 结合 filter() 方法来实现雷同功能。
- 示例代码:
- filtered_df = df.groupby('column').filter(lambda x: x['other_column'].sum() > threshold)
复制代码
示例代码
假设我们有一个DataFrame df,我们将演示这些聚合利用:
- import pandas as pd
- # 创建示例 DataFrame
- data = {
- 'category': ['A', 'B', 'A', 'B', 'A', 'B'],
- 'value': [10, 20, 30, 40, 50, 60]
- }
- df = pd.DataFrame(data)
- # COUNT
- count_result = df['category'].count()
- print("COUNT:")
- print(count_result)
- # SUM
- sum_result = df['value'].sum()
- print("\nSUM:")
- print(sum_result)
- # AVG / AVERAGE
- avg_result = df['value'].mean()
- print("\nAVG:")
- print(avg_result)
- # MIN
- min_result = df['value'].min()
- print("\nMIN:")
- print(min_result)
- # MAX
- max_result = df['value'].max()
- print("\nMAX:")
- print(max_result)
- # GROUP BY
- grouped_df = df.groupby('category').agg({'value': ['sum', 'mean', 'min', 'max']})
- print("\nGROUP BY:")
- print(grouped_df)
- # DISTINCT
- unique_categories = df['category'].unique()
- print("\nDISTINCT:")
- print(unique_categories)
- # HAVING
- threshold = 50
- filtered_df = df.groupby('category').filter(lambda x: x['value'].sum() > threshold)
- print("\nHAVING:")
- print(filtered_df)
复制代码 输出示例
假设DataFrame如下所示:
- category value
- 0 A 10
- 1 B 20
- 2 A 30
- 3 B 40
- 4 A 50
- 5 B 60
复制代码 输出结果将会是:
- COUNT:
- 6
- SUM:
- 210
- AVG:
- 35.0
- MIN:
- 10
- MAX:
- 60
- GROUP BY:
- value
- sum mean min max
- category
- A 90 30.0 10 50
- B 120 40.0 20 60
- DISTINCT:
- ['A' 'B']
- HAVING:
- category value
- 0 A 10
- 2 A 30
- 4 A 50
- 1 B 20
- 3 B 40
- 5 B 60
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |