1. Intro
그동안 배운 것은 행과 열, 특정 조건을 만족하는 데이터만 조회하는 것을 다루었다. 이번시간에는 조금 함수를 활용하여 데이터를 가공하는 법을 알려드리고자 한다.
만약, 판다스 기초적인 부분부터 확인 하고 싶다면 아래 글들을 차례대로 해보기를 권한다.
2019/10/30 - [Python/[Python] 데이터 전처리] - [Python] 판다스 자료 구조 - Series
[Python] 판다스 자료 구조 - Series
Intro 파이썬의 수많은 라이브러리 중, 엑셀데이터를 수집하고 정리하는 데 최적화된 도구가 판다스 라이브러리라고 볼 수 있다. 판다스를 배우면 데이터과학의 80~90% 업무를 처리할 수 있고, 데이터과학자에게..
cozydatascientist.tistory.com
2019/11/04 - [Python/[Python] 데이터 전처리] - [Python] 판다스 자료 구조 - 데이터프레임
Pandas Dataframe
데이터프레임은 2차원 배열의 행과 열로 구성되어져 있다. 대부분의 사람들이 알고 있는 마이크로소프트사의 EXCEL, SQL Table 등을 생각하면 데이터프레임을 쉽게 이해할 수 있다. 판다스에서 가장 많이 사용되는 객체이며, 실제 파이썬을 활용한 데이터 분석을 하고 싶다면 필수적으로 알아야 하는 내용이다. 기본적으로 Python은 행렬 연산에 최적화된 언어라고 할 수 있지만, 판다스 라이브러리는 R의 데이터프레임에서 유래했다고 알려져 있다. 여기서 잠깐
chloevan.github.io
[Python] 판다스 자료 구조 - 데이터프레임
데이터프레임은 2차원 배열의 행과 열로 구성되어져 있다. 대부분의 사람들이 알고 있는 마이크로소프트사의 EXCEL, SQL Table 등을 생각하면 데이터프레임을 쉽게 이해할 수 있다. 판다스에서 가장 많이 사용되는..
cozydatascientist.tistory.com
2019/11/08 - [Python/[Python] 데이터 전처리] - [파이썬] 판다스 활용 데이터 전처리 - 열 다루기
[파이썬] 판다스 활용 데이터 전처리 - 열 다루기
1. Intro 지금까지 배운 것은 데이터프레임으로 변환하는 내용이었다. 데이터프레임으로 변환한다는 뜻은 결과적으로 연구자 또는 분석 요건에 맞춰서 데이터를 가공할 줄 알아야 한다. Pandas를 배우는 궁극적인..
cozydatascientist.tistory.com
2019/11/12 - [Python/[Python] 데이터 전처리] - [파이썬] 판다스 활용 데이터 전처리 - 행 다루기
[파이썬] 판다스 활용 데이터 전처리 - 행 다루기
1. Intro 지난 시간에는 열(=Column)을 다루는 것을 배웠다. 구체적으로는 열을 선택하는 방법, 추가하는 방법, 삭제하는 방법을 배웠다. 이번에는 행을 다루는 것을 배워보도록 해보자. [지난 글] 2019/11/12 - [..
cozydatascientist.tistory.com
2019/11/15 - [분류 전체보기] - [파이썬] 판다스를 활용한 행과 열 동시에 다루기
[파이썬] 판다스를 활용한 행과 열 동시에 다루기
이번 시간에는 지난시간에 기본적인 내용에서 실무에서 주로 사용하는 iloc와 loc를 활용해서 행과 열을 동시에 다루는 법에 대해 알려준다. 2019/11/08 - [Python/[Python] 데이터 전처리] - [파이썬] 판다스 활..
cozydatascientist.tistory.com
2. Data Transformation(데이터 가공)
이번에는 기상 데이터를 활용할 것이며, 마찬가지로 데이터는 DataCamp를 통해서 수집하였다.
import pandas as pd
url = 'https://assets.datacamp.com/production/repositories/502/datasets/6c4984cb81ea50971c1660434cc4535a6669a848/pittsburgh2013.csv'
weather = pd.read_csv(url)
weather.shape
weather.head()
총 365개의 행과 23개의 변수로 이루어진 데이터셋을 확인해보자. 참고적으로 위 데이터는 `Pittsburgh` 2013년 기상 데이터로 확인된다. 사용자 정의 함수를 만들고, 데이터의 칼럼 변환시 참고하도록 해보자.
2.1 apply()
먼저 `.apply()`함수를 이용해보자.
사용자 정의 함수를 작성한 후, 적용하는 소스코드다. 사용자 정의 함수는 화씨 온도단위를 섭씨 온도단위로 바꾸는 것이다. 이 때 변환하려는 변수는 `Mean TemperatureF`와 `Mean Dew PointF`이다.
def to_celsius(F):
return 5/9*(F-32)
df_celsius = weather[['Mean TemperatureF', 'Mean Dew PointF']].apply(to_celsius)
df_celsius.columns = ['Mean TemperatureC', 'Mean Dew PointC']
print(df_celsius.head())
Mean TemperatureC Mean Dew PointC
0 -2.222222 -2.777778
1 -6.111111 -11.111111
2 -4.444444 -9.444444
3 -2.222222 -7.222222
4 -1.111111 -6.666667
한국사람에게 친숙한 겨울철 영하온도가 기록되는 것을 확인할 수 있다.
2.2 map()
`.map()`함수를 사용하려면 데이터 전체보다는 Series 타입에서만 사용해야만 한다. 좀 더 쉽게 표현하면 한 변수에 대해서만 적용이 가능하다는 뜻이다. 이번에는 election 데이터를 활용하도록 한다.
import pandas as pd
url = 'https://assets.datacamp.com/production/repositories/502/datasets/502f4eedaf44ad1c94b3595c7691746f282e0b0a/pennsylvania2012_turnout.csv'
election = pd.read_csv(url, index_col = "county")
election.head()
winner 변수를 활용해서 새로운 변수 group를 만들 것이다. Romney에 해당하면 A Obama에 해당하면 B 이렇게 적용할 것이다. 보통 이런 경우에는 조건문 if() 함수가 떠오르겠지만, .map() 함수를 사용하면 보다 쉽게 데이터를 변환할 수 있다.
A_B = {'Romney' : 'A', 'Obama' : 'B'}
election['group'] = election.winner.map(A_B)
print(election.head())
state total Obama Romney winner voters turnout \
county
Adams PA 41973 35.482334 63.112001 Romney 61156 68.632677
Allegheny PA 614671 56.640219 42.185820 Obama 924351 66.497575
Armstrong PA 28322 30.696985 67.901278 Romney 42147 67.198140
Beaver PA 80015 46.032619 52.637630 Romney 115157 69.483401
Bedford PA 21444 22.057452 76.986570 Romney 32189 66.619031
margin group
county
Adams 27.629667 A
Allegheny 14.454399 B
Armstrong 37.204293 A
Beaver 6.605012 A
Bedford 54.929118 A
위에서 볼 수 있는 것처럼 group 변수가 생겼고, Romney와 Obama에 매칭되는 A, B값이 들어간 것을 확인할 수 있다.
2.3 vectorized functions()
from scipy.stats import zscore
turnout_zscore = zscore(election['turnout'])
election['turnout_zscore'] = turnout_zscore
print(election.head())
state total Obama Romney winner voters turnout \
county
Adams PA 41973 35.482334 63.112001 Romney 61156 68.632677
Allegheny PA 614671 56.640219 42.185820 Obama 924351 66.497575
Armstrong PA 28322 30.696985 67.901278 Romney 42147 67.198140
Beaver PA 80015 46.032619 52.637630 Romney 115157 69.483401
Bedford PA 21444 22.057452 76.986570 Romney 32189 66.619031
margin group turnout_zscore
county
Adams 27.629667 A 0.853734
Allegheny 14.454399 B 0.439846
Armstrong 37.204293 A 0.575650
Beaver 6.605012 A 1.018647
Bedford 54.929118 A 0.463391
z점수는 표준점수로 이해하면 된다. 양수가 나왔다면 평균보다 상위에 있는 것이고, 음수가 나왔다면 평균보다 하위에 위치에 있다는 뜻이다.
지금까지 판다스의 기본을 다루었다.
다음시간에는 인덱싱 다루는 법에 공유하겠다.
'Python > [Python] 데이터 전처리' 카테고리의 다른 글
[파이썬] 판다스를 활용한 행과 열 동시에 다루기 (0) | 2019.11.15 |
---|---|
[파이썬] 판다스 활용 데이터 전처리 - 행 다루기 (0) | 2019.11.12 |
[파이썬] 판다스 활용 데이터 전처리 - 열 다루기 (0) | 2019.11.08 |
[Python] 판다스 자료 구조 - 데이터프레임 (0) | 2019.11.04 |
[Python] 판다스 자료 구조 - Series (0) | 2019.10.30 |