Python

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

irezinze 2020. 5. 26. 14:01

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한 코드인지는 모르겠지만 결과는 얻었..