Dividir DataFrame de Pandas

Suraj Joshi 30 enero 2023
  1. Dividir un DataFrame usando la indexación de filas
  2. Dividir el DataFrame utilizando el método groupby()
  3. Dividir el DataFrame usando el método sample()
Dividir DataFrame de Pandas

Este tutorial explica cómo podemos dividir un DataFrame en múltiples DataFrames más pequeños utilizando la indexación de filas, el método DataFrame.groupby() y el método DataFrame.sample().

Utilizaremos el DataFrame apprix_df para explicar cómo podemos dividir un DataFrame en múltiples DataFrames más pequeños.

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

Producción :

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

Dividir un DataFrame usando la indexación de filas

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

Producción :

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

Divide el DataFrame apprix_df en dos partes utilizando la indexación de filas. La primera parte contiene las dos primeras filas del DataFrame apprix_df, mientras que la segunda parte contiene las tres últimas filas.

Podemos especificar las filas que se incluirán en cada división en la propiedad iloc. La propiedad [:2,:] representa la selección de las filas hasta la fila con índice 2 exclusivo (la fila con índice 2 no se incluye) y todas las columnas del DataFrame. Por lo tanto, apprix_df.iloc[:2,:] selecciona las dos primeras filas del DataFrame apprix_df con índice 0 y 1.

Dividir el DataFrame utilizando el método 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")

Resultado:

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

Divide el DataFrame apprix_df en tres partes en función del valor de la columna Qualification. Las filas con el mismo valor de la columna Qualification se colocarán en el mismo grupo.

La función groupby() formará grupos basados en el valor de la columna Qualification. Luego extraemos las filas agrupadas por el método groupby() utilizando el método get_group().

Dividir el DataFrame usando el método sample()

Podemos formar un DataFrame muestreando filas al azar de un DataFrame utilizando el método sample(). Podemos establecer la proporción de filas a muestrear del DataFrame padre.

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)

Resultado:

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

Muestrea aleatoriamente el 40% de las filas del DataFrame apprix_df y luego muestra el DataFrame formado por las filas muestreadas. El random_state se establece para asegurar que obtenemos las mismas muestras aleatorias en el muestreo cada vez.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Pandas DataFrame