Fractionner Pandas DataFrame

Suraj Joshi 30 janvier 2023
  1. Fractionner le DataFrame en utilisant l’indexation des lignes
  2. Diviser le DataFrame en utilisant la méthode groupby()
  3. Fractionnement de DataFrame en utilisant la méthode sample()
Fractionner Pandas DataFrame

Ce tutoriel explique comment nous pouvons diviser un DataFrame en plusieurs DataFrames plus petits en utilisant l’indexation des lignes, la méthode DataFrame.groupby() et la méthode DataFrame.sample().

Nous utiliserons le DataFrame apprix_df ci-dessous pour expliquer comment nous pouvons diviser un DataFrame en plusieurs DataFrames plus petits.

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")

Production :

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

Fractionner le DataFrame en utilisant l’indexation des lignes

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")

Production :

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

Il divise le DataFrame apprix_df en deux parties en utilisant l’indexation des lignes. La première partie contient les deux premières lignes du DataFrame apprix_df, tandis que la deuxième partie contient les trois dernières lignes.

Nous pouvons spécifier les lignes à inclure dans chaque partie dans la propriété iloc. [:2, :] représente la sélection des lignes jusqu’à la ligne avec l’index 2 exclusif (la ligne avec l’index 2 n’est pas incluse) et toutes les colonnes du DataFrame. Par conséquent, apprix_df.iloc[:2, :] sélectionne les deux premières lignes de la DataFrame apprix_df avec l’index 0 et 1.

Diviser le DataFrame en utilisant la méthode groupby()

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")

Production :

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

Il divise le DataFrame apprix_df en trois parties basées sur la valeur de la colonne Qualification. Les lignes ayant la même valeur de la colonne Qualification seront placées dans le même groupe.

La fonction groupby() formera des groupes basés sur la valeur de la colonne Qualification. Nous extrayons ensuite les lignes groupées par la méthode groupby() en utilisant la méthode get_group().

Fractionnement de DataFrame en utilisant la méthode sample()

Nous pouvons former un DataFrame en échantillonnant des lignes de façon aléatoire à partir d’un DataFrame en utilisant la méthode sample(). Nous pouvons définir le ratio des lignes à échantillonner à partir de la DataFrame parente.

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)

Production :

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

Il échantillonne aléatoirement 40% des lignes de la DataFrame apprix_df et affiche ensuite la DataFrame formée à partir des lignes échantillonnées. L’état random_state est défini pour s’assurer que nous obtenons les mêmes échantillons aléatoires à chaque fois.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Article connexe - Pandas DataFrame