본문 바로가기

Python

파이썬으로 엑셀 자료 이동하여 그래프를 그려보자

1. 출발점

시계열 데이터가 있다. 

일반적으로 5년 평균 그래프를 자주 그리는데 월이 1월로 고정되는 문제점(?)이 있다. 

농산물의 경우 시즌 개념이 적용되기 때문에 (원당의 경우(10월~9월))

시즌을 고정하여 데이터를 배치하고 그래프를 그려보고 싶다. 

원본 데이터 형식

 

위와 같이 10월을 고정하여 5년 평균 데이터를 배치해서
위와 같은 그래프를 그려보는 것이 목적

 

2. 무식한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import pandas as pd
import numpy as np
import sys
from openpyxl import load_workbook  
sys.path.append("C:\\pytest")
df = pd.read_excel('C:\\pytest\\brazil.xlsx')
 
# 데이터 확인
df.head()
 
# 피벗 적용하기 위해 년월 분리
df['Month'= df['date'].map(lambda x: x.month)
df['Year'= df['date'].map(lambda x: x.year)
df1 = df.copy()
df1
 
# 피벗 적용하여 월별로 테이블 만들기
table = df1.pivot_table(values = 'value', index = 'Year', columns='Month')
table
 
# 테이블 열 순서 변경하기
table = table[[101112123456789]]
table
 
# 시즌별 적용을 위해 테이블 분리하기
table1 = table[[101112]]
table1
 
table2 = table[[123456789]]
table2
 
# 테이블을 같은 연도로 붙이기 위한 작업
table2.index
table2['Year1'= table2.index - 1
table2.reset_index
 
table2.set_index('Year1', inplace = True)
table2
 
# 테이블 붙이기 위한 작업
table_result = pd.concat([table1, table2], axis = 1)
table_result
 
 
# 결측치 제거
table_result1 = table_result.copy().dropna(how = 'all')
table_result1
 
table_result2 = table_result.copy().dropna()
table_result2
 
 
# 5년 평균을 구하기 위해 5개년도만 남기고
table_result3 = table_result2.iloc[-5:]
table_result3
 
# 5년 평균을 구해서 삽입
table_result1.loc['5average'= table_result3.mean(axis = 0)
 
# 결과확인
table_result1
 
 
 
 
 
 
cs

pythonic한 코드인지는 모르겠지만 결과는 얻었..