ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 인덱싱과 선택 - DataFrame
    데이터 분석/Pandas 2020. 6. 15. 00:12

    NumPy 인덱싱 복습

    NumPy 배열의 값에 접근하고 그 값을 설정하고 수정하는 메서드와 도구들

    인덱싱    arr[2,1]    인덱스 단일 스칼라 

    슬라이싱    arr [:, 1:5]    인덱스 범위

    마스킹     arr[arr>0]    인덱스 조건을 전달

    팬시 인덱싱    arr[0, [1,5]]    인덱스 배열을 전달

     


    Dataframe 인덱싱과 선택

    DataFrame 은 여러 면에서 2차원 배열이나 구조화된 배열과 비슷하고, 다른 면에서는 동일 인덱스를 공유하는 Series 구조체의 딕셔너리와 비슷하다. 스프레드시트의 표 형식의 데이터를 생각하면 된다. 

    Two-dimensional, size-mutable, potentially heterogeneous tabular data.

     

    DataFrame

     

    DataFrame 에 단일 인덱스, 인덱스 배열을 전달하면 열에 접근한다.

    단일 인덱스를 전달하면, 하나의 열의 결과를 Series 객체로 반환한다.

    인덱스 배열 을 전달하면 여러 열의 결과를 DataFrame 객체로 반환한다. (팬시인덱싱)

     

    반면, 슬라이싱은 행을 참조한다. 

     

    마스킹 연산은 행 단위로 해석, 반환한다. 

     

    마찬가지로 문자열인 열 (column) 이름을 이용해 속성 스타일로 접근할 수 있다. 속성 스타일로 열에 접근하면 사실상 딕셔너리 스타일로 접근하는 것과 똑같은 객체에 접근한다. 하지만 메서드이름과 열 이름이 동일할 경우 메서드가 적용되므로, 속성 스타일 접근 및 변경은 권장하지 않는다.

     

     

     

     

    DataFrame 속성 

    DataFrame 이 가지고 있는 데이터 속성을 조회할 수 있다. [pandas.DataFrame Docs 링크]

    Pandas.DataFrame.{attribute}

     

    1. 값에 대한 조회

    data.values

    values 속성을 이용해 data 의 원시 기반 데이터 2차원 배열을 확인할 수 있다. numpy.ndarray 를 반환한다.

    2차원 배열에 행의 값을 조회하여, 해당 행에 포함된 값을 1차원 배열로 확인할 수 있다. 

     

    data.T 

    전체 DataFrame 의 행과 열을 바꿀 수 있다. 

    data.T 속성값으로 조회를 했을 뿐이다. 이 모양 그대로 저장하고 싶다면 신규로 DataFrame 객체를 생성해주어야 한다. 

     

     

     

    2. DataFrame 에 대한 행열 정보

    data.axes

    축을 조회하면 행과 열이 모두 인덱스 객체로 반환한다. (2차원이니 축은 행과 열, 총 2개이다.)

     

    .columns /  .index 

    .columns로 열에 대한 인덱스를 반환하고, .index 로 조회하면 행에 대한 인덱스를 반환한다.

     

    .dtypes

    .dtypes 로 조회하면, 각 열 하위에 있는 값에 대한 지정된 데이터타입을 반환한다. 

     

     

    data.ndim

    DataFrame 은 2차원 배열이니 2 를 반환한다.

     

    data.shape 

    행과 열의 크기를 반환한다.

     

    data.szie

    행과 열을 곱한 데이터의 규모를 반환한다. 데이터 요소의 갯수를 반환한다. 

     

     

    3. 암묵적 인덱스로 특정 값을 불러오기

    .iat[m, n]

    암시적 인덱스로 특정 위치에 값 하나를 반환한다.

     

     

     

    .iloc[m,n] / .iloc[[m]]

    암시적 인덱스 기준으로 값, Series 객체, 또는 DataFrame 객체를 반환한다.

     

    , 없이 스칼라/배열을 넣으면 행을 기준으로 Series 또는 DataFrame 을 반환한다. 

    iloc[] 에 인덱스를 넣으면 해당 행에 위치한 열의 값을 Series 로 반환하고

    iloc[] 에 인덱스 슬라이싱이나 인덱스 요소를 포함한 배열을 넣으면 여러 행의 결과인 DataFrame 을 반환한다.

     

    , 를 통해 행과 열을 모두 지정해서 값을 반환할 수도 있다. 

    data.iloc[행, 열]: iloc 도 iat 과 같이 행/열 위치 두 개의 scalar 값으로 하나의 값을 반환할 수 도 있고,

    data.iloc[[행1, 행2]] 지정한 행 리스트 결과를 반환할 수도 있고,

    data.iloc[[행1, 행2], [열1, 열2]] 지정한 행과 열 리스트 결과를 반환할 수도 있다. 

     

    data.iloc 결과는 scalar 값, Series 객체, DataFrame 객체일 수 있다. 

     

     

    전체 행에 대해서 True, False 값으로 조회하거나, 행 기준으로  특정 조건에 부합하는 행을 조회할 수 있다.  (마스크 인덱싱)

     

     

    4. 암묵적 인덱스로 특정 값을 불러오기

    .loc[m] / .loc[m,n]

    명시적 인덱스 기준으로 값, Series 객체, 또는 DataFrame 객체를 반환한다.

     

     

    , 없이 스칼라/배열을 넣으면 행을 기준으로 Series 또는 DataFrame 을 반환한다. 

    loc[] 에 인덱스를 넣으면 해당 행에 위치한 열의 값을 Series 로 반환하고

    loc[] 에 인덱스 슬라이싱이나 인덱스 요소를 포함한 배열을 넣으면 여러 행의 결과인 DataFrame 을 반환한다.

     

    , 를 통해 행과 열을 모두 지정해서 값을 반환할 수도 있다. 

    data.loc[행, 열]: iloc 도 iat 과 같이 행/열 위치 두 개의 scalar 값으로 하나의 값을 반환할 수 도 있고,

    data.iloc[[행1, 행2], [열1, 열2]] 지정한 행과 열 리스트 결과를 반환할 수도 있다. 

     

    행과 열에 대해서 서로 다른 형식을 취해서 값을 구해올 수 있다.

    행에 대해서는 마스킹 연산을, 열에 대해서는 인덱스 배열을 전달하였다. 

    댓글

Designed by Tistory.