Pandas Groupby:在Python中对数据进行汇总、聚合和分组

GroupBy是一个相当简单的概念。我们可以创建一个类别的分组,并对这些类别应用一个函数。这是一个简单的概念,但它是一个非常有价值的技术,在数据科学中被广泛使用。在真正的数据科学项目中,你会处理大量的数据,并反复尝试一些东西,所以为了提高效率,我们使用Groupby概念。Groupby概念真的很重要,因为它能够有效地汇总、聚合和分组数据。

汇总

总结包括计算、描述数据框中的所有数据。我们可以使用describe()方法对数据框中的数据进行总结。该方法用于从数据框中获取最小、最大、总和、计数值以及该特定列的数据类型。

describe()。这个方法阐述了数据的类型和它的属性。

语法: dataframe_name.describe()

unique()。该方法用于从给定的列中获取所有的唯一值。

语法:dataframe[‘column_name].unique()

nunique()。这个方法与unique类似,但它将返回唯一值的数量。

语法:dataframe_name[‘column_name].nunique()

info()。该命令用于获取数据类型和列的信息

语法:dataframe.info()

列。该命令用于显示数据框中的所有列名。

语法:dataframe.columns

示例:

在这个例子中,我们要分析的是学生的分数数据。

# importing pandas as pd for using data frame

import pandas as pd

# creating dataframe with student details

dataframe = pd.DataFrame({'id': [7058, 4511, 7014, 7033],

'name': ['sravan', 'manoj', 'aditya', 'bhanu'],

'Maths_marks': [99, 97, 88, 90],

'Chemistry_marks': [89, 99, 99, 90],

'telugu_marks': [99, 97, 88, 80],

'hindi_marks': [99, 97, 56, 67],

'social_marks': [79, 97, 78, 90], })

# display dataframe

dataframe

输出:

# describing the data frame

print(dataframe.describe())

print("-----------------------------")

# finding unique values

print(dataframe['Maths_marks'].unique())

print("-----------------------------")

# counting unique values

print(dataframe['Maths_marks'].nunique())

print("-----------------------------")

# display the columns in the data frame

print(dataframe.columns)

print("-----------------------------")

# information about dataframe

print(dataframe.info())

输出:

聚合

聚合用于获得数据框架中所有列或数据框架中特定列的平均值、平均数、方差和标准差。

sum()。它返回数据框的总和

语法:dataframe[‘column].sum()

mean()。它返回数据框中特定列的平均值

语法:dataframe[‘column].mean()

std()。它返回该列的标准偏差。

语法:dataframe[‘column].std()

var()。它返回该列的方差

dataframe[‘column’].var()

min()。它返回列中的最小值

语法:dataframe[‘column’].min()

max()。它返回列中的最大值

语法:dataframe[‘column’].max()

示例:

在下面的程序中,我们将汇总数据。

# importing pandas as pd for using data frame

import pandas as pd

# creating dataframe with student details

dataframe = pd.DataFrame({'id': [7058, 4511, 7014, 7033],

'name': ['sravan', 'manoj', 'aditya', 'bhanu'],

'Maths_marks': [99, 97, 88, 90],

'Chemistry_marks': [89, 99, 99, 90],

'telugu_marks': [99, 97, 88, 80],

'hindi_marks': [99, 97, 56, 67],

'social_marks': [79, 97, 78, 90], })

# display dataframe

dataframe

输出:

# getting all minimum values from

# all columns in a dataframe

print(dataframe.min())

print("-----------------------------------------")

# minimum value from a particular

# column in a data frame

print(dataframe['Maths_marks'].min())

print("-----------------------------------------")

# computing maximum values

print(dataframe.max())

print("-----------------------------------------")

# computing sum

print(dataframe.sum())

print("-----------------------------------------")

# finding count

print(dataframe.count())

print("-----------------------------------------")

# computing standard deviation

print(dataframe.std())

print("-----------------------------------------")

# computing variance

print(dataframe.var())

输出:

分组

它通过使用groupby()方法对数据框架中的一个或多个列进行分组。Groupby主要是指涉及以下一个或多个步骤的过程,它们是:。

分割。这是一个过程,我们通过对数据集施加一些条件,将数据分成若干组。

应用。它是一个过程,在这个过程中,我们将一个函数独立地应用于每组

合并。这是一个过程,在应用groupby后,我们将不同的数据集结合在一起,结果是一个数据结构。

示例 1:

# importing pandas as pd for using data frame

import pandas as pd

# creating dataframe with student details

dataframe = pd.DataFrame({'id': [7058, 4511, 7014, 7033],

'name': ['sravan', 'manoj', 'aditya', 'bhanu'],

'Maths_marks': [99, 97, 88, 90],

'Chemistry_marks': [89, 99, 99, 90],

'telugu_marks': [99, 97, 88, 80],

'hindi_marks': [99, 97, 56, 67],

'social_marks': [79, 97, 78, 90], })

# group by name

print(dataframe.groupby('name').first())

print("---------------------------------")

# group by name with social_marks sum

print(dataframe.groupby('name')['social_marks'].sum())

print("---------------------------------")

# group by name with maths_marks count

print(dataframe.groupby('name')['Maths_marks'].count())

print("---------------------------------")

# group by name with maths_marks

print(dataframe.groupby('name')['Maths_marks'])

输出:

示例 2:

# importing pandas as pd for using data frame

import pandas as pd

# creating dataframe with student details

dataframe = pd.DataFrame({'id': [7058, 4511, 7014, 7033],

'name': ['sravan', 'manoj', 'aditya', 'bhanu'],

'Maths_marks': [99, 97, 88, 90],

'Chemistry_marks': [89, 99, 99, 90],

'telugu_marks': [99, 97, 88, 80],

'hindi_marks': [99, 97, 56, 67],

'social_marks': [79, 97, 78, 90], })

# group by name

print(dataframe.groupby('name').first())

print("------------------------")

# group by name with social_marks sum

print(dataframe.groupby('name')['social_marks'].sum())

print("------------------------")

# group by name with maths_marks count

print(dataframe.groupby('name')['Maths_marks'].count())

输出: