Split Pandas DataFrame

Suraj Joshi 30 janeiro 2023
  1. Split DataFrame utilizando a indexação de linhas
  2. Dividir DataFrame utilizando o groupby() Método
  3. Dividir DataFrame utilizando o método sample()
Split Pandas DataFrame

Este tutorial explica como podemos dividir um DataFrame em vários DataFrames mais pequenos utilizando indexação de linhas, DataFrame.groupby() método, e DataFrame.sample() método.

Utilizaremos o apprix_df DataFrame abaixo para explicar como podemos dividir um DataFrame em vários DataFrames mais pequenos.

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

Resultado:

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

Split DataFrame utilizando a indexação de linhas

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

Resultado:

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 a DataFrame apprix_df em duas partes utilizando a indexação de linhas. A primeira parte contém as duas primeiras linhas do apprix_df DataFrame, enquanto a segunda parte contém as três últimas linhas.

Podemos especificar as filas a serem incluídas em cada divisão na propriedade iloc. [:2,:] representa a selecção das linhas até à linha com índice 2 exclusivo (a linha com índice 2 não está incluída) e todas as colunas da DataFrame. Assim, apprix_df.iloc[:2,:] selecciona as duas primeiras linhas da DataFrame apprix_df com índice 0 e 1.

Dividir DataFrame utilizando o groupby() Método

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 a DataFrame apprix_df em três partes com base no valor da coluna Qualification. As filas com o mesmo valor da coluna Qualification serão colocadas no mesmo grupo.

A função groupby() formará grupos com base no valor da coluna Qualification. Extraímos então as linhas agrupadas pelo método groupby() utilizando o método get_group().

Dividir DataFrame utilizando o método sample()

Podemos formar um DataFrame através de linhas de amostragem aleatórias a partir de um DataFrame utilizando o método sample(). Podemos definir o rácio de linhas a serem amostradas a partir do DataFrame pai.

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

Amostras aleatórias de 40% das linhas do apprix_df DataFrame e depois mostra o DataFrame formado a partir das linhas amostradas. O random_state é definido para garantir que obtemos sempre as mesmas amostras aleatórias na amostragem.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas DataFrame