데이터분석 실전1_2(통합 분석데이터 정리 )
지난 번에 만들었던 인천의 5개 지역에 대한 일별 데이터를 기온 데이터와 결합해서 간단한 분석을 하려고 합니다. 이번에는 기상청 데이터를 가져와서 이전에 작업한 데이터프레임과 Merge하는 작업을 진행해보겠습니다.
1. 기상청 데이터 가져와서 정리하기
기상청 기상자료개방포털에 들어가시면 이전 작업으로 진행했던 날짜에 맞는 평균기온 데이터를 다운받을 수 있습니다.
weather = pd.read_csv('./data_set/전력사용량_데이콘/weather.csv',encoding='CP949')
#encoding 에러가 발생해서 encoding='CP949'을 추가했습니다.
weather.head()
지점 지점명 일시 평균기온(°C)
0 112 인천 2017-07-01 24.1
1 112 인천 2017-07-02 23.6
2 112 인천 2017-07-03 23.2
3 112 인천 2017-07-04 24.8
4 112 인천 2017-07-05 26.0
weather.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 365 entries, 0 to 364
Data columns (total 4 columns):
지점 365 non-null int64
지점명 365 non-null object
일시 365 non-null object
평균기온(°C) 365 non-null float64
dtypes: float64(1), int64(1), object(2)
memory usage: 11.5+ KB
일시가 문자형태이긴 하지만 우리가 원하는 형태의 데이터로 정리되어 있습니다.
weather_modi=weather[['일시','평균기온(°C)']]
weather_modi.columns=['time','temp_aver']
weather_modi['time']= pd.to_datetime(weather_modi['time'],format='%Y-%m-%d')
weather_modi.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 365 entries, 0 to 364
Data columns (total 2 columns):
time 365 non-null datetime64[ns]
temp_aver 365 non-null float64
dtypes: datetime64[ns](1), float64(1)
memory usage: 5.8 KB
2. 기존 전력사용 데이터와 Merge하기
data5.reset_index(inplace=True) #이전 data5데이터가 groupby로 작업하면서 Time변수가 index로 변경되어 다시 칼럼으로 변경해줍니다.
#사실 이 작업이 없더고 Merge에는 문제가 없습니다.
data5
Time NX1343 NX1440 NX1441 NX1332 NX1445
0 2017-07-01 3.109 5.582 151.515 2.904 24.844
1 2017-07-02 3.148 5.634 149.008 3.304 14.055
2 2017-07-03 23.226 29.651 150.318 9.062 44.102
3 2017-07-04 23.415 23.772 150.511 2.134 48.467
4 2017-07-05 30.266 23.145 164.994 13.139 51.013
data6=pd.merge(data5,weather_modi,left_on='Time',right_on='time')
data6
Time NX1343 NX1440 NX1441 NX1332 NX1445 time temp_aver
0 2017-07-01 3.109 5.582 151.515 2.904 24.844 2017-07-01 24.1
1 2017-07-02 3.148 5.634 149.008 3.304 14.055 2017-07-02 23.6
2 2017-07-03 23.226 29.651 150.318 9.062 44.102 2017-07-03 23.2
3 2017-07-04 23.415 23.772 150.511 2.134 48.467 2017-07-04 24.8
4 2017-07-05 30.266 23.145 164.994 13.139 51.013 2017-07-05 26.0
#time 열이 중복되기 때문에 삭제해줍니다.
data6.drop('time', axis=1,inplace=True)
data6.head()
Time NX1343 NX1440 NX1441 NX1332 NX1445 temp_aver
0 2017-07-01 3.109 5.582 151.515 2.904 24.844 24.1
1 2017-07-02 3.148 5.634 149.008 3.304 14.055 23.6
2 2017-07-03 23.226 29.651 150.318 9.062 44.102 23.2
3 2017-07-04 23.415 23.772 150.511 2.134 48.467 24.8
4 2017-07-05 30.266 23.145 164.994 13.139 51.013 26.0
Leave a comment