본문 바로가기

일상/서평

파이썬 데이터 분석 & 시각화 웹 대시보드 제작하기

반응형

안녕하세요.

요즘 파이썬을 배워보고 싶어서 다양한 책을 읽게 되는데요.

이번에 읽은 책은 앤써북에서 출간한 파이썬 데이터 분석 & 시각화 웹 대시보드 제작하기입니다.

책의 저자이신 박찬의 선생님은 국내 반도체 기업에서 빅데이터를 활용한 반도체 불량 분석 및 성능 개선 업무를 수행하는 엔지니어입니다. 사내 데이터 사이언스 강사로 선발되어 파이썬의 잠재력을 널리 퍼트리고 있습니다.

파이썬 데이터 분석 & 시각화 웹 대시보드 제작하기 책은 5개의 장으로 구성되어 있는데요.

1장에서는 Pandas 라이브러리 기초 지식을 간략하게 다루고요.

2장에서는 Pandas 라이브러리를 이용해서 다양한 데이터 셋을 분석하면 실용적인 활용 팁을 소개합니다.

3장에서는 파이썬 시각화에서 가장 대중적인 Matplotlib, Seaborn 라이브러리와 모던한 시각화 라이브러리 Plotly에 대한 기초적인 내용을 담고 있습니다.

4장에서는 시각화에 사용되는 실무적인 팁을 소개하고요.

마지막 5장에서는 웹 대시보드를 제작하기 위한 Streamlit 라이브러리를 소개합니다.

판다스를 이용한 파이썬 데이터 분석 기초

Pandas는 파이썬에서 구조적인 데이터를 다루는 데에 최적화된 라이브러리입니다.

방대한 라이브러리이기 때문에 책에서는 데이터 정제 및 분석에 초점을 맞추어 기초 개념을 설명하고 있고요.

자주 사용하는 메서드 및 메서드 체인을 소개합니다.

Pandas Series 및 Dataframe

판다스 라이브러리를 활용하기 위해 가장 기초가 되는 것이 dataframe인데요.

Dataframe은 엑셀의 스프레드시트처럼 행과 열로 구성된 단순한 테이블입니다.

 
import pandas as pd import numpy as np df = pd.read_csv('./data_analysis_adv-main/bike_rentals.csv') df.iloc[2, 3] = np.nan # 결측치를 임의로 만들기 위해 추가 df.head(10)

첫 번째 소스인데요.

판다스를 어떻게 사용하는지 잘 보여주는 예제입니다.

실제 bike_rentals.csv을 열었을 때의 파일인데요.

이 원 소스 파일에서 iloc[2, 3] 값에 결측치를 만드는 소스입니다.

실제로 주피터 노트북을 실행시켰는데요.

보시는 것처럼 처리가 된 것을 알 수 있습니다.

저도 데이터 분석은 처음 해보는 작업이라 조금의 시행착오를 겪으면서 소스를 코딩하고 있는데요.

책에서는 문법적인 부분을 자세하게 설명해 줘서 이해하기 쉽습니다.

책에서 설명하는 부분은 iloc, loc 메소드인데요.

차이점을 잘 알아 두면 된다고 합니다.

사용하는 방법은 다음 소스를 참고하세요.

 

import pandas as pd import numpy as np df = pd.read_csv('./data_analysis_adv-main/bike_rentals.csv') df.loc[2:4, 'workingday' : 'temp']
df = pd.read_csv('./data_analysis_adv-main/bike_rentals.csv') df.iloc[2:5, 3:6]

결괏값은 동일하지만 iloc, loc 메소드의 입력값에는 차이가 나는 것을 확인할 수 있습니다.

iloc는 리스트 형태라고 생각하시면 좋겠네요.

loc[원하는 조건]

df.loc[df['season'] == 2]

이렇게 조건값을 넣으면 조건에 맞는 행이 선택이 됩니다.

물론 하나의 조건만 되는 것은 아닙니다.

season이 2인 행 중에서 casual, registered, count 열만 선택하려면 어떻게 해야 할까요?

df.loc[df['season'] == 2, 'casual':]
#season이 1이 아니면서 동시에 weather가 2가 아닌 모든 행 선택 df.loc[(df['season'] != 1) & (df['weather'] != 2)] #season이 1이 아니면서 동시에 weather가 2가 아닌 모든 행 선택, ~ 사용 df.loc[~(df['season'] == 1) & ~(df['weather'] == 2)]

이외에도 엑셀에서 함수를 사용하는 것처럼 다양하게 원하는 값을 가져올 수 있습니다.

&는 and, |는 or, ~는 not, 물론 !=를 사용해도 됩니다.

df = pd.read_csv('./data_analysis_adv-main/bike_rentals.csv') df.info()

info 메소드를 통해 데이터 셋의 구조를 살필 수 있습니다.

<class 'pandas.core.frame.DataFrame'>

RangeIndex: 10886 entries, 0 to 10885

Data columns (total 12 columns):

# Column Non-Null Count Dtype

--- ------ -------------- -----

0 datetime 10886 non-null object

1 season 10886 non-null int64

2 holiday 10886 non-null int64

3 workingday 10886 non-null int64

4 weather 10886 non-null int64

5 temp 10886 non-null float64

6 atemp 10886 non-null float64

7 humidity 10886 non-null int64

8 windspeed 10886 non-null float64

9 casual 10886 non-null int64

10 registered 10886 non-null int64

11 count 10886 non-null int64

dtypes: float64(3), int64(8), object(1)

memory usage: 1020.7+ KB

데이터 셋을 보면 dtypes: float64(3), int64(8), object(1)이라고 나오는데요.

select_dtypes 메소드를 사용해서 int 변수만 선택해 보겠습니다.

df.select_dtypes(include = 'int')

int를 제외한 나머지 변수를 선택하고 싶다면

df.select_dtypes(exclude = 'int')

간단하게 메소드만 바꿔서 출력할 수 있습니ㅏ.

 

filter 메서드를 이용한 행과 열 선택

df = pd.read_csv('./data_analysis_adv-main/bike_rentals.csv') df = df.set_index('datetime') df.filter(like='00:00:00', axis=0)

이렇게 하면 날짜 시:분:초 형태에서 filter 메소드 like 인자를 사용하여 '00:00:00'을 포함하는 인덱스만 선택하게 했습니다.

마지막 axis=0는 행을 의미하고, axis=1은 열을 의미합니다.

df.filter(items=['humidity', 'windspeed'])

items 인자를 이용해서 필터링하는 방법

regex 인자를 사용하는 방법이 있습니다.

regex (also regexp) NOUN a regular expression.

이것이 사전적인 의미인데요.

df.filter(regex = 'in.s')

regex 인자에 in.s가 전달됩니다.

.은 한 숫자, 문자를 의미합니다.

그래서 in(한 숫자, 문자) s가 포함된 열을 찾게 됩니다.

rename을 사용한 행과 열 이름 변경하기

rename {"변경 대상 인덱스나 열 이름" : "변경하고자 하는 이름"}

df.rename( {'registered':'registered_user', 'casual':'unregistered_user'}, axis=1 )

이렇게 칼럼 이름이 변경된 것을 확인할 수 있습니다.

저자는 엔지니어 출신으로 실무 경험을 바탕으로 책을 집필했기 때문에 데이터 분석에 입문하는 독자들의 시행착오를 줄이고자 핵심 내용만 모았다고 합니다.

그래서 실전 꿀 팀은 모아 놓았기 때문에 처음 시작하는 사람도 일반적으로 파이썬 데이터 분석에 대한 개념을 잡을 수 있게 잘 정리된 책입니다.

요즘 인공지능이 활성화되면서 다양한 자격증이 나왔는데요.

얼마 전에 빅데이터 분석 자격증에 대해 공부했는데요.

파이썬 데이터 분석은 이런 인공지능이나 빅데이터 분석에 기본이 되기 때문에 자격증 실무를 배울 수 있어서 좋았습니다.

전 이 말이 기억에 많이 남는데요.

동료가 엑셀로 고전할 때,

나는 이미 퇴근 준비를 마쳤다!

저자가 직접 회사에서 일하면서 경험한 것을 책에 담았기 때문에 엑셀의 한계를 벗어나고 싶은 분이라면 한번 도전해 보시는 것도 좋겠네요. 대략 10일만 투자하면 개념을 이해할 수 있을 것 같아서 도움이 많이 될 것 같네요.

반응형