Chapter 5. Pandas 시작하기 (2)
2022. 3. 1. 22:42ㆍ개인활동/파이썬 라이브러리를 활용한 데이터 분석
반응형
핵심기능
> reindex <
- 재색인: 새로운 색인에 맞도록 객체를 새로 생성
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
obj
- 위의 series 객체에 대해 reindex를 호출하면 데이터를 새로운 index에 맞춰 재배열하고, 결측치는 NaN으로 표기함
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])
obj2
- 시계열같은 연속형 데이터를 재색인 할 때 값을 보가하거나 채워야 하는 경우 method 옵션을 이용해 해결
- ffill 메소드 등을 이용해 누락된 값을 직전값으로 채워넣을 수 있음
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3
obj3.reindex(range(6), method='ffill')
- reindex를 통해 low, col 모두 변경 가능 → 순서만 전달하면 low가 재색인됨
frame = pd.DataFrame(np.arange(9).reshape((3, 3)),
index=['a', 'c', 'd'],
columns=['Ohio', 'Texas', 'California'])
frame
frame2 = frame.reindex(['a', 'b', 'c', 'd'])
frame2
- col은 columns 예약어를 이용해 재색인
states = ['Texas', 'Utah', 'California']
frame.reindex(columns=states)
- loc를 이용한 재색인
frame.loc[['a', 'b', 'c', 'd'], states]
- reindex 파라미터
index | index로 사용할 새로운 순서, Index 인스턴스나 다른 순차적인 자료구조가 사용 가능, Index는 복사가 이루어지지 않고 그대로 사용 |
method | 채움 메소드. ffill은 직전 값을 채워넣고 bfill은 다음 값을 채워넣음 |
fill_value | 재색인 과정 중 새롭게 나타나는 비어있는 데이터를 채우기 위한 값 |
limit | 전후 보간 시에 사용할 최대 갭 크기(채워넣을 원소의 수) |
tolerance | 전후 보간 시에 사용할 최대 갭 크기(값의 차이) |
level | multiindex의 단계에 단순 색인을 맞춤. 그렇지 않은 경우 multiindex의 하위 집합에 맞춤 |
copy | 참인 겨우 새로운 index가 이전의 index와 동일하더라도 데이터를 복사. 거짓인 경우 동일할 때 복사하지 않음 |
> 하나의 low나 col 삭제 <
- drop method를 이용해 선택한 값들을 삭제하기
obj = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])
obj
new_obj = obj.drop('c')
new_obj
obj.drop(['d', 'c'])
- DF에서는 low와 col 모두 삭제 가능
- drop의 파라미터로 low 이름을 리스트에 넣어주면 해당 low를 모두 삭제함
- column의 경우 axis=1 또는 axis=’columns’를 파라미터로 넣어주면 col을 삭제함
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
data.drop('two', axis=1)
- drop 함수처럼 Series와 DataFrame의 크기나 형태를 변경하는 함수는 새로운 객체를 반환하는 대신 원본 객체를 변형함
- inplace 옵션은 버려지는 값을 모두 삭제해버림
obj.drop('c', inplace=True)
obj
> 인덱싱, 선택하기, 거르기 <
- Series의 index는 numpy 배열의 index와 유사하게 동작하지만 정수가 아니어도 된다는 특징이 있음
obj = pd.Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
obj
obj['b'] # 1.0
obj[1] # 1.0
- 라벨 이름으로 슬라이싱을 하는 경우 시작점과 끝점을 포함함
obj['b':'c']
- 슬라이싱 문법으로 선택된 영역에 값을 대입하는 것은 그대로 대입됨
- index로 DF에서 하나 이상의 col값을 가져올 수 있음
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
data
data[['three', 'one']]
- 불리안이나 슬라이싱으로도 low를 선택할 수 있음
data[:2]
data[data['three'] > 5]
- loc: 축이름으로 선택할 때 이용
- iloc: 정수 index로 선택할 때 이용
data.loc['Colorado', ['two', 'three']]
data.iloc[2, [3, 0, 1]]
- 슬라이싱, 단일라벨, 라벨리스트도 지원
반응형
'개인활동 > 파이썬 라이브러리를 활용한 데이터 분석' 카테고리의 다른 글
Chapter 8. 데이터 준비하기: 조인, 병합, 변형 (1) (0) | 2022.03.14 |
---|---|
Chapter 5. Pandas 시작하기 (5) (0) | 2022.03.04 |
Chapter 5. Pandas 시작하기 (4) (0) | 2022.03.03 |
Chapter 5. Pandas 시작하기 (3) (0) | 2022.03.03 |
Chapter 5. Pandas 시작하기 (1) (0) | 2022.03.01 |