파이썬 기초 문법 강의 – 7일차 데이터 차트

파이썬 기초 문법 강의 – 7일차 데이터 차트

오늘은 파이썬을 통해서 차트로 표현해보는 방법을 알아보겠습니다.

먼저 데이터를 분석하기 위해서는 데이터 형태를 알아보는 것이 좋은데요.

데이터의 종류

일반적으로 데이터는 범주형(Categorical Data)과 수치형(Numerical Data)으로 나뉩니다.

범주형에는 순위형 데이터(Ordinal Data)와 명목형 데이터(Nominal Data), 수치형은 연속형 데이터(Continuous Data)와 이산형 데이터(Discrete Data)로 구분되는데요.

아래의 그림을 보면 간단하게 그 특징을 이해하실 수 있습니다.

범주형을 살펴보면 데이터간 순서나 순위가 있는 학점 등은 순서형 데이터, 데이터간 순위가 없는 혈액형/성별 등은 명목형이라고 합니다.

수치형은 데이터간 끊김이 없는 것은 연속형이며 주로 측정을 통해 얻을 수 있으며, 데이터간 끊김이 있으면 이산형이며, 일반적으로 갯수를 세서 확인합니다.

데이터 형태

간단하게 학점을 아래와 같이 간단하게 입력하게 되면 순서가 없는 명목형이 되어 order에 대한 정리가 되지 않습니다.

import pandas as pd

df = pd.DataFrame(['A+','A','A-','B+','B','B-','C+','C','C-','D'], index = ['excellent','excellent','excellent','good','good','good','normal','normal','normal','poor'])

df.rename(columns = {0:'Grade'},inplace=True)

>>> grade = df['Grade'].astype('category').head()
>>> grade > 'A'
TypeError: Unordered Categoricals can only compare equality or not

하지만 함수를 통해 순서형으로 만들어보겠습니다. 이제 ordered라는 옵션을 주었기 때문에 비교가 가능합니다.

>>> from pandas.api.types import CategoricalDtype
>>> grade = df['Grade'].astype(CategoricalDtype(categories = ['D','C-','C','C+','B-','B','B+','A-','A','A+'], ordered=True))

>>> grade.head()
excellent    A+
excellent     A
excellent    A-

Name: Grade, dtype: category
Categories (10, object): ['D' < 'C-' < 'C' < 'C+' ... 'B+' < 'A-' < 'A' < 'A+']
>>> grade >'B'
excellent     True
excellent     True
excellent     True
good          True
good         False
good         False
normal       False

Name: Grade, dtype: bool
>>> 

이외에 수치 데이터는 pd.cut 등을 통하여 카테고리를 만들 수 있습니다.

파이썬 데이터 스케일링이란?

스케일링을 통해 다차원의 값들을 비교 분석하기 쉽게 만들어주며, 자료의 오버플로우(overflow)나 언더플로우(underflow)를 방지 하고, 독립 변수의 공분산 행렬의 조건수(condition number)를 감소시켜 최적화 과정에서의 안정성 및 수렴 속도를 향상 시키는 효과를 얻을 수 있습니다.

파이썬 차트 그리기

이제 파이썬에서 차트를 그리는 방법을 알아보겠습니다. 공식 홈페이지를 참고하셔도 됩니다. 패키지가 없으면 pip install matplotlib을 통해 설치하시면 됩니다.

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [0,10,15,25,20]  # x,y 데이터
fig = plt.figure()
ax = fig.add_subplot(111)  
ax.plot(x,y,color = 'blue', linewidth=3)
ax.scatter([2,4,6],[5,15,25], color='green', marker='^')
ax.set_xlim(1,6.5) # x 축
plt.savefig('test.png') #그림 저장
plt.show()

이 파이썬 차트의 주요 내용을 알면 변경하기 쉬운데요. 표의 각 부분의 이름은 아래와 같습니다.

plt

그리고 plt plot전까지의 데이터는 모두 하나의 표에 출력되는데요.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 50)

plt.plot(x, np.sin(x))
plt.plot(x, 10*np.cos(2*x))

plt.show()
2개 그래프

하나의 그래프에 같이 보이게 됩니다.

그리고 점차트도 그릴 수 있는데요.

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as npr

x = npr.normal(size=50)
y = npr.normal(size=50)

plt.scatter(x,y, c='green')

plt.title('Scatter Chart')
plt.legend(['(x,y)'])
plt.show()

그리고 선 차트 역시 가능합니다.

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as npr

x = np.linspace(0, 2*np.pi, 20)

# b(lightblue: 파란색), s(Square: 네모 점)
plt.plot(x, np.sin(x), color='lightblue', linestyle='', marker='s')
#  --(대시로 선 잇기), ^(세모 모양의 점)
plt.plot(x, np.cos(x), color='red', linestyle='--', marker='^')
#  green :(점선으로 잇기), o(동그라미 점)
plt.plot(x, np.sin(2*x), 'g:o')

plt.title('Line Plot')
plt.legend(['1', '2', '3']) # 범례
plt.show()
파이썬 차트

이렇게 간단하게 파이썬에서 차트를 그릴 수 있습니다.

더 많은 용법은 홈페이지를 통해서 공부하실 수 있습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다