새벽을 밝히는 붉은 달
2021.04.05 오늘의 기록 본문
파이썬 라이브러리를 활용한 데이터 분석 - 웨스 맥키니
- pandas는 NumPy 기반에서 개발되어 NumPy를 사용하는 애플리케이션에서 쉽게 사용할 수 있다
- Pandas에서는 Series 와 DataFramde이라는 두 가지 자료구조에 익숙해질 필요가 있다.
<Series>
- 일련의 객체를 담을 수 있는 1차원 배열 같은 자료 구조
- index라고 하는 배열의 데이터에 연관된 이름을 가지고 있다.
- Series 객체의 문자열 표현은 왼쪽에 색인을 보여주고 오른쪽에 해당 색인의 값을 보여준다.
- Boolean 배열을 사용해서 값을 걸러내거나, 산술 곱셈을 수행하거나, 수학 함수를 적용하는 등 NumPy 배열 연산을 수행해도 색인-값 연결은 유지된다
- 파이썬의 딕셔너리에 데이터를 저장해야 한다면, 파이썬 사전 객체로부터 Series 객체를 생성할 수도 있다.
- pandas의 isnull과 notnull 함수는 누락된 데이터(NaN)를 찾을 때 사용된다.
- Series 객체와 Series의 색인은 모두 name 속성이 있다.
<DataFrame>
- 표와 같은 스프레드시트 형식의 자료 구조
- 여러 개의 칼럼이 있는데, 각 칼럼은 서로 다른 종류의 값(숫자, 문자열, 불리언 등)을 담을 수 있다
- 데이터를 내부적으로 2차원 형식으로 저장하므로, 고차원의 표 형식 데이터를 Hierarchical indexing을 통해 쉽게 표현할 수 있다
- DataFrame 객체는 다양한 방법으로 생성할 수 있지만 가장 흔하게 사용되는 방법은 같은 길이의 리스트에 담긴 사전을 이용하거나 NumPy 배열을 이용하는 방법이다.
- Series를 대입하면 DataFrame의 색인에 따라 값이 대입되며, 없는 색인에는 값이 대입되지 않는다.
- 없는 칼럼을 대입하면 새로운 칼럼이 생성된다.
- del 예약어를 사용해서 칼럼을 삭제할 수 있다.
- 중첩된 사전이 있다면, 바깥에 있는 사전의 키 값이 칼럼이 되고 안에 있는 키는 로우가 된다
- values 속성은 DataFrame에 저장된 데이터를 2차원 배열로 반환한다.
- DataFrame 생성자에서 사용 가능한 입력 데이터
2차원 ndarray | 데이터를 담고 있는 행렬. 선택적으로 로우와 칼럼의 이름을 전달할 수 있다. |
배열, 리스트, 튜플의 사전 | 사전의 모든 항목은 같은 길이를 가져야 하며, 각 항목의 내용이 DataFrame의 칼럼이 된다 |
NumPy의 구조화 배열 | 배열의 사전과 같은 방식으로 취급된다 |
Series 사전 | Series의 각 값이 칼럼이 된다. 명시적으로 색인을 넘겨주지 않으면 각 Series의 색인이 하나로 합쳐져서 로우의 색인이 된다. |
사전의 사전 | 내부에 있는 사전이 칼럼이 된다. 키 값은 'Series의 사전'과 마찬가지로 합쳐져 로우의 색인이 된다. |
사전이나 Series의 리스트 | 리스트의 각 항목이 DataFrame의 로우가 된다. 합쳐진 사전의 키 값이나 Series의 색인이 DataFrame 칼럼의 이름이 된다. |
리스트나 튜플의 리스트 | '2차원 ndarray'와 같은 방식으로 취급된다. |
다른 DataFrame | 색인이 따로 지정되지 않는다면 DataFrame의 색인이 그대로 사용된다. |
NumPy MaskedArray | '2차원 ndarray'와 같은 방식으로 취급되지만 마스크 값은 반환되는 DataFrame에서 NA 값이 된다 |
<색인(index) 개체>
- 표 형식의 데이터에서 각 로우와 칼럼에 대한 이름과 다른 메타데이터 (축의 이름 등)을 저장하는 객체
- 색인 객체는 변경할 수 없다 -> 자료 구조 사이에서 안전하게 공유될 수 있다
- pandas의 주요 Index 객체
Index | 가장 일반적인 Index 객체이며, 파이썬 객체의 NumPy 배열 형식으로 축의 이름을 표현한다 |
Int64Index | 정수 값을 위한 특수한 Index |
MultiIndex | 단일 축에 여러 단계의 색인을 표현하는 계층적 색인 객체. 튜플의 배열과 유사하다고 볼 수 있다. |
DatetimeIndex | 나노초 타임스탬프를 저장한다(NumPy의 datetime64 dtype으로 표현된다) |
PeriodIndex | 기간 데이터를 위한 특수한 Index |
- 색인 메서드와 속성
append | 추가적인 Index 객체를 덧붙여 새로운 색인을 반환한다 |
diff | 색인의 차집합을 반환한다 |
intersection | 색인의 교집합을 반환한다 |
union | 색인의 합집합을 반환한다 |
isin | 넘겨받은 값이 해당 색인 위치에 존재하는지 알려주는 불리언 배열을 반환한다 |
delete | i 위치의 색인이 삭제된 새로운 색인을 반환한다 |
drop | 넘겨받은 값이 삭제된 새로운 색인을 반환한다 |
insert | i 위치에 값이 추가된 새로운 색인을 반환한다 |
is_monotonic | 색인이 단조성을 가진다면 True를 반환한다 |
is_unique | 중복되는 색인이 없다면 True를 반환한다 |
unique | 색인에서 중복되는 요소를 제거하고 유일한 값만을 반환한다 |
<재색인>
- reindex는 새로운 색인에 맞도록 객체를 새로 생성하는 기능이다
- Series 객체에 대해 reindex를 호출하면 데이터를 새로운 색인에 맞게 재배열하고, 없는 색인 값이 있다면 비어있는 값을 새로 추가한다.
- 시계열 같은 순차적인 데이터를 재색인할 때 값을 보강하거나 채워 넣어햐 할 경우, method 옵션을 이용해서 해결할 수 있으며, ffill 메서드를 이용하면 앞의 값으로 누락된 값을 채워 넣을 수 있다.
'Developer > Record' 카테고리의 다른 글
2021.04.01 오늘의 기록 (0) | 2021.04.02 |
---|---|
2021.03.22 오늘의 기록 (0) | 2021.03.22 |
2021.03.15 오늘의 기록 (0) | 2021.03.15 |
2021.03.09 오늘의 기록 (0) | 2021.03.10 |
2021.03.08 오늘의 기록 (0) | 2021.03.09 |
Comments