새벽을 밝히는 붉은 달

2021.04.05 오늘의 기록 본문

Developer/Record

2021.04.05 오늘의 기록

자윰 2021. 4. 5. 23:52

파이썬 라이브러리를 활용한 데이터 분석 - 웨스 맥키니


  • 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