2. 파이썬으로 데이터 주무르기, pandas

pandas를 활용해서 데이터프레임을 다뤄봅시다.

  1. Pandas 시작하기
    • prerequisite : Table
    • pandas import하기
  2. Pandas로 1차원 데이터 다루기 - Series
    • Series 선언하기
    • Series vs ndarray
    • Series vs dict
    • Series에 이름 붙이기
  3. Pandas로 2차원 데이터 다루기 - dataframe
    • dataframe 선언하기
    • from csv to dataframe
    • dataframe 자료 접근하기

수업에 사용된 covid 데이터

 


I. pandas 시작하기

 

 

Prerequisite : Table

  • 행과 열을 이용해서 데이터를 저장하고 관리하는 자료구조 (컨테이너)
  • 주로 행은 개체, 열은 속성을 나타냄

 

 

Pandas 시작하기

import pandas 를 통해서 진행

import pandas as pd

 

 

 


II. pandas로 1차원 데이터 다루기 - Series

 

 

Series?

  • 1-D labeled array
  • 인덱스를 지정해줄 수 있음

 


Series + Numpy

  • Series는 ndarray와 유사하다.

 

 

이전의 파이썬의 List 때에는 이런 기능을 사용할 수 없었다. (함수를 만들어야됨)
pandas의 Series는 이런 기능을 지원하기 때문에 편리하게 데이터를 필터링해서 가져올 수 있다.

 

 

 

Series와 Numpy와는 유사한 부분이 많다. 

그렇기 때문에 Numpy의 내장함수들을 Series에서 사용 가능하다.

 

 

 

 


Series + dict

  • Series는 dict와 유사하다.

 

 

 

 

딕셔너리 데이터에서 값을 가져오는데, 키가 없으면 KeyError 발생

\(\Rightarrow\) .get() 함수를 사용

 

 

 

 


Series에 이름 붙이기

  • 'name' 속성을 가지고 있다.
  • 처음 Series를 만들 때 이름을 붙일 수 있다.

 

 

 

 


III. Pandas로 2차원 데이터 다루기 - dataframe

dataframe??

  • 2-D labeled table (쉽게 말해 엑셀의 표 생각하면 됨)
  • 인덱스를 지정할 수 있다.

 

DataFrame은 리스트만 가지고는 만들기가 어렵다.

따라서, 딕셔너리로 만드는게 쉽다.

 

 

 

 

DataFrame은 여러가지 데이터 타입을 담을 수 있기 때문에 이를 확인해주는 작업이 중요

나중에 EDA에서 사용된다.

 

dtype 확인
Numpy인 경우 : numpy.array.dtype

pandas인 경우 : .dtypes 사용 (DataFrame에는 여러 컬럼이 존재하기 때문에 's'가 붙여짐)

 

 

 


From CSV to Dataframe

  • comma Separated Value(CSV)를 DataFrame으로 생성해줄 수 있다.
  • .read_csv() 를 이용

 

 

기존의 데이터를 dataframe화 시켜서 많이 사용한다.
대중적으로 csv 파일을 사용

 

187 rows × 15 columns

 

 

 


Pandas 활용 1. 일부분만 관찰하기

  • 데이터가 너무 방대해서 다 참조하는 것이 힘들기 때문에

 

 

  1. head(n) : 처음 n개의 데이터 참조

 

 

  1. tail(n) : 마지막 n개의 데이터를 참조

 

 

 

 


Pandas 활용 2. 데이터 접근하기

  • df['column_name'] or df.column_name

 

 

 


Honey Tip! DataFrame의 각 column은 "Series"다.

  • Series에서 배웠던 것들을 활용가능

 

 

 


Pandas 활용 3. "조건"을 이용해서 데이터 접근하기

 

 

 

 

 

 


Pandas 활용 4. 행을 기준으로 데이터 접근하기

 

 

 

인덱스를 이용해서 가져오기 : .loc[row, col]

 

 

 

숫자 인덱스를 이용해서 가져오기 : .iloc[row_idx, col_idx]

 

 

 


Pandas 활용 5. groupby

데이터 테이블을 3가지 과정을 거쳐서 더 좋은 결과를 얻는 것

  1. Split : 특정한 "기준"을 바탕으로 DataFrame을 분할
  2. Apply : 통계함수 - sum(), mean(), median(), ... 을 적용해서 각 데이터를 압축
  3. Combine : Apply된 결과를 바탕으로 새로운 Series를 생성 (group_key : applied_value)

groupby()