📜  将大型 Pandas 数据框拆分为较小的数据框列表

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

将大型 Pandas 数据框拆分为较小的数据框列表

在本文中,我们将了解如何将大数据帧拆分为小数据帧列表。这主要可以通过两种不同的方式完成:

  1. 通过分割每一行
  2. 使用 groupby 的概念

在这里,我们使用一个小的数据框来轻松理解这个概念,这也可以以一种简单的方式实现。数据框由学生 ID、姓名、分数和成绩组成。让我们创建数据框。

Python3
# importing packages
import pandas as pd
  
# dictionary of data
dct = {'ID': {0: 23, 1: 43, 2: 12,
              3: 13, 4: 67, 5: 89,
              6: 90, 7: 56, 8: 34},
         
       'Name': {0: 'Ram', 1: 'Deep',
                2: 'Yash', 3: 'Aman',
                4: 'Arjun', 5: 'Aditya',
                6: 'Divya', 7: 'Chalsea',
                8: 'Akash'},
         
       'Marks': {0: 89, 1: 97, 2: 45, 3: 78,
                 4: 56, 5: 76, 6: 100, 7: 87,
                 8: 81},
         
       'Grade': {0: 'B', 1: 'A', 2: 'F', 3: 'C',
                 4: 'E', 5: 'C', 6: 'A', 7: 'B',
                 8: 'B'}
       }
  
# create dataframe
df = pd.DataFrame(dct)
  
# view dataframe
df


Python3
# split dataframe by row
splits = [df.loc[[i]] for i in df.index]
  
# view splitted dataframe
print(splits)
  
# check datatype of smaller dataframe
print(type(splits[0]))
  
# view smaller dataframe
print(splits[0])


Python3
# split dataframe using gropuby
splits = list(df.groupby("Grade"))
  
# view splitted dataframe
print(splits)
  
# check datatype of smaller dataframe
print(type(splits[0][1]))
  
# view smaller dataframe
print(splits[0][1])


输出:

以下是上述概念的实现以及一些示例:

示例 1:通过拆分每一行

在这里,我们对每一行使用迭代循环。使用 DataFrame.loc[] 访问每一行并存储在列表中。此列表是由小型 DataFrame 组成的所需输出。在此示例中,数据集(由 9 行数据组成)通过拆分每一行被划分为较小的数据帧,因此该列表由 9 个较小的数据帧创建,如下面的输出所示。

Python3

# split dataframe by row
splits = [df.loc[[i]] for i in df.index]
  
# view splitted dataframe
print(splits)
  
# check datatype of smaller dataframe
print(type(splits[0]))
  
# view smaller dataframe
print(splits[0])

输出:

示例 2:使用 Groupby

在这里,我们使用 DataFrame.groupby() 方法按行拆分数据集。相同的分组行被视为单个元素并存储在列表中。此列表是由小型 DataFrame 组成的所需输出。在此示例中,数据集(由 9 行数据组成)使用 groupby 方法在“Grade”列上划分为较小的数据框。在这里,不同等级的总数为 5,因此该列表由 5 个较小的数据框创建,如下面的输出所示。

Python3

# split dataframe using gropuby
splits = list(df.groupby("Grade"))
  
# view splitted dataframe
print(splits)
  
# check datatype of smaller dataframe
print(type(splits[0][1]))
  
# view smaller dataframe
print(splits[0][1])

输出: