| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 타이타닉 데이터
- 파이썬 제어문
- Machine Learning
- 파이썬 크롤러
- 나이브베이즈
- 넘파이
- 배열
- NumPy
- KMeans Clustering
- ML
- 파이썬 크롤링
- control statement
- 파이썬
- python
- 사이킷런
- 제어문
- K평균군집화
- 순회 크롤러
- scikit-learn
- 파이썬 객체 지향 프로그래밍
- Data pre-processing
- sklearn
- python control statement
- Titanic data set
- pandas
- Naive Bayes
- 판다스
- dataframe
- Python crawler
- 머신러닝
- 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 tickx축 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()
plotline에 비해 지나치게 작은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)xdata = 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 |