[파이썬을 이용한 데이터 분석] 5. Pandas 3
* 본 포스팅은 '파이썬 라이브러리를 활용한 데이터 분석' 책 스터디 및 수업 내용 정리를 위한 것입니다*
아래 코드로 만들어진 DataFrame으로 테스트 진행
import numpy as np
df = DataFrame(np.arange(12).reshape(4,3), index=['1월','2월','3월','4월'], columns = ['강남','강북','서초'])
print(df)
print(df['강남'])
print(df['강남']>3)
#3보다 작으면 0으로 채운다
df[df<3] = 0
print(df)
4) loc 와 iloc
f.loc[행 인덱싱값, 열 인덱싱값]
- loc
축 이름을 선택할 때 사용, 즉 인덱스 기준으로 행 데이터를 읽을 때 사용
(Dataframe의 행은 Series이기 때문에 세로로 출력된다)
print(df.loc['3월'])
#2월까지의 데이터
print(df.loc[:'2월'])
#서초 1,2월 데이터
print(df.loc[:'2월', ['서초']])
결과 :
- iloc
정수 색인으로 선택할 때 사용, 즉 행 번호 기준으로 데이터 읽기
(순서를 나타내는 정수 기반의 2차원 인덱싱)
loc와 마찬가지로, [행 인덱싱 값, 열 인덱싱 값]으로, 열 인덱싱 값에 ':' 있으면 모든 열의 인덱싱 값을 가져오라는 의미이다. (로우와 컬럼의 부분집합을 선택)
그래서 [2, :]로 표현 되어 있으면 2번째 행의 모든 열 인덱싱 값을 가져오라는 의미이다.
print(df.iloc[2])
print(df.iloc[2, :])
print(df.iloc[:3, 1:3])
결과 :
5) 범주화
- cut
숫자 데이터의 카테고리화
import pandas as pd
from pandas import DataFrame as df
TestScore= [25, 94, 57, 62, 70, 25, 94, 57, 62, 70, 62, 70]
#구간 기준 값
bins = [20,40,60,80,100]
re_cut = pd.cut(TestScore, bins)
print(re_cut)
print(pd.value_counts(re_cut))
결과 :
[(20, 40], (80, 100], (40, 60], (60, 80], (60, 80], ..., (40, 60], (60, 80], (60, 80], (60, 80], (60, 80]]
Length: 12
Categories (4, interval[int64]): [(20, 40] < (40, 60] < (60, 80] < (80, 100]]
6) 병합
- merge
서로 다른 DataFrame을 하나로 합치는 방법. 공통된 하나의 열(또는 행)을 기준으로 동일한 값을 가지는 행을 각 DataFrame에서 찾은 뒤, n개 x m개 조합으로 행을 모두 가지도록 합친다.
(참고 : https://nittaku.tistory.com/121 )
on : 기준, 공통적인 열의 명을 줄 수 있는 옵션, 해당 옵션을 쓰지 않아도 알아서 공통되는 열/행을 찾음
how : 어떻게 병합할 건지에 대한 옵션, inner, outer, left, right
df1 = pd.DataFrame({'data1':range(7), 'key':['b','b','a','c','a','a','b']})
print(df1)
print()
df2 = pd.DataFrame({'key':['a','b','d'],'data2':range(3)})
print(df2)
결과 :
위 두 개의 DataFrame에서 병합을 하기 위해 'key'를 기준으로 잡는다.
inner는 공통된 값이 없으면 생략한다.
#inner
print(pd.merge(df1, df2, on='key'))
print(pd.merge(df1, df2, on='key', how='inner'))
결과 :
#outer
print(pd.merge(df1, df2, on='key', how='outer'))
#left
print(pd.merge(df1, df2, on='key', how='left'))
#right
print(pd.merge(df1, df2, on='key', how='right'))
결과 :
'outer' : 한 쪽 DataFrame에만 있는 행들도 추가
'left' : 'left' : 왼쪽에 있는 df1(data1)이 기준이 되어, df2가 df1과 동일한 key값이 있으면 붙혀지는 형태로, 만약 df2에 해당 키값이 없으면 'NaN'으로 붙혀진다.
'right' : 'left'와 반대
'TECH > Data' 카테고리의 다른 글
데이터 시스템의 기초 - 트랜잭션, OLAP, OLTP (0) | 2020.07.24 |
---|---|
[파이썬을 이용한 데이터 분석] 6. pandas 4 (0) | 2020.07.10 |
[파이썬을 이용한 데이터 분석] 4. Pandas 2 (0) | 2020.06.02 |
[파이썬을 이용한 데이터 분석] 3. Pandas (0) | 2020.05.29 |
[파이썬을 이용한 데이터 분석] 2. Numpy 2 (0) | 2020.05.28 |