본문 바로가기
Bigdata/Energy Bigdata

[빅데이터] 연간/월간/시간당 전력 소비 패턴, 전력 소비 프로파일 작성하기

by 겨울 빛 2020. 10. 6.

이번 실습에서는 2016년 1월 1일부터 12월 31일까지의 시간에 따른 전력소비량의 엑셀파일을 분석한다

이거야말로 BIGGGGGGGGG데이터 ㅎ

 

 

 

요렇게 생겨먹은 빅데이터를 stack 함수를 이용하여 세로로 길게(?) 출력한다

#df2를 세로로 쌓은 함수를 ts라고 정의할 것
ts = df2.stack()
ts

 

Result

 

 

 

인덱스의 색인도 변경한다.

#색인 변경
ts.index=pd.date_range('2016-01-01 00:00:00','2016-12-31 23:00:00',freq= '1h')

1/1 0시부터 12/31 23시까지 1시간 단위로 자른 값으로 사용한다.

 

 


이제 본격적으로 전력 소비 패턴을 분석한다.

 

1. 연간 전력 소비 패턴

plt.figure(figsize=(15,4))
ts.plot()
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('Annual Power Consumption pattern')
plt.grid()
plt.show()

 

 

 

예상대로 가장 더운 달인 8월에 전력소비량이 최대인 것을 확인할 수 있다


 

 

2. 해당 월의 전력 소비 패턴

plt.figure(figsize=(15,4))
ts['2016-08'].plot()
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('Monthly Power Consumption pattern')
plt.grid()
plt.show()

Datetime 이라는 Serial Data이기 때문에 ts[''] 형태로 쓸 수 있다.

프로그래밍 하다보면 느낌이 매트랩이랑 코드도 비슷하고 그래프 형태도 비슷하다

 

 

 


 

3. 해당 일의 전력 소비 패턴

plt.figure(figsize=(15,4))
ts['2016-08-16'].plot()
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('Daily Power Consumption pattern')
plt.grid()
plt.show()

 

 

정오쯤에 전력 소비량이 최대이다.

 

 


 

4. 특정 기간의 전력 소비 패턴

plt.figure(figsize=(15,4))
#Datetime 이라는 Serial Data이기 때문
ts['2016-08-01':'2016-08-05'].plot()
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('Power Consumption pattern(2016.08.01~05)')
plt.grid()
plt.show()

나머지 코드는 바꾸지 않고, ts안의 Datetime 에 :을 사용하여 범위를 지정할 수 있다.

8월 1일부터 8월 5일까지의 전력 소비 패턴을 plot 해보자.

 

 

 8월 5일로 갈 수록 전력 소비량이 늘기 시작했다.

더워졌나보다........ㅎ

 


 

5. 월별 소비 집계 패턴

plt.figure(figsize=(15,4))
ts.resample('M').max().plot(label='Peak')
ts.resample('M').mean().plot(label='Average')
ts.resample('M').min().plot(label='Baseline')
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('Monthly Aggregated Power Consumption pattern')
plt.grid()
plt.legend()
plt.show()

갑자기 생긴 저 legend는 와 ㄹㅈㄷ 레게노! 할때 그 레전드가 아닌 '범례'이다.

표현하고자 하는 물리량이 많을때 그래프에 붙여주는 이름이다.

plot(label='')의 따옴표에 해당하는 글자로 도시한 그래프에 이름이 생긴다.

 

 

우측 상단처럼 말이다 ㅇㅇ

 


 

6. 일별 소비 집계 패턴

plt.figure(figsize=(15,4))
ts.resample('D').max().plot(label='Peak')
ts.resample('D').mean().plot(label='Average')
ts.resample('D').min().plot(label='Baseline')
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('Daily Aggregaed Power Consumption pattern')
plt.grid()
plt.legend()
plt.show()

 

 


또, windows에서는 나눔고딕 한글 폴더도 지원한다고 하니 

폰트를 설정한다면 표의 글자들을 한글로 바꿀 수도 있다.

#시각화시 한글 폰트 지원
plt.rc('font',family='NanumGothic') #폰트설정, for Window
print(plt.rcParams['font.family'])
plt.figure(figsize=(15,4))
ts.resample('D').max().plot(label='Peak')
ts.resample('D').mean().plot(label='Average')
ts.resample('D').min().plot(label='Baseline')
plt.xlabel('Time')
plt.ylabel('Power Consumption (Wh)')
plt.title('일별 소비 집계 패턴')
plt.grid()
plt.legend()
plt.show()

 

 

한국어!!!!!!!!!!!


7. 연간 전력 소비 프로파일

plt.figure()
df2.mean().plot()
plt.xlabel('Hour')
plt.ylabel('Power Consumption (Wh)')
plt.title('Annual profile')
plt.grid()
plt.show()

mean 은 평균을 의미하므로 연간 평균적인 전력 소비량을 계산해서 plot 할 수 있다.

 

 

생긴게 뭔가 상형문자 같기도 하고 동물같기도 한 알 수 없는 그래프이지만

어찌됐건 해석해보면  20시 가량에 전력소비량이 최대라는 것이다.

 


8. 계절별 전력 소비 프로파일

plt.figure()
df2['2016-03':'2016-05'].mean().plot(label='Spring')
df2['2016-06':'2016-08'].mean().plot(label='Summer')
df2['2016-09':'2016-10'].mean().plot(label='Fall')
#데이터프레임 병합
pd.concat([df2['2016-11':'2016-12'],df2['2016-1':'2016-2']]).mean().plot(label='Winter')
plt.xlabel('Hour')
plt.ylabel('Power Consumption (Wh)')
plt.title('Annual profile')
plt.grid()
plt.legend()
plt.show()

 

 

이 코드를 작성하려면 봄 여름 가을 겨울이 무슨 월인지 알아야한다

3~5 봄

6~8 여름

9~10 가을

1~2, 11~12 겨울

 

사실 난 3개월씩 끊어서 계절 바뀌는지 알았는데 아니어서 충격..........

전기요금 납부할때도 이렇게 계절을 나눈다고...... 난 몰랐어

 

plt.figure()
df2['2016-03':'2016-05'].mean().plot(label='Spring')
df2['2016-06':'2016-08'].mean().plot(label='Summer')
df2['2016-09':'2016-10'].mean().plot(label='Fall')
#데이터프레임 병합
pd.concat([df2['2016-11':'2016-12'],df2['2016-1':'2016-2']]).mean().plot(label='Winter')
plt.xlabel('Hour')
plt.ylabel('Power Consumption (Wh)')
plt.title('Annual profile')
plt.grid()
plt.legend()
plt.show()

어쨋든 다른계절은 문제가 안되는데 겨울은 뚝 떨어져있어서 꽤 당황스러웠다.

이럴때는 데이터 프레임을 병합하는 작업이 필요한데, 이때 concat 이라는 함수가 사용된다. 

 

concat([''],[''])

이 두 값을 병합하면 이어진 표처럼 간주된다.

 

 

Result

 

 

역시.......

모두의 예상대로 여름에 가장 전력 소비량이 높았다. 에어컨 때문이겠지!

그리고 20시 넘어서 사용량이 많은것도 열대야때문에 다들 에어컨 틀고자서라고 추측해본다.ㅋㅋㅋㅋㅋ


나름 흥미진진한 실습이었다.......

에너지 IoT 수업때 스마트 플러그 만드는데 사용이 될 지도 모르니 잘 공부해둬야겠다.

댓글