[Python] Matplotlib

26. Matplotlib

 

26.1 실습 예제 - 기본 사용법

# 매직 명령어
# 그래프를 조작할 수 있다.
# 그래프 제목 오른쪽의 stop interaction 버튼을 누르기 전까지 그래프의 수정이 가능함
# %matplotlib nbagg

# 생성된 이후에는 조작할 수 없는 옵션
%matplotlib inline

import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
nums = np.random.randn(10)
print(nums)
print(nums.cumsum())    # 누적 합
# randn(n): 정규분포 난수 n개 생성
# Series: 1차원 배열, DataFrame: 2차원 배열
s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
s
s.plot()

 

df["B"].plot()

 

데이터프레임 생성

df = pd.DataFrame(np.random.randn(10, 4), columns=["A", "B", "C", "D"], index=np.arange(0, 100, 10))
df.plot()

 

list("abcd...")

# list("abcd..."): a, b, c, d 식으로 리스트로 만들어짐
# 시리즈값을 막대그래프로 출력
s2 = pd.Series(np.random.rand(16), index=list("abcdefghijklmnop"))
s2

 

수직 방향 막대그래프

# 수직 방향 막대그래프
s2.plot()
s2.plot(kind="bar")

 

수평 방향 막대그래프

# 수평 방향 막대그래프
s2.plot(kind="barh")

 

from matplotlib import rc, font_manager

# 한글 처리를 위해 폰트 설정
font_name = font_manager.FontProperties(\
    fname="C:/Windows/Fonts/malgun.ttf").get_name()
    rc('font', family=font_name)

# 데이터프레임
df2 = pd.DataFrame(np.random.rand(6, 4),
                   index=["one", "two", "three", "four", "five", "six"],
                   columns=pd.Index(["A", "B", "C", "D"], name="종류"))

df2

 

히스토그램

변수가 가질 수 있는 값의 구간, 개수를 막대 형태로 출력

히스토그램은 값만 필요하고 인덱스는 필요하지 않음

# normal(): 정규분포
s3 = pd.Series(np.random.normal(0, 100, size=200))
s3.head()

 

음수 부호가 깨지지 않도록 설정

# x축 구간은 기본값으로 10개로 설정됨
plt.rcParams['axes.unicode_minus'] = False
s3.hist()

 

x축 구간의 개수 지정

# x축 구간의 개수 지정
plt.rcParams['axes.unicode_minus'] = False
s3.hist(bins=50)

 

normed

# normed(정규분포)
# 정규분포: 종 모양을 가짐
s3.hist(bins=100, normed=True)

 

산점도

서로 다른 독립변수 x1, x2의 관계를 파악할 때 사용

# normal(mu, sigma, size=(rows, cols))
# mu: 중앙값(median), sigma: 표준편차
x1 = np.random.normal(1, 1, size=(100, 1))
x2 = np.random.normal(-2, 4, size=(100, 1))

# concatenate: 열 방향으로 연결
# axis=1: 가로 방향, axis=0: 세로 방향
# 100x2 리스트가 생성됨
X = np.concatenate((x1, x2), axis=1)

# 첫 5행 출력
print(X[:5])

 

x1과 x2의 상관관계

df3 = pd.DataFrame(X, columns=["x1", "x2"])
df3.head()
# x1과 x2의 상관관계
# x1(x축), x2(y축)

# 양의 상관관계: 산점도가 좌측 하단에서 우측 상단으로
# 음의 상관관계: 산점도가 좌측 상단에서 우측 하단으로

# 이 그래프에서는 상관관계를 찾을 수 없다
plt.scatter(df3["x1"], df3["x2"])

 

26.3 실습예제 - BabyNames 데이터 분석

NationalNames.csv

다운로드 주소

https://www.kaggle.com/kaggle/us-baby-names/data 

42MB 정도

1880~2014 태언나 아이들의 이름 통계

엑셀로 오픈하면 에러가 발생함(엑셀에서 열 수 있는 최대 행, 열 갯수 초과)

 

%matplotlib inline
import pandas as pd
from matplotlib import font_manager, rc
# 한글 처리를 위해 폰트 설정
font_name = font_manager.FontProperties(\
fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
# csv를 읽어서 데이터프레임으로 리턴
names = pd.read_csv("d:/data/names/NationalNames.csv",\
					header=0,
                    names=["id", "name", "year", "gender", "births"])
# 데이터프레임의 자료 갯수 확인
names.shape

'programming > python' 카테고리의 다른 글

[Python] 기술통계와 모델링  (0) 2019.05.09
[Python] 웹 스크레이핑  (0) 2019.04.23
[Python] Matplotlib  (0) 2019.04.21
[Python] Pandas  (0) 2019.04.15
[Python] NumPy  (0) 2019.04.10
[Python] 데이터 분석 라이브러리의 개요  (0) 2019.04.01

댓글(0)

Designed by JB FACTORY