Pandas GroupBy 计算每个组合的出现次数

Pandas GroupBy 计算每个组合的出现次数

在这篇文章中,我们将对两列进行GroupBy,并计算Pandas中每个组合的出现次数。

DataFrame.groupby() 方法用于将DataFrame分成组。它将生成存在于数据框某一列的类似数据计数的数量。

语法: DataFrame.groupby(by=None, axis=0, level=None )

参数:

  • by:映射、函数、字符串、标签或iterable来分组元素。
  • axis:按行(axis=0)或列(axis=1)分组。
  • level: 整数。按一个或多个特定的级别对该组的值。

为了理解这一概念,我们将使用下面给出的一个简单的数据集。

# Import library
import pandas as pd
import numpy as np
 
# initialise data of lists.
Data = {'Products':['Box','Color','Pencil','Eraser','Color',
                    'Pencil','Eraser','Color','Color','Eraser','Eraser','Pencil'],
 
       'States':['Jammu','Kolkata','Bihar','Gujarat','Kolkata',
                 'Bihar','Jammu','Bihar','Gujarat','Jammu','Kolkata','Bihar'],
 
       'Sale':[14,24,31,12,13,7,9,31,18,16,18,14]}
 
# Create DataFrame
df = pd.DataFrame(Data, columns=['Products','States','Sale'])
 
# Display the Output
display(df)

输出:

Pandas GroupBy - 计算每个组合的出现次数

方法1:使用Pandas的dataframe.size()

它返回一个元素的总数,它是通过乘以shape方法返回的行和列来进行比较。

语法: dataframe.size

new = df.groupby(['States','Products']).size()
display(new)

输出:

Pandas GroupBy - 计算每个组合的出现次数

方法2:使用Pandas的dataframe.count()

它用于计算给定轴上的非NA/null观察值的数量。它也适用于非浮动类型的数据。

语法:DataFrame.count(axis=0, level=None, numeric_only=False)

参数:

  • axis : 0或’index’为行式,1或’columns’为列式
  • level : 如果轴是MultiIndex(分层的),沿某一层次计数,折叠成一个DataFrame。
  • numeric_only : 只包括浮点数、英数、布尔值数据

返回: count : 系列(如果指定级别,则为数据框)。

new = df.groupby(['States','Products'])['Sale'].count()
display(new)

输出:

Pandas GroupBy - 计算每个组合的出现次数

方法3:使用Pandas reset_index()

它是一个重置数据框架索引的方法。reset_index()方法设置一个从0到数据长度的整数列表作为索引。

语法: DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=” )

参数:

  • level: int, string or a list to select and remove passed column from index.
  • drop: 布尔值,如果为假,则将被替换的索引列添加到数据中。
  • inplace:布尔值,如果为真,则在原始数据框架本身中进行更改。
  • col_level:选择在哪个列级插入标签。
  • col_fill: 对象,决定其他级别如何命名。

返回类型:DataFrame

new = df.groupby(['States','Products'])['Sale'].agg('count').reset_index()
display(new)

输出:

Pandas GroupBy - 计算每个组合的出现次数

方法4:使用pandas.pivot()函数

它基于DataFrame的3列产生一个透视表。使用来自索引/列的唯一值并填入数值。

语法: pandas.pivot(index, columns, values)

参数:

  • index[ndarray] : 标签用于制作新框架的索引。
  • columns[ndarray] :用于制作新框架的列的标签。
  • values[ndarray] :用于填充新框架的值。

返回:重塑的数据框架。

异常: 如果有任何重复的数据,会引发ValueError。

new = df.groupby(['States','Products'],as_index = False
                ).count().pivot('States','Products').fillna(0)
display(new)

输出:

Pandas GroupBy - 计算每个组合的出现次数

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程