如何使用 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'})
我想在 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'})