개발은 처음이라 개발새발

df.plot() 데이터프레임 그래프 그리기 - 2 본문

파이썬/판다스

df.plot() 데이터프레임 그래프 그리기 - 2

leon_choi 2022. 6. 26. 15:00
반응형

지난 1편에서(데이터프레임 그래프 그리기 - 1 https://data-so-hard.tistory.com/17) 그래프는 완성했지만 시각적으로 명확하게 데이터의 차이를 보여줬다고 볼순 없었는데요. 1편에서의 최종 코드와 그래프를 다시 한번 보겠습니다. 

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('./남북한발전전력량.xlsx', engine='openpyxl')  # 데이터프레임 변환
print(df)
print('\n')

df_ns = df.iloc[[0,5], 3:]  # 남북한 연도별 발전전량 합계 추출

df_ns.index = ['South', 'North'] # 행 인덱스 변경
print('\n')
print(df_ns)

df_ns.columns = df_ns.columns.map(int) # 컬럼 정수형으로 변환

print(df_ns.head())

df_ns.plot() #표 생성
plt.show()

그래프를 보면 1991년부터 2016까지 선이 색깔별로 있고 x축을 보면 남한만 있습니다. y축은 발전량합계들이 있는 것으로 파악되는데요. 이렇게되면 남한과 북한이 연도별로 어떤 차이를 보이는지 확실하게 알수가 없습니다. 그렇다면 수정해야 할 것이 보이는데요. 그래프의 선들은 연도가 아닌 남한과 북한이 되어야 하고 x축에는 연도들이 있는 것이 좋습니다. 이럴 때 필요한 게 '전치'입니다. 전치란 데이터의 열과 행을 바꾸는 것을 의미합니다. 파이썬에서 데이터 전치는 매우 간단합니다. 전치를 해야 하는 데이터프레임(df_ns)에 " .T "를 붙여주면 됩니다. 코드와 전치 결과를 보시겠습니다. 

 

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('./남북한발전전력량.xlsx', engine='openpyxl')  # 데이터프레임 변환
print(df)
print('\n')

df_ns = df.iloc[[0,5], 3:]  # 남북한 연도별 발전전량 합계 추출

df_ns.index = ['South', 'North'] # 행 인덱스 변경
print('\n')
print(df_ns)

df_ns.columns = df_ns.columns.map(int) # 컬럼 정수형으로 변환

tdf_ns = df_ns.T # df_ns 전치
print('\n')
print(tdf_ns.head())
print('\n')

네 이렇게 남과 북이 컬럼으로, 연도가 인덱스로 변환된 것을 확인할 수 있습니다. 자 그러면 전치한 데이터프레임을 가지고 다시 선그래프를 그려보도록하겠습니다.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('./남북한발전전력량.xlsx', engine='openpyxl')  # 데이터프레임 변환
print(df)
print('\n')

df_ns = df.iloc[[0,5], 3:]  # 남북한 연도별 발전전량 합계 추출

df_ns.index = ['South', 'North'] # 행 인덱스 변경
print('\n')
print(df_ns)

df_ns.columns = df_ns.columns.map(int) # 컬럼 정수형으로 변환

tdf_ns = df_ns.T # df_ns 전치
print('\n')
print(tdf_ns.head())
print('\n')

tdf_ns.plot()
plt.show()

네 이렇게 전치 후에 그래프를 그려보니 처음보다 확실히 시각적으로 남한과 북한의 전력량 합계 차이를 연도별로 확연하게 파악할 수 있습니다. 지금까지는 선그래프를 그려봤다면 다음 시간에는 다양한 종류의 그래프를 소개하고 몇개를 그려보도록 하겠습니다. 

반응형