如何使用 groupby 方法计算数据框的平均值

How do a mean of a dataframe with groupby method

我想在 DataFrame 中对我的变量进行平均,我在其中按列 'A' 对元素进行了分组。问题是,当我打印结果时,输出只是第一个变量列的平均值,为什么要这样做?

代码;

import pandas as pd

file = open('C:/Users/Andre/Desktop/Python/introduction-datascience-python-book-master/files/ch03/adult.data', 'r')

def chr_int(a):
    if a.isdigit(): return int(a)
    else:
        return a

data = []
for line in file:
    data1 = line.split(',')  
    if len(data1) == 15: 
        data.append([chr_int(data1[0]), data1[1], chr_int(data1[2]), data1[3], chr_int(data1[4]), data1[5], data1[6],
                        data1[7], data1[8], data1[9], chr_int(data1[10]), chr_int(data1[11]),
                        chr_int(data1[12]), data1[13], data1[14]])

df = pd.DataFrame(data)
df.columns = [ 'age', 'type_employer', 'fnlwgt', 'education',
                'education_num', 'marital', 'occupation',
                'relationship', 'race', 'sex', 'capital_gain',
                'capital_loss', 'hr_per_week', 'country', 'income' ]

#print(df) 

counts = df.groupby('country').mean()  
print(counts.head())    

输出;

                 age
country             
 ?         38.725557
 Cambodia  37.789474
 Canada    42.545455
 China     42.533333
 Columbia  39.711864

关于 pandas.DataFrame.groupby()

的一些直觉

尝试以这种方式解决问题:提供简洁的代码和答案

使用:df.groupby('column_to_group').agg({'col_to_mean':'mean' ,'col_to_sum':'sum'})

对于基于多列的 Groupby,将单个 'column_to_group' 转换为要分组的不同列的列表,

例子 df.groupby(['group_col_1','group_col_2']).agg({'col_to_mean':'mean' ,'col_to_sum':'sum'})

确保您不使用相同的列进行分组和聚合 干杯!

PS :对于选择性数据类型 groupby 使用 df.select_dtypes() ,参数将根据您的要求 'include' 或 'exclude'

示例df.select_dtypes(include=['int64'])groupby(['group_col_1','group_col_2']).agg({'col_to_mean':'mean' ,'col_to_sum':'sum'})