📜  如何在 Pandas 中按组计算观察值?

📅  最后修改于: 2022-05-13 01:54:22.195000             🧑  作者: Mango

如何在 Pandas 中按组计算观察值?

在实际的数据科学项目中,您将处理大量数据并反复尝试,因此为了提高效率,我们使用 Groupby 概念。 Groupby 概念非常重要,因为它能够有效地聚合数据,无论是性能还是代码量都非常出色。 Groupby主要是指一个涉及以下一个或多个步骤的过程,它们分别是:

  • 拆分:这是我们通过对数据集应用某些条件将数据拆分成组的过程。
  • 应用:这是一个我们独立地将一个函数应用到每个组的过程。
  • 合并:是我们在应用groupby和results后将不同的数据集合并成一个数据结构的过程。

在这里,我们使用一个简单的虚拟数据框,如下所示:



此外,我们使用一些方法来计算 Pandas 中组的观察值,下面将通过示例进行解释。

示例 1:使用 group.count(按一个变量计数)

在这个例子中,我们将使用 group.count() 方法来计算每个组中的成员总数。

Python3
# import libraries
import pandas as pd
  
#create pandas DataFrame
df = pd.DataFrame({'Name': ['Arun', 'Arun', 'Bhuvi', 'Bhuvi',
                            'Bhuvi', 'Chandan', 'Chandan'],
                     
                   'Department':['CSE', 'IT', 'CSE', 'CSE',
                                 'IT', 'IT', 'CSE'],
                     
                   'Funds': [1100, 800, 700, 600, 600, 500, 1200]})
  
# create a group using groupby
group = df.groupby("Department")
  
# count the observations
group.count()


Python3
# import libraries
import pandas as pd
  
#create pandas DataFrame
df = pd.DataFrame({'Name': ['Arun', 'Arun', 'Bhuvi', 'Bhuvi', 
                            'Bhuvi', 'Chandan', 'Chandan'],
                     
                   'Department':['CSE', 'IT', 'CSE', 'CSE', 
                                 'IT', 'IT', 'CSE'],
                     
                   'Funds': [1100, 800, 700, 600, 600, 500, 1200]})
  
# create a group using groupby
group = df.groupby(['Name', 'Department'])
  
# size of group to count observations
group = group.size()
  
# make a column name 
group.reset_index(name='Observation')


输出:

示例 2:使用 group.size(按多个变量计数)

在这个例子中,我们将使用 group.size() 方法来计算每个组中条目/行

蟒蛇3

# import libraries
import pandas as pd
  
#create pandas DataFrame
df = pd.DataFrame({'Name': ['Arun', 'Arun', 'Bhuvi', 'Bhuvi', 
                            'Bhuvi', 'Chandan', 'Chandan'],
                     
                   'Department':['CSE', 'IT', 'CSE', 'CSE', 
                                 'IT', 'IT', 'CSE'],
                     
                   'Funds': [1100, 800, 700, 600, 600, 500, 1200]})
  
# create a group using groupby
group = df.groupby(['Name', 'Department'])
  
# size of group to count observations
group = group.size()
  
# make a column name 
group.reset_index(name='Observation')

输出 :