일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python crawler
- Titanic data set
- 사이킷런
- control statement
- 파이썬 제어문
- Naive Bayes
- python control statement
- scikit-learn
- 파이썬 크롤링
- 순회 크롤러
- 머신러닝
- sklearn
- 판다스
- 나이브베이즈
- Data pre-processing
- 제어문
- 파이썬 객체 지향 프로그래밍
- python
- 타이타닉 데이터
- pandas
- 파이썬
- NumPy
- 파이썬 크롤러
- dataframe
- ML
- 넘파이
- K평균군집화
- KMeans Clustering
- Machine Learning
- 배열
- Today
- Total
Try to 개발자 EthanJ의 성장 로그
Pandas Data visualization with matplotlib 판다스 데이터 시각화 본문
Pandas Data visualization with matplotlib 판다스 데이터 시각화
EthanJ 2022. 11. 12. 19:22
Data visualization with matplotlib 데이터 시각화¶
0. Matplotlib¶
파이썬 기반 데이터 분석 환경에서 가장 일반적으로 사용되는 시각화 라이브러리
하위 라이브러리인
pyplot
을 통해 주요 기능을 사용plotly
,seaborn
등과 같은 라이브러리가 최근 경쟁력을 갖추고 있음pandas 객체의 기본적인 시각화 도구
plot()
method를 통해 데이터를 시각화종류
라인 플롯(line plot)
바 차트(bar chart)
히스토그램(histogram)
박스 플롯(box plot)
스캐터 플롯(scatter plot)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
1. matplotlib.pyplot.plot(y)
: line plot¶
plt.plot(y)
: 기본적으로 y축의 값으로 datay
를 mappingx축:
len(y)
를 기반으로 한 index number 생성:range(len(y))
default: line plot
data_list = np.random.randint(1, 10, (6))
plt.plot(data_list)
plt.show()
x tick
x축 value 설정plt.plot([x tick list], data)
: x tick list 길이와 data의 length가 같아야 함
plt.plot([2, 4, 6, 8, 10, 12], np.random.randint(1, 10, (6)))
plt.show()
import matplotlib
matplotlib
에서 한글 폰트 설정
font_name = matplotlib.font_manager.FontProperties(fname='c:/windows/fonts/malgun.ttf').get_name()
matplotlib.rc('font', family=font_name)
- 한글폰트 지정 후 음수부호를 정확하게 표시하기 위한 코드
matplotlib.rcParams['axes.unicode_minus']=False
- 축 이름과 plot 제목 지정
- plot 제목:
plt.title('title')
- x축 이름:
plt.xlabel('x_name')
- y축 이름:
plt.ylabel('y_name')
plt.title("라인 그래프 1")
plt.plot([-12, -10, -8, -6, -4, -2], np.random.randint(-12, -2, (6)))
plt.xlabel('axis x')
plt.ylabel('axis y')
plt.show()
두 개의 선을 그리기
- 각각의 라인 그래프를 순차적으로
plt.plot()
command로 입력
- 각각의 라인 그래프를 순차적으로
x_tick = list()
for x in range(-10, 10, 2):
x_tick.append(x)
plt.plot(x_tick, np.random.randint(-10, 11, (len(x_tick))))
plt.plot(x_tick, np.random.randint(-10, 11, (len(x_tick))))
plt.xlabel('value')
plt.ylabel('time')
plt.title('line plot example 2')
plt.show()
- 범례(legend) 추가:
plt.legend([list of legend str])
plt.plot(x_tick, np.random.randint(-10, 11, (len(x_tick))))
plt.plot(x_tick, np.random.randint(-10, 11, (len(x_tick))))
plt.xlabel('axis=1')
plt.ylabel('axis=0')
plt.title('line plot example 3')
plt.legend(['data A', 'data B'])
plt.show()
2. style assignment¶
plt.plot([x], y, 'fmt', **kwargs)
'fmt'=[color][marker][line]
- 색상, 마커, 선 등에 대한 포맷 옵션 설정
style string :
'fmt' = 'color' + 'marker' + 'line'
- string item 생략 시: default style 적용
- fmt=
o
: line없이 큰 점(원 모양)으로 data 표시
x_tick = list()
for x in range(1, 6):
x_tick.append(x)
y_data = np.random.randint(1, 6, len(x_tick))
plt.plot(x_tick, y_data, 'o')
plt.show()
str
'fmt'
= color + marker + line'o-'
: color=default, marker:o
=circle
, line:-
=실선
plt.plot(x_tick, y_data, 'o-')
plt.show()
'o--'
: color=default, marker:o
=circle, line:--
=dash_line
plt.plot(x_tick, y_data, 'o--')
plt.show()
'ro:'
: color:r
=red, marker:o
=circle, lind::
=점으로 된 점선
plt.plot(x_tick, y_data, 'ro:')
plt.show()
- 기타 스타일 파라미터 종류
color='magenta'
> 선 색상linestyle='-.'
> - + 점선marker=^
> 삼각형 markermarkerfacecolor='orange'
> marker 색상markersize='20'
> marker 크기
plt.plot(x_tick, y_data, color = 'magenta', linestyle='-.', marker='^',
markeredgecolor='r', markerfacecolor='orange', markersize='20')
plt.show()
- default:
axis=x
의 min, max,axis=y
의 min, max에 맞춰진 graph
axis_x = [1, 2, 3, 4]
axis_y = [10, 4, 12, 8]
plt.plot(axis_x, axis_y)
plt.show()
plt.axis([x_min, x_Max, y_min, y_Max])
plt.plot(axis_x, axis_y)
plt.axis([-4, 8, 0, 16])
plt.show()
plot
line에 비해 지나치게 작은plt.axis()
를 설정하면 일부plot
이 잘린다.
plt.plot([1, 2, 3, 4], [17, 2, 12, 14])
plt.axis([1, 4, 4, 12])
plt.show()
- grid 표시: 격자무늬 표시:
plt.grid(True)
plt.plot(x_tick, y_data)
plt.grid(True)
plt.show()
4. matplotlib.pyplot.scatter(x, y)
: scatter plot¶
대표값을 중심으로 data가 흩어져 있는 정도를 시각화
data의 분산, data간의 상관관계 파악 가능
plt.scatter(x, y, s=None, c=None, data=None)
s
: marker sizec
: marker colordata
:dict
자료형 사용하여 데이터 전달 시 keyword string을 통해 data 사용
정규분포 확률밀도함수에서 100개의 표본 추출
np.random.normal()
data_x = np.random.normal(0, 1, (100))
data_y = np.random.normal(0, 1, (100))
plt.scatter(data_x, data_y)
plt.show()
print(data_x[0], data_y[0])
-1.2424732061285015 -0.6622410823989973
plt.plot(data_x, data_y)
plt.show()
- optional parameter:
c=''
: 점 색상,s=
: 점 크기
plt.scatter(data_x, data_y, c='gold', s=100)
plt.show()
5. matplotlib.pyplot.bar(x, y)
: Bar chart¶
여러 값의 상대적인 크기 비교에 적합, 원형 차트보다 일반적으로 사용됨
plt.bar(x, y)
x
data = category value >bar()
,barh()
로 Bar chart 시각화x축 Bar chart:
plt.bar(x_tick, y_data)
y축 Bar chart:
plt.barh(y_tick, x_data)
data_x = ['김', '이', '박']
data_y = [2, 10, 5]
plt.bar(data_x, data_y)
plt.show()
plt.barh(data_x, data_y)
plt.show()
plt.title('plot title')
plt.xlabel('axis=x label')
plt.ylabel('axis=y label')
plt.xticks(x, [new_tick_list])
plt.bar(data_x, data_y)
plt.title('Bar Chart')
plt.xlabel('성씨')
plt.ylabel('인구 수')
plt.xticks(data_x, ['Kim', 'Lee', 'Park'])
plt.show()
plt.bar(x, y)
object: 객체화(변수 저장) 가능- object indexing: 각각의
bar
마다obj.set_color('color')
: 색상 변경 가능
- object indexing: 각각의
bar_list = plt.bar(data_x, data_y)
color_list = ['r', 'g', 'b']
i = 0
for bar in bar_list:
bar.set_color(color_list[i])
i += 1
plt.show()
'CS & DS > Numpy & Pandas' 카테고리의 다른 글
Titanic data pre-processing with pandas 판다스 타이타닉 데이터 전처리 (0) | 2022.11.13 |
---|---|
Pandas Data analysis with Baseball player 판다스 야구 선수 데이터 분석 (0) | 2022.11.12 |
Pandas Data pre-processing 판다스 데이터 전처리 (0) | 2022.11.12 |
Pandas Data Loading 판다스 데이터 적재 (0) | 2022.11.05 |
Pandas DataFrame 판다스 데이터프레임 (0) | 2022.11.05 |