# 간단한 라인차트
# plt.figure(figsize=(가로, 세로)) # 사이즈 조절
plt.plot(df['col1'])
plt.show()
# x축 label 기울기 조정
plt.xticks(rotation=30)
# label, title
plt.xlabel('x축이름')
plt.ylabel('y축이름')
plt.title('그래프 이름')
color : red, green, blue, r, g, b...linestyle : solid(-), dashed(--), dashdot(-.), dotted(:)marker : point(.), pixel(,), circle(o), triangle(v, ^, <, >)# 선 스타일 변경
plt.plot(df['col1'],
color = 'red',
linestyle = 'solid',
marker = '.')
plt.plot(df['col1'], label='col1')
plt.legend()
plt.grid()
# color, linestype 옵션 사용 가능함
# 수평
plt.axhline(y좌표숫자)
# 수직
plt.axvline(x좌표숫자)
# 텍스트
plt.text(x좌표숫자, y좌표숫자, '텍스트내용')
plt.subplot(row, column, index)
# index는 1부터 시작한다
앞으로 이어질 시각화 예시는, kaggle에서 얻을 수 있는 Titanic - Machine Learning from Disaster 데이터 셋을 이용하여 작성하였습니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as spst
# 나중을 위해 Survived 컬럼이 있는 train set으로 이용
titanic = pd.read_csv('train.csv')
titanic.head()

시각화 : 구간별 빈도수 계산 : Box Plot, 도수분포표(히스토그램, Density plot)
수치화 : 기초 통계량df.describe()
# plt.hist(컬럼, bins=구간수)
# 데이터 특성에 따라 적절한 bins를 선택한다
# 연령이 0~80세로 구성되어있어 연령대로 보기 위해 구간을 8으로 설정함
plt.hist(titanic['Age'], bins=8, edgecolor='gray')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

밀도함수그래프 : 커널밀도추정(KDE)을 이용한다. sns.kdeplot(titanic['Age'])
plt.show()

sns.histplot을 이용하여 두 가지를 동시에 그릴 수도 있다. sns.histplot(titanic['Age'], bins=8, kde=True)
plt.show()

plt.boxplot(titanic['Fare']) # vert는 세로가 default
plt.grid()
plt.show()

plt.boxplot(titanic['Fare'], vert=False)
plt.grid()
plt.show()

fare = plt.boxplot(titanic['Fare'])
print(type(fare)) # 딕셔너리
print(fare.keys()) # dict_keys(['whiskers', 'caps', 'boxes', 'medians', 'fliers', 'means'])
print(fare['whiskers'])
# [<matplotlib.lines.Line2D object at 0x0000019E55920390>, <matplotlib.lines.Line2D object at 0x0000019E58C70BD0>]
# lower_fance = 수염의 이상적 최소값 (Q1-1.5*IQR)
# upper_fance = 수염의 이상적 최대값 (Q3+1.5*IQR)
print(fare['whiskers'][0].get_ydata())
# 아래쪽 수염의 max, min(Q3) [7.9104 0. ]
print(fare['whiskers'][1].get_ydata())
# 위쪽 수염의 min(Q1), max [31. 65.]

df.describe()
범주별 빈도수/비율
시각화 : Bar plot - countplot
수치화 :df.value_counts()
plt.bar의 경우 먼저 집계한 데이터프레임을 따로 선언 후 그려줘야 한다. sns.countplot(x=titanic['Pclass'])
# y로 선택시 두번째 이미지처럼 가로형이 된다.
plt.grid()
plt.show()


temp = titanic['Pclass'].value_counts()
plt.pie(temp.values, labels=temp.index, autopct='%.1f%%', startangle=90, counterclock=False, explode=[0.05, 0.05, 0.05], shadow=True)
# autopct = 퍼센트비율로 환산. 소숫점 자릿수 지정가능
# startangle = 시작 각도
# counterclock = 배열 방향
# explode = 파이별 간격 띄우기
# shadow = 그림자 유무
plt.show()

df.value_counts()normalize=True 옵션 사용시 비율로 출력된다.