본문 바로가기
IT/Data Analysis with python

판다스 시작하기: Series, DataFrame

by Cyber_ 2024. 6. 2.

0. Pandas

판다스는 고수준의 자료구조와 파이썬을 통한 빠르고 쉬운 데이터 분석 도구를 제공한다. for문을 사용하지 않고 데이터를 처리한다거나 배열 기반의 함수를 제공하는 등 넘파이의 배열 기반의 계산 스타일을 많이 차용했다.
판다스는 넘파이의 스타일을 많이 차용했지만 가장 큰 차이점은 표 형식의 데이터나 다양한 형태의 데이터를 다루는데 초점을 맞춰 설계했다는 점이다.

1. 판다스 자료구조

Series

  • 일련의 객체를 담을 수 있는 1차원 배열 같은 자료구조
    import numpy as np
    import pandas ad pd
    from pandas import Series, DataFrame
    

obj = pd.Series([4, 7 -5, 3], index = ["d", "b", "a", "c"]) # index의 default는 오름차순 숫자
obj

obj.array # obj의 속성을 얻을 수 있음
obj.index # obj의 속성을 얻을 수 있음

- 파이썬 딕셔너리 객체로부터 Serires를 생성할 수도 있고, to_dict를 통해 변환할 수 도 있다.
```python
sdata = {"Ohio": 35000, "Texas": 71000, "Oregon": 16000, "Uath": 5000}
obj3 = pd.Sereies(sdata)
obj3.to_dict()
  • 누락된 데이터를 찾을 수 있다
    pd.isna(obj4)
    pd.notna(obj4)
  • Series는 색인과 레이블로 자동 정렬이 가능하다.
    obj3+obj4 # 자동정렬이 되서 더해진다

DataFrame

  • DataFreme은 행과 열에 대한 색인을 가지며, 색인의 모양이 같은 Series 객체를 담고 있는 파이썬 딕셔너리로 생각하면 편하다.
    data = {"state":["Ohio", "Ohio","Ohio", "Nevada", "Nevada","Nevada"],
          "year: [2000, 2001, 2002, 2002, 2003, 2003],
          "pop": [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]
    frame = pd.DataFrame(data)
  • head() 를 통해 처음 5개, tail()를 통해 마지막 5개 행을 출력할 수 있다.
  • 딕셔너리에 없는 값을 columns에 넘기면 결과에 결측치(missing value)가 표시된다.
  • del 예약어를 사용해 열이나 행을 삭제할 수 있다.
    del frame2["Ohio"]
  • DataFrame의 색인을 이용해서 얻ㄴ은 열은 내부데이터에 대한 뷰일 뿐이며 복사가 이루어 지지 않느다. 따라서 얻은 Series 객체에 대한 변경은 실제 DataFrame에 반영된다. 복산이 필요할 때는 Series의 copy()를 사용하자.
  • DataFrame 생성을 위한 입력 데이터의 종류
    • 2차원 ndarray
    • 배열, 리스트, 튜플의 딕셔너리
    • 넘파이의 구조화 배열
    • Series의 딕셔너리
    • 딕셔너리의 딕셔너리, Series의 리스트
    • 다른 DataFrame
    • 넘파이 MaskedArray
  • DateFrame의 탐색
    frame3.index.name = "year"
    frame2.column.name = "state"
  • DateFrame의 to_numpy()는 DataFrame에 포함된 데이터를 2차원 형태의 ndarray로 변환한다.