ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] pandas 슬라이싱과 인덱싱
    언어/파이썬 & 장고 2022. 8. 22. 00:24
    import pandas as pd
    
    data = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd'])
    
    # 명시적인 인덱스로 슬라이싱
    print(data['a':'c'])
    # a    0.25
    # b    0.50
    # c    0.75
    # dtype: float64
    
    # 암묵적 정수 인덱스로 슬라이싱
    print(data[0:2])
    # a    0.25
    # b    0.50
    # dtype: float64

    pandas에서 슬라이싱이 많이 혼동을 일으킬 수 있습니다. 명시적인 정수 인덱스를 가지고 있다면 data[1]과 같은 인덱싱 연산은 명시적인 인덱스를 사용하겠지만, data[1:3] 같은 슬라이싱 연산은 파이썬 스타일의 암묵적 인덱스를 사용할 것입니다.

    import pandas as pd
    
    data = pd.Series(['a', 'b', 'c'], index=[1, 3, 5])
    print(data)
    # 1    a
    # 3    b
    # 5    c
    # dtype: object
    
    # 인덱싱할 때, 명시적인 인덱스 사용
    print(data[1])
    # a
    
    # 슬라이싱할 때, 암묵적인 인덱스 사용
    print(data[1:3])
    # 3    b
    # 5    c
    # dtype: object

    정수 인덱스를 사용하는 경우, 위와 같은 혼선이 발생할 수도 있기 때문에 pandas는 특정 인덱싱 방식을 명시적으로 드러내는 몇 가지 특별한 indexer 속성을 제공합니다. 이는 함수 메서드가 아니라 Series의 데이터에 대한 특정 슬라이싱 인터페이스를 드러내는 속성입니다.

    loc

    print(data.loc[1])
    # a
    
    print(data.loc[1:3])
    # 1    a
    # 3    b
    # dtype: object

    loc 속성은 언제나 명시적인 인덱스를 참조하는 인덱싱과 슬라이싱을 가능하게 합니다.

    iloc

    print(data.iloc[1])
    # b
    
    print(data.iloc[1:3])
    # 3    b
    # 5    c
    # dtype: object

    iloc 속성은 인덱싱과 슬라이싱에서 언제나 암묵적인 파이썬 스타일의 인덱스를 참조하게 해준다.

    댓글