小小小幸运 发表于 2024-8-17 17:36:00

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

在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:

[*]MIN(column) 返回指定列中的最小值。

[*] Pandas:

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


5. MAX



[*] SQL:

[*]MAX(column) 返回指定列中的最大值。

[*] 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':
}
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如下所示:
categoryvalue
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         9030.01050
B          12040.02060

DISTINCT:
['A' 'B']

HAVING:
categoryvalue
0      A   10
2      A   30
4      A   50
1      B   20
3      B   40
5      B   60

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SQL中的聚合方法与Pandas的对应关系