HOWTO · Pandas
Split Pandas DataFrame
Este tutorial explica como podemos dividir um DataFrame em vários DataFrames de menor dimensão.
Nesta página
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.