말랑말랑제리스타일

[Pandas]판다스 인덱싱 - 데이터 조회 본문

프로그래밍/파이썬

[Pandas]판다스 인덱싱 - 데이터 조회

제리제리 2022. 1. 17. 16:34

Pandas의 DataFrame과 Series에서 데이터를조회하는 작업은 거의 모든 분석에서 일어나는 작업으로 가장 먼저 해야될 작업 중 하나입니다.

 

  1. Native Accesors (접근자)
    1. 파이썬의 Native 객체는 데이터를 인덱싱하기 좋습니다. Pandas는 이걸 보다 쉽게 시작할 수 있게 도와줍니다. 지난 글에 이어서 이번에는 또다른 colab의 샘플 데이터를 가져와봅시다.  

    2. test_df = pd.read_csv("/content/sample_data/california_housing_test.csv") test_df​
    3. 파이썬에서 우리는 불러온 DataFrame의 속성 값 즉 컬럼을 이용해서 각 객체를 조회해볼 수 있습니다. 여기서 각 속성에 접근하기 위해 '.' 또는 '[]'를 이용해볼 수 있습니다. 아래의 두가지 방식으로 된 파이썬 소스는 같은 결과를 출력합니다.
      test_df.total_rooms
      test_df['total_rooms']​
    4. 여기서 대괄호를 이용해 DataFrame에서 Series를 조회하는 방식이 다른 점이라고 하면 또다른 대괄호를 이용해 2차원배열처럼 특정 Row의 값을 가져올 수 있습니다.
      test_df['total_rooms'][0]​
       
  2. Pandas에서의 Indexing
    1. Pandas의 인덱싱 연산자와 조회 기능은 유용합니다. 초보자를 위한 loc 및 iloc 기능이 있고 고급 사용자는 index-based selection 기능을 사용해볼 수 있습니다. 번역이 복잡해서 간단히 했는데 실제 실습을 통해 좀 더 자세히 익혀봅시다.
    2. Index-based selection(인덱스 기반 조회) 
      1. 데이터프레임의 첫번째 row를 가져오는 소스입니다.
        test_df.iloc[0]​
      2.  loc와 iloc 모두 row가 첫번째, column이 두번째입니다. 네이티브 Python에서와 반대입니다.
        이 말은 곧 pandas에서 column으로 조회하는 편이 row로 조회하는 것보다 어렵다는 뜻입니다. iloc으로 column을 가져오려면 다음을 코드를 실행해볼 수 있습니다.
        test_df.iloc[:,0]​


      3.  파이썬에서 :을 사용한다는 것은 모든 값을 의미합니다. 여기서 다른 selector를 이용해 우리가 원하는 값을 추려낼 수 있습니다. 예를 들어서 첫번째부터 세번째 row의 첫번째 컬럼을 조회하기 위해서는 아래 코드를 실앻해볼 수 있습니다
        test_df.iloc[:3,0]​
      4. 또는 두번째부터 세번째까지의 row를 가져오기 위해서는 이렇게 써볼 수 있습니다.( 첫번째 row의 번지수는 0입니다.)
        test_df.iloc[1:3,0]​
      5. 이런 방식으로도 사용이 가능합니다
        test_df.iloc[[0, 1, 2], 0]​
      6. 마지막으로 음수를 넣어서 사용하는 방법도 있습니다. 음수를 사용해 끝에서부터 몇개의 row를 출력하는 것이 가능합니다.
        test_df.iloc[-5:]​


    3.  Labe-based selection
      1. 두번째 방법은 loc 연산자를 이용한 Label 기반 조회입니다. 이 loc 연산자에서 중요한 것은 컬럼 명과 같은 인덱스 Value입니다. 예를 들어 우리가 가져온 DataFrame에서 첫번째 row의 longitude 컬럼 값을 가져오기 위해서 아래 파이썬 코드를 실행해볼 수 있습니다.
        test_df.loc[0,'longitude']​
      2.  iloc에서는 컬럼 명을 몰라도 되기 때문에 개념적으로는 간단하지만 loc을 이용하는 편이 인덱스를 이용해 작업할 수 있기 때문에 일반적으로 훨씬 수월합니다.
        test_df.loc[:,['longitude','latitude']]​


      3.  loc 와 iloc 두가지 방법은 서로 다른 인덱싱 체계를 사용합니다.
        iloc는 파이썬의 스탠다드 라이브러리와 같이 0:10으로 조회시 0~9 인덱스를 조회합니다.
        반면 loc는 인덱스를 포함하기 때문에 0~10번째 row를 조회하게 됩니다.
      4. 따라서 loc[0:10]로 조회한 경우 11개의 값을, iloc[0:10]로 조회한 경우 10개의 값을 반환합니다.

 

마지막으로 이 내용은 아래 캐글 사이트의 판다스 과정을 참고한 내용입니다.

https://www.kaggle.com/residentmario/indexing-selecting-assigning

 

Indexing, Selecting & Assigning

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

반응형
Comments