gpt4 book ai didi

python - Pandas Python 上的 Group by 和 where 查询

转载 作者:太空宇宙 更新时间:2023-11-03 20:20:32 25 4
gpt4 key购买 nike

我的数据集由分类列和数字列组成。例如:工资数据集

列:['工作'、'country_origin'、'年龄'、'薪水'、'学位'、'marital_status']

四个分类列和两个数字列,我想使用三个聚合函数:

cat_col = ['job', 'country_origin','degree','marital_status']
num_col = [ 'age', 'salary']
aggregate_function = ['avg','max','sum']

目前,我的 Python 代码使用原始查询,而我的目标是从上面列表中的所有组合中获取分组查询结果:

我的查询:“从数据库中选择 cat_col[0],aggregate_function[0](num_col[0]),其中 marital_status = 'married' group by cat_col[0]”

所以查询是:

q1 = select job, avg(age) from DB where marietal_status='married' groub by job
q2 = select job, avg(salary) from DB where marietal_status='married' groub by job

etc

我使用for循环来获取所有组合的结果。

我的问题是,我想将该查询更改为 Pandas 查询。我花了几个小时但无法解决它。

Pandas 有不同的方式来查询数据。

示例数据框:

df2 = pd.DataFrame(np.array([['programmer', 'US', 28,4000, 'master','unmarried'], 
['data scientist', 'UK', 30,5000, 'PhD','unmarried'],
['manager', 'US', 48,9000, 'master','married']]),
columns=[['job', 'country_origin', 'age', 'salary', 'degree','marital_status']])

最佳答案

首先导入库

import pandas as pd

构建示例数据框

df = pd.DataFrame( { 
"job" : ["programmer","data scientist","manager"] ,
"country_origin" : ["US","UK","US"],
"age": [28,30,48],
"salary": [4000,5000,9000],
"degree": ["master","PhD","master"],
"marital_status": ["unmarried","unmarried","married"]} )

应用where子句,另存为新的dataframe(不是必需的,但更容易阅读),当然可以在groupby中使用过滤后的df

married=df[df['marital_status']=='married']

q1 = 从数据库中选择工作、平均年龄,其中 marietal_status='已婚' 按工作分组

married.groupby('job').agg( {"age":"mean"} )
or
df[df['marital_status']=='married'].groupby('job').agg( {"age":"mean"} )

age
job
manager 48

q2 = 从数据库中选择工作、平均(工资),其中 marietal_status='已婚' 按工作分组

married.groupby('job').agg( {"salary":"mean"} )

salary
job
manager 9000

您可以通过重置索引来展平表格

df[df['marital_status']=='married'].groupby('job').agg( {"age":"mean"} ).reset_index()

job age
0 manager 48

一起输出两个统计数据:

df[df['marital_status']=='married'].groupby('job').agg( {"age":"mean","salary":"mean"} ).reset_index()

job age salary
0 manager 48 9000

关于python - Pandas Python 上的 Group by 和 where 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58190441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com