Pandas DataFrame 분할

Suraj Joshi 2023년1월30일
  1. 행 인덱싱을 사용하여 DataFrame 분할
  2. groupby()메서드를 사용하여 DataFrame 분할
  3. sample()메서드를 사용하여 DataFrame 분할
Pandas DataFrame 분할

이 자습서에서는 행 인덱싱,DataFrame.groupby()메서드 및DataFrame.sample()메서드를 사용하여 DataFrame을 여러 개의 작은 DataFrame으로 분할하는 방법을 설명합니다.

아래의apprix_df DataFrame을 사용하여 DataFrame을 여러 개의 작은 DataFrame으로 분할하는 방법을 설명합니다.

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 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 분할

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

출력:

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

행 인덱싱을 사용하여 DataFrame apprix_df를 두 부분으로 분할합니다. 첫 번째 부분은apprix_df DataFrame의 처음 두 행을 포함하고 두 번째 부분은 마지막 세 행을 포함합니다.

iloc 속성에서 각 분할에 포함될 행을 지정할 수 있습니다. [:2,:]는 인덱스2가있는 행까지 선택 (색인2가있는 행은 포함되지 않음)과 DataFrame의 모든 열을 선택 함을 나타냅니다. 따라서apprix_df.iloc[:2,:]는 인덱스가01 인 DataFrame apprix_df에서 처음 두 행을 선택합니다.

groupby()메서드를 사용하여 DataFrame 분할

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

출력:

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

DataFrame apprix_dfQualification 열의 값을 기준으로 세 부분으로 분할됩니다. Qualification열과 동일한 값을 가진 행은 동일한 그룹에 배치됩니다.

groupby()함수는Qualification 열의 값을 기반으로 그룹을 형성합니다. 그런 다음get_group()메서드를 사용하여groupby()메서드로 그룹화 된 행을 추출합니다.

sample()메서드를 사용하여 DataFrame 분할

sample()메소드를 사용하여 DataFrame에서 무작위로 행을 샘플링하여 DataFrame을 형성 할 수 있습니다. 부모 DataFrame에서 샘플링 할 행의 비율을 설정할 수 있습니다.

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)

출력:

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

apprix_df DataFrame에서 행의 40 %를 무작위로 샘플링 한 다음 샘플링 된 행에서 형성된 DataFrame을 표시합니다. random_state는 매번 샘플링에서 동일한 무작위 샘플을 얻도록 설정됩니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

관련 문장 - Pandas DataFrame