Пример #1
0
import pandas as pd
import numpy as np
import csv
from hamsu import view_nan, split_x, plot_feature_importances
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.preprocessing import StandardScaler,MinMaxScaler, RobustScaler

data = pd.read_csv('./Data/Seoul2/merge_data.csv')
print(data)

data = data.interpolate()
view_nan(data)
data = data.fillna(method='bfill')
data = data.round(1)
# data.to_csv('./Data/Seoul2/merge_data.csv',index=False)
Пример #2
0
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from xgboost import XGBRegressor
import math
from sklearn.preprocessing import StandardScaler,MinMaxScaler, RobustScaler

# 1. 데이터가 내가 원하는 형식으로 되어있지 않아서 제외
# cloud_data = pd.read_csv('./data/csv/Seoul/Seoul_cloud_2010-2020_by_month.csv',encoding='CP949') 형식이 이상해서 이렇게 하면 에러가남 밑에 줄 처럼 해야함
# cloud_data = pd.read_csv('./data/csv/Seoul/Seoul_cloud_2010-2020_by_month.csv',encoding='CP949',header=None,sep=',',error_bad_lines=False)

# 2. 월별 서울 온도 데이터 로드
temp_data_month = pd.read_csv('./data/Seoul/Seoul_temp_2010-2020_by_month.csv',encoding='CP949',header=6,sep=',',error_bad_lines=False,index_col=0)
temp_data_month = temp_data_month.drop('지점',axis=1)
# print(temp_data_month)
# 결측지 발견 20년6월의 평균온도 -> 일별데이터에서 현재까지의 평균을 이용하여 결측치를 채워보기
view_nan(temp_data_month,0)
index = temp_data_month.loc[pd.isna(temp_data_month[temp_data_month.columns[-1]]), :].index
# print(index)

# 3. 일별 서울 온도 데이터 로드
temp_data_day = pd.read_csv('./data/Seoul/Seoul_temp_2010-2020_by_day.csv',encoding='CP949',header=6,sep=',',error_bad_lines=False,index_col=0)
temp_data_day = temp_data_day.drop('지점',axis=1)
# print(temp_data_day)
# 일별 온도데이터의 nan값을 찾고 그 행을 출력
view_nan(temp_data_day,0) # 최고 기온에 결측치 존재
# print(temp_data_day.columns[-1])
index = temp_data_day.loc[pd.isna(temp_data_day[temp_data_day.columns[-1]]), :].index
# print(index) # 2017-10-12 의 최고 기온 -> 보간법으로 채우자
# 일단 원하는건 현재까지의 6월의 월별 평균기온을 구하기위한 일별 평균기온
want = temp_data_day.loc['2020-06-01':,'평균기온(℃)'].values
# print(round(want.mean(),1))
dust = dust.drop('지점번호', axis=1)
dust = dust.drop('지점명', axis=1)
dust.columns = ['date', 'dust']
print(dust)

rain = pd.read_csv('./data/Seoul/Seoul_rain_2010-2020_by_day.csv',
                   encoding='CP949',
                   header=6,
                   sep=',',
                   error_bad_lines=False)
rain = rain.drop('지점', axis=1)
rain.columns = ['date', 'rain']
print(rain)

# print("온도의 결측 확인")
view_nan(temperature)
index = temperature.loc[pd.isna(temperature[temperature.columns[-1]]), :].index
# print(temperature.iloc[index,:])
temperature = temperature.interpolate()
view_nan(temperature)
# print("온도의 결측 확인\n")

# print("미세먼지 결측치 확인")
view_nan(dust)
index = dust.loc[pd.isna(dust[dust.columns[-1]]), :].index
# print(dust.iloc[index,:])
dust = dust.interpolate()
view_nan(dust)
# print("미세먼지 결측치 확인")

# print('강수량 결측치 확인')
Пример #4
0
# cloud_data = pd.read_csv('./data/csv/Seoul/Seoul_cloud_2010-2020_by_month.csv',encoding='CP949') 형식이 이상해서 이렇게 하면 에러가남 밑에 줄 처럼 해야함
# cloud_data = pd.read_csv('./data/csv/Seoul/Seoul_cloud_2010-2020_by_month.csv',encoding='CP949',header=None,sep=',',error_bad_lines=False)

# 1-2. 월별 서울 온도 데이터 로드
temp_data_month = pd.read_csv('./data/Seoul/Seoul_temp_2010-2020_by_month.csv',
                              encoding='CP949',
                              header=6,
                              sep=',',
                              error_bad_lines=False)  #,index_col=0)
temp_data_month = temp_data_month.drop('지점', axis=1)
# print(temp_data_month)

temp_data_month.columns = ['시간', '평균기온', '최저기온', '최고기온']
# print(temp_data_month)
# 결측지 발견 20년6월의 평균온도 -> 일별데이터에서 현재까지의 평균을 이용하여 결측치를 채워보기
view_nan(temp_data_month, 0)
index = temp_data_month.loc[
    pd.isna(temp_data_month[temp_data_month.columns[-1]]), :].index
# print(index)

# 1-3. 일별 서울 온도 데이터 로드
temp_data_day = pd.read_csv('./data/Seoul/Seoul_temp_2010-2020_by_day.csv',
                            encoding='CP949',
                            header=6,
                            sep=',',
                            error_bad_lines=False)  #,index_col=0)
temp_data_day = temp_data_day.drop('지점', axis=1)
# print(temp_data_day)

temp_data_day.columns = ['시간', '평균기온', '최저기온', '최고기온']
# print(temp_data_day)
Пример #5
0
test_fu_r = np.array(test_fu_r)
test_fu_j = np.array(test_fu_j)


test_fu_r = pd.DataFrame(test_fu_r,columns=list(np.arange(60)),index=idx)
test_fu_j = pd.DataFrame(test_fu_j,columns=list(np.arange(60)),index=idx)

###
train = pd.merge(train_rho,train_src,on='id',how='outer')
train = train.dropna()
train = pd.merge(train,train_dst,on='id',how='outer')
train = train.dropna()
train = pd.merge(train,train_fu_r,on='id')
train = pd.merge(train,train_fu_j,on='id')
train = pd.merge(train,train_y,on='id',how='outer')
train = train.dropna()

test = pd.merge(test_rho,test_src,on='id')
test = pd.merge(test,test_dst,on='id')
test = pd.merge(test,test_fu_r,on='id')
test = pd.merge(test,test_fu_j,on='id')

print(train)
print(test)

view_nan(train)
view_nan(test)

###
train.to_csv('./data/dacon/comp1/train_new.csv')
test.to_csv('./data/dacon/comp1/test_new.csv')
Пример #6
0
train = pd.read_csv('./data/dacon/comp1/train.csv', index_col=0, header=0)
test = pd.read_csv('./data/dacon/comp1/test.csv', index_col=0, header=0)

train_dst = train.filter(regex='_dst$', axis=1)  #.replace(0, np.NaN)
test_dst = test.filter(regex='_dst$', axis=1)  #.replace(0, np.NaN)

train_dst = train_dst.interpolate(axis=1)
test_dst = test_dst.interpolate(axis=1)

# train_dst = train_dst.replace(0, np.NaN)
# test_dst = test_dst.replace(0, np.NaN)

# train_dst = train_dst.interpolate(axis=1)
# test_dst = test_dst.interpolate(axis=1)

view_nan(train_dst)
# view_nan(test_dst)

train_dst.fillna(0, inplace=True)
test_dst.fillna(0, inplace=True)

train_src = train.filter(regex='_src$', axis=1)
test_src = test.filter(regex='_src$', axis=1)

train_rho = train.filter(regex='rho$', axis=1)
test_rho = test.filter(regex='rho$', axis=1)

train_1 = train.filter(regex='hhb$', axis=1)
train_2 = train.filter(regex='hbo2$', axis=1)
train_3 = train.filter(regex='ca$', axis=1)
train_4 = train.filter(regex='na$', axis=1)
Пример #7
0
# index = x.loc[pd.isna(x[x.columns[0]]), :].index
# print(x.iloc[index,:])

y = train.loc[:, 'hhb':'na']

x = x.fillna(method='bfill')
x = x.fillna(method='ffill')
# x = x.fillna(0)

# view_nan(test)
test = test.fillna(method='bfill')
test = test.fillna(method='ffill')
# test = test.fillna(0)

view_nan(x)
print()
view_nan(test)

# 회기 모델
x_train, x_test, y_train, y_test = train_test_split(x,
                                                    y,
                                                    train_size=0.8,
                                                    random_state=0)

scaler = RobustScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

# n_estimators = 450
# learning_rate = 0.1