갑자기 머신러닝을 해야할 일이 생겼다.
부랴부랴 Kaggle 사이트에서 입문용 데이터셋 찾아서 공부하던 중
인프런 강의에서 듣는 코드가 실행 안되는 부분이 있어 블로그를 켜게 되었다.
* 여기까진 kaggle 기본 제공 코드
import numpy as np
import pandas as pd
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
dir_data = os.path.join(dirname, filename)
print(dir_data)
: os.walk() 뒤 경로에 있는 데이터 목록을 찾아온 다음, dir_data 변수에 할당한다.
* 필요한 python library (시각화) import
import matplotlib as plt
import seaborn as sns
import missingno as msno # 결측치 시각화용
* 데이터 읽어오기, 형태 파악
df = pd.read_csv(dir_data, parse_dates=['timestamp']) # 여기서 왜 timestamp를 parse_dates에 넣는지 아직 모름
df.head() # 상위 다섯개 데이터 보여줘
print('Structure of Data:', df.shape) # 데이터의 행, 열
print('Type of Data:', df.dtypes) # 각 행, 열에 들어있는 데이터들의 타입
print('Columns of Data:', df.columns) # 모든 열 정보
df.isna().sum() #데이터 중 결측치 있는지 확인 -> 모두 0으로 나오면 NaN 값인 데이터가 없는거
msno.matrix(df) # 결측치가 있는 행은 하얀색으로 표시된다
plt.show()
* 데이터 재분류
-> 지금 분류되어있는 데이터만으로는 학습에 적합하게 만들기 힘들 때, 새로 분류를 한다.
ex) timestamp 행에 2015-01-04 01:00:00 인 데이터를 year / month / dayofweek / hour로 분류하여 년도별/월별/주별/시간별 데이터로 볼 수 있게 변경
# timestamp 라는 이름의 열에서 year를 추출해서 df의 'year'라는 열에 넣겠다.
df['year'] = df['timestamp'].dt.year
df['month'] = df['timestamp'].dt.month
df['dayofweek'] = df['timestamp'].dt.dayofweek
df['hour'] = df['timestamp'].dt.hour
df.head()
# 새로 분류한 데이터에 값이 몇 개 있는지 확인
df['year'].value_counts()
※ 인프런 강의에서 처음 에러났던 부분이 여기였다...
# 데이터 시각화
# 연도별 자전거 이용객 수 표
import seaborn as sns
b,a = plt.subplots(1,1,figsize=(10,5))
sns.boxplot(x=df['year'], y=df['cnt'])
b,a = plt.subplots(1,1,figsize=(10,5))
sns.boxplot(x=df['month'], y=df['cnt'])
'개발 > python' 카테고리의 다른 글
Kaggle - London Bike Sharing (6) 머신러닝 기반 예측값 분석 (2) | 2023.10.05 |
---|---|
Kaggle - London Bike Sharing (5) 머신러닝 기반 학습,예측 (0) | 2023.10.03 |
Kaggle - London Bike Sharing (4) 딥러닝 모델 구성, 학습 (1) | 2023.10.03 |
Kaggle - London Bike Sharing (3): 데이터셋 split (0) | 2023.10.03 |
Kaggle - London Bike Sharing (2) 데이터 전처리:이상치 제거 (1) | 2023.10.03 |