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())
输出: