파이썬(Python)/pandas

[Python]Pandas Dataframe 데이터 불러오기, loc, iloc 차이, 필터(Filter) 처리

끄적끄적아무거나 2022. 2. 26. 15:43
반응형

 

목차

     

     

     

     

     

     

     

    [파이썬] Pandas Dataframe loc, iloc 함수 정의 및 차이

     

    loc 함수는 라벨(Label) 기준으로 행(Row)과 열(Colum)을 필터(Filter)해 줍니다. 예를 들어 3번 index에 내용을 찾을 때 3번 Index가 가지는 라벨 이름(name)을 통해서 검색합니다. 그리고 index 값을 이용해서 검색도 가능해서 index 검색 시 형 전체를 표기 해줍니다.

     

    iloc는 정수로된 index를 기준으로 필터링 해줍니다. index 값을 이용해서 행과 열 모두 검색 가능합니다. 아래 예제를 통해 쉽게 이해할 수 있습니다.

     

     

     

     

     

     

    [파이썬] Pandas Dataframe loc label 필터링 예제

     

    아래 예제는 loc에 조건식을 넣어서 조건에 맞는 값만 출력되게 만든 loc 예제 입니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    loc_df = df.loc[(df.name == "James") & (df.math > 60)]
    print("\nloc Dataframe")
    print(loc_df)

    4~9번 라인: dataframe 생성

    14번 라인: 라벨에서 name 값이 James 이고 math 라벨의 점수가 60이상인 값만을 출력 합니다.

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    loc Dataframe
        name  math  physics  english
    0  James    90       30       90

     

     

     

     

     

    [파이썬] Pandas Dataframe loc index 필터링 예제

     

    loc 함수와 index 번호를 이용한 필터링을 구현하겠습니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    loc_df = df.loc[2:3]
    print("\nloc Dataframe")
    print(loc_df)

    14번 라인: Dataframe의 index는 0부터 시작이고 2번과 3번 값을 불러 옵니다. 

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    loc Dataframe
        name  math  physics  english
    2  Kevin    50       80       30
    3   Adam    30       50       90

     

     

     

     

     

     

    [파이썬] Pandas Dataframe loc 검색 후 업데이트 예제

     

    이번 예제는 loc 필터링 조건에 맞는 값들을 특정 값으로 변경(Update, replace)해주는 예제 입니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    
    loc_df = df.loc[(df.name == "James") & (df.math > 60), ["name"]] = ["Super James"]
    print("\nloc Dataframe")
    print(df)

    15번 라인: 조건문을 입력하고 조건에 맞으면 name 라벨 항목 값을 Super James로 변경합니다.

    17번 라인: df 에 원본 dataframe 값이 변경 되므로 df를 출력 합니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    loc Dataframe
              name  math  physics  english
    0  Super James    90       30       90
    1        James    50       40       70
    2        Kevin    50       80       30
    3         Adam    30       50       90
    4        David   100       10       90
    5         Adam    90       50       40
    반응형

     

     

     

     

     

     

     

    [파이썬] Pandas Dataframe iloc 검색 예제

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    iloc_df = df.iloc[2:4]
    print("\niloc Dataframe")
    print(iloc_df)

    라인14번 : [2:4]의 의미는 index 2, 3을 의미하고 4는 포함하지 않습니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    iloc Dataframe
        name  math  physics  english
    2  Kevin    50       80       30
    3   Adam    30       50       90

     

     

     

     

     

     

    [파이썬] Pandas Dataframe iloc 행렬 검색 예제

     

    이번 예제는 행과 열의 index값을 생각해서 부분 적인 검색을 시행하겠습니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    iloc_df = df.iloc[0:2,2:4]
    print("\niloc Dataframe")
    print(iloc_df)

    14번 라인: 행(Row)은 0~1번, 열(Column)은 2~3번까지 필터 처리하였습니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    iloc Dataframe
       physics  english
    0       30       90
    1       40       70

     

     

    반응형