-
데이터 인덱싱과 선택 - 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 에 단일 인덱스, 인덱스 배열을 전달하면 열에 접근한다.
단일 인덱스를 전달하면, 하나의 열의 결과를 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]] 지정한 행과 열 리스트 결과를 반환할 수도 있다.
행과 열에 대해서 서로 다른 형식을 취해서 값을 구해올 수 있다.
행에 대해서는 마스킹 연산을, 열에 대해서는 인덱스 배열을 전달하였다.
'데이터 분석 > Pandas' 카테고리의 다른 글
Pandas 누락값 처리 - Handling Missing Values IN Python (0) 2020.08.08 Pandas 데이터 연산하기 (NULL 처리 포함) (1) 2020.06.27 데이터 인덱싱과 선택 - Series (0) 2020.06.13 Pandas 객체 소개 - Index (0) 2020.06.07 Pandas 객체 소개 - DataFrame (0) 2020.06.07