Pandas DataFrame aufteilen

Suraj Joshi 17 Februar 2021
  1. DataFrame aufteilen mit Hilfe der Zeilenindizierung
  2. DataFrame mit der Methode groupby() aufteilen
  3. DataFrame mit der Methode sample() aufteilen
Pandas DataFrame aufteilen

Dieses Tutorial erklärt, wie wir einen DataFrame in mehrere kleinere DataFrames aufteilen können, indem wir die Zeilenindexierung, die Methode DataFrame.groupby() und die Methode DataFrame.sample() verwenden.

Im Folgenden wird anhand des DataFrames apprix_df erklärt, wie ein DataFrame in mehrere kleinere DataFrames aufgeteilt werden kann.

import pandas as pd

apprix_df = pd.DataFrame(
    {
        "Name": ["Anish", "Rabindra", "Manish", "Samir", "Binam"],
        "Post": ["CEO", "CTO", "System Admin", "Consultant", "Engineer"],
        "Qualification": ["MBA", "MS", "MCA", "PhD", "BE"],
    }
)

print("Apprix Team DataFrame:")
print(apprix_df, "\n")

Ausgabe:

Apprix Team DataFrame:
       Name          Post Qualification
0     Anish           CEO           MBA
1  Rabindra           CTO            MS
2    Manish  System Admin           MCA
3     Samir    Consultant           PhD
4     Binam      Engineer            BE

DataFrame aufteilen mit Hilfe der Zeilenindizierung

import pandas as pd

apprix_df = pd.DataFrame(
    {
        "Name": ["Anish", "Rabindra", "Manish", "Samir", "Binam"],
        "Post": ["CEO", "CTO", "System Admin", "Consultant", "Engineer"],
        "Qualification": ["MBA", "MS", "MCA", "PhD", "BE"],
    }
)

print("Apprix Team DataFrame:")
print(apprix_df, "\n")

apprix_1 = apprix_df.iloc[:2, :]
apprix_2 = apprix_df.iloc[2:, :]

print("The DataFrames formed by splitting of Apprix Team DataFrame are: ", "\n")
print(apprix_1, "\n")
print(apprix_2, "\n")

Ausgabe:

Apprix Team DataFrame:
       Name          Post Qualification
0     Anish           CEO           MBA
1  Rabindra           CTO            MS
2    Manish  System Admin           MCA
3     Samir    Consultant           PhD
4     Binam      Engineer            BE

The DataFrames formed by splitting the Apprix Team DataFrame are:

       Name Post Qualification
0     Anish  CEO           MBA
1  Rabindra  CTO            MS

     Name          Post Qualification
2  Manish  System Admin           MCA
3   Samir    Consultant           PhD
4   Binam      Engineer            BE

Der DataFrame apprix_df wird unter Verwendung der Zeilenindizierung in zwei Teile aufgeteilt. Der erste Teil enthält die ersten beiden Zeilen des DataFrames apprix_df, während der zweite Teil die letzten drei Zeilen enthält.

Wir können die Zeilen, die in jedem Split enthalten sein sollen, in der Eigenschaft iloc angeben. [:2,:] steht für die Auswahl der Zeilen bis zur Zeile mit dem Index 2 exklusiv (die Zeile mit dem Index 2 ist nicht enthalten) und alle Spalten aus dem DataFrame. Daher wählt apprix_df.iloc[:2,:] die ersten beiden Zeilen aus dem DataFrame apprix_df mit dem Index 0 und 1 aus.

DataFrame mit der Methode groupby() aufteilen

import pandas as pd

apprix_df = pd.DataFrame(
    {
        "Name": ["Anish", "Rabindra", "Manish", "Samir", "Binam"],
        "Post": ["CEO", "CTO", "System Admin", "Consultant", "Engineer"],
        "Qualification": ["MBA", "MS", "MS", "PhD", "MS"],
    }
)

print("Apprix Team DataFrame:")
print(apprix_df, "\n")

groups = apprix_df.groupby(apprix_df.Qualification)
ms_df = groups.get_group("MS")
mba_df = groups.get_group("MBA")
phd_df = groups.get_group("PhD")

print("Group with Qualification MS:")
print(ms_df, "\n")

print("Group with Qualification MBA:")
print(mba_df, "\n")

print("Group with Qualification PhD:")
print(phd_df, "\n")

Ausgabe:

Apprix Team DataFrame:
       Name          Post Qualification
0     Anish           CEO           MBA
1  Rabindra           CTO            MS
2    Manish  System Admin            MS
3     Samir    Consultant           PhD
4     Binam      Engineer            MS

Group with Qualification MS:
       Name          Post Qualification
1  Rabindra           CTO            MS
2    Manish  System Admin            MS
4     Binam      Engineer            MS

Group with Qualification MBA:
    Name Post Qualification
0  Anish  CEO           MBA

Group with Qualification PhD:
    Name        Post Qualification
3  Samir  Consultant           PhD

Der DataFrame apprix_df wird in drei Teile geteilt, basierend auf dem Wert der Spalte Qualification. Die Zeilen mit dem gleichen Wert der Spalte Qualification werden in die gleiche Gruppe eingeordnet.

Die Funktion groupby() bildet Gruppen basierend auf dem Wert der Spalte Qualification. Wir extrahieren dann die mit der Methode groupby() gruppierten Zeilen mit der Methode get_group().

DataFrame mit der Methode sample() aufteilen

Wir können einen DataFrame bilden, indem wir mit der Methode sample() zufällig Zeilen aus einem DataFrame ziehen. Wir können das Verhältnis der Zeilen festlegen, die aus dem übergeordneten DataFrame abgetastet werden sollen.

import pandas as pd

apprix_df = pd.DataFrame(
    {
        "Name": ["Anish", "Rabindra", "Manish", "Samir", "Binam"],
        "Post": ["CEO", "CTO", "System Admin", "Consultant", "Engineer"],
        "Qualification": ["MBA", "MS", "MS", "PhD", "MS"],
    }
)

print("Apprix Team DataFrame:")
print(apprix_df, "\n")

random_df = apprix_df.sample(frac=0.4, random_state=60)

print("Random split from the Apprix Team DataFrame:")
print(random_df)

Ausgabe:

Apprix Team DataFrame:
       Name          Post Qualification
0     Anish           CEO           MBA
1  Rabindra           CTO            MS
2    Manish  System Admin            MS
3     Samir    Consultant           PhD
4     Binam      Engineer            MS

Random split from the Apprix Team DataFrame:
    Name      Post Qualification
0  Anish       CEO           MBA
4  Binam  Engineer            MS

Es werden 40% der Zeilen aus dem DataFrame apprix_df zufällig abgetastet und dann der aus den abgetasteten Zeilen gebildete DataFrame angezeigt. Der random_state wird gesetzt, um sicherzustellen, dass wir jedes Mal die gleichen Zufallsstichproben beim Sampling erhalten.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas DataFrame