멋사 ai스쿨 2번째 자기주도 학습 시간~.~
뭘 하면 좋을지 고민하다가 캐글 데이터로 시각화를 해보기로 결정했다.
plot 수업 시간에 코드 받아쓰기만 했던 슬픈 기억.....
시각화에 사용할 데이터를 다운받고 업로드한 다음
(colab을 이용했기 때문에 파일로 업로드 했다)
https://www.kaggle.com/competitions/bike-sharing-demand/overview
1. 파이썬 환경 설정
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
데이터를 불러와서 확인하기
데이터 이름이 train이어서 train data => td로 설정했다
td = pd.read_csv('train.csv')
td.head(3)
데이터 요약
td.info()
결측치 확인
td.isnull().sum()
2. 데이터 시각화 준비
datetime 컬럼을 datetime 속성으로 변경해주고 각각의 변수에 지정해준다
td["datetime"] = pd.to_datetime(td["datetime"])
td["year"] = td["datetime"].dt.year
td["month"] = td["datetime"].dt.month
td["day"] = td["datetime"].dt.day
td["time"] = td["datetime"].dt.time
3. 데이터 시각화
데이터를 확인하기 위해 전체 데이터셋을 histplot으로 시각화했다
td.hist(figsize=(12, 10), bins=70)
plt.show()
barplot
연도별 대여량을 barplot으로 확인해보았다
sns.barplot(data = td, x = "year", y = "count")
월별 대여량
1월 대여량의 2배 수준으로 6~10월의 대여량이 많음을 확인할 수 있다.
시간별 대여량
다른 변수에 비해 범위가 넓어서 크기를 따로 지정해주었다.
오전 8시와 오후 5시, 6시의 대여량이 눈에 띈다. 출퇴근 시간에 주로 이용한다고 추측해볼 수 있다.
plt.figure(figsize=(20, 7))
sns.barplot(data = td, x = "time", y = "count")
boxplot
다음은 계절별 대여량을 boxplot으로 시각화해보았다.
봄 여름 가을 겨울 순서로 여름과 가을에 대여량이 높다는 것을 확인할 수 있다. 하지만 역시 직관적으로 이해하기는 어렵다.
sns.boxplot(data = td, x= "season", y = "count")
barplot이 조금 더 이해하기 편하다.
sns.barplot(data = td, x = "season", y = "count")
lineplot
추세 확인에 용이하다. 1월부터 쭉 증가하던 대여량이 6월에 피크를 찍고 천천히 감소하고 있다.
sns.lineplot(data=td, x="month", y="count")
heatmap
heatmap을 통한 상관계수 시각화까지 진행하고 싶었지만 상관계수 구하기에서 막혔다. 다른 사람이 짠 코드를 봐도 전혀 이해가 안 되는 걸 보니 상관계수의 개념부터 다시 공부해야할듯 하다.
참고자료
https://mintaewon.github.io/2021/01/kaggle-%EC%9E%90%EC%A0%84%EA%B1%B0-%EC%88%98%EC%9A%94-%EC%98%88%EC%B8%A1bike-sharing-demand-1eda/
https://studio-kimhippo.tistory.com/33