matplotlib & seaborn

JoQuri(조규리)·2023년 12월 12일
0

EDA

목록 보기
2/7

<import matplotlib.pyplot as plt>

  • 기본형태
plt.figure(figsize=(a,b))
plt.plot(x,y)                     # 실선 그래프
plt.show()
  • 필요시, import matplotlib as mpl

mac, window

import matplotlib.pyplot as plt
import seaborn as sns
import platform
from matplotlib import font_manager,rc

get_ipython().run_line_magic('matplotlib','inline')
# %matplotlib inline

path = 'C:/Windows/Fonts/malgun.ttf'

if platform.system() == 'Darwin':
    rc('font',family='Arial Unicode MS')
elif platform.system() == 'Windows':
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font',family=font_name)
else:
    print('Unknown system, sorry~')

matplotlib 한글설정(window기준)

# 폰트 이름 확인
from matplotlib import font_manager
f_path = 'c:/Windows/Fonts/malgun.ttf'
font_manager.FontProperties(fname=f_path).get_name()
import matplotlib.pyplot as plt
from matplotlib import rc
rc("font",family ='Malgun Gothic')
# 마이너스 부호 떄문에 한글이 깨질 수가 있어 설정
mpl.rcParams['axes.unicode_minus'] = False
# %matplotlib inline
get_ipython().run_line_magic("matplotlib","inline")
  • df[컬럼명].plot(kind='bar'/'barh'~,figsize=( , ) + 다른옵션)
    으로도 가능(인덱스가 자동으로 x축에 들어감)
  • df.boxplot

matplotlib의 sort_values()

 # 방법1: 먼저 정렬을 시킨 df을 새롭게 만든 후 그래프 그리기
 # 방법2
 df['col'].sort_values().plot(~)
 # 방법3: x값이나 y값 쓸 때 적기
 plt.barh(width = df['col'].sort_values(),~)

matplotlib 옵션 설정()

# 격자무늬 추가
plt.grid(True)               #True 생략가능
# 그래프 제목
plt.title("제목")

plt.xlabel("x축 제목")
plt.ylabel("y축 제목")

# 그래프 범례
plt.legend(labels=['이름','이름2'])
plt.legend(loc='lower left')        # 'loc=' 숫자로도 표현가능

# x,y축 설정
plt.xlim([-1, 5])             # -1 ~ 5까지 x축이 그려짐
plt.ylim([0, 6])

# 점에 이름 표시(주로 scatter그래프 그릴시)
# 1.02나 0.98은 이름이 점이랑 떨어져있는 정도이기에 아무 숫자가능
plt.text(x축 컬럼[0]*1.02, 
		y축 컬럼[0]*0.98,
		'Name',               #예로 df.index[0]
        fontsize=15)
        
plt.xticks(rotation=)         #x축 글자 각도

matplotlib 또다른 옵션 설정

plt.annotate(                                     # 그래프에 주석달기
	dispname,
    (row['x'] + 0.5, row['y'] + 0.5),            # 조금 떨어져서 
    weight='bold',
    color = ,
    fontsize= ,
    linespacing= ,
    ha='center',                                 # 수평정렬
    va='center'           						 # 수직정렬
    )
    
plt.gca().invert_yaxis()       # y축 거꾸로
plt.axis("off")                # 축의 선 없애기
plt.tight_layout()             # 표들이 넓혀짐
plt.pcolor(  )                 # 각 그리드의 색상채우기

plt.plot(x, y, data)

# 그래프 커스텀
plt.plot(x, y,

        color='',
        linestyle='',         # ls=' ' 도 가능 # 합쳐서 'r--'등 가능
        lw=3                  # line 두께         
        marker = '',          # 예로 'o'
        markerfacecolor='',
        markersize=           # 숫자
        #합쳐서 바로 'bs', 'g^' 등 가능

plt.scatter(x,y)

plt.scatter(x, y, 
			s=100,              # marker 크기
            c=,					# 컬럼 지정, 그 값별로 색깔을 입힘
            marker=" ")         # 예로 ">"

plt.colorbar()                  # 값에따라 색깔 변화

plt.barh()

plt.barh(width = df['col'].sort_values(), 
		y = df['col2], 
        label='col Name')

plt.pie()

plt.pie(df['col'].sort_values(),
		labels=df.index)

colormap 사용자 정의

from matplotlib.colors import ListedColormap

# colormap을 사용자정의(user define)로 정의
color_step=['#e74c3c','#2ecc71','#95a9a6','#2ecc71','#3498db','#3498db']   #예

my_camp = ListedColormap(color_step)

plt.scatter(x, y, s=50, c=df["col"], cmap=my_camp)        
# df["col"]는 색깔 변화의 기준 컬럼

cf. colorbar()에도 사용자가 설정한 색깔에 따라 나옴

<import seaborn as sns>

  • sns가 언급이 없어도 import해놓은것만으로도 이쁘게 그래프를 만듬.

  • conda install seaborn

  • sns.load_dataset('tips','flight','iris','anscombe')

  • sns.set_style('white', 'dark', 'whitegrid', 'darkgrid', 'ticks')
    - 이렇게 여러 실선그래프를 그릴 때 연속으로 x,y 표기 가능

sns.boxplot(x, y, data + 옵션)

sns.boxplot(x='col', 
			y='col', 
            data=, 
            hue='', 			  # 분류기준
            palette='Set3')       # 'Set 1~ 3'

  • pandas boxplot
    : df.boxplot(column='y축 값', by='x축', figsize=( , ))

sns.swarmplot(x, y, data)

sns.swarmplot(x='', 
			  y='', 
              data=, 
              color='0.5') 		  # color:0(검정)~1(흰)사이 값을 조절

sns.lamplot(x, y, data) : x,y와의 관계파악

sns.lmplot(x='', y='', data=, 
		   hue='',
            ci=None,			 # ci 신뢰구간 선택
            scatter_kws={'s':5}, # 점크기
            order=1,			 # 직선1,곡선2
            robust=True,		 # True 특이값(outliner) 미포함


- data.query():카테고리 지정

sns.heatmap(data)

: 2차원 숫자 배열을 색상으로 표현하는 기능으로 여러 데이터의 경향을 한 번에 확인

sns.heatmap(data, 
			annot=True, 		# True: 데이터 값을 표현
            fmt='', 			# fmt='d': 정수형 표시 / 'f':실수
            cmap='YlGnBu',		# 'RdPu'(붉은 계열)
            linewidths=0.5,      #박스간의 간격으로 디폴트는 0
            

sns.pairplot(data) : 각 컬럼별 데이터에 대한 상관관계나 분류적 특성을 보여줌

sns.pairplot(data,
			hue='',
            x_vars='',              # 원하는 컬럼만 pairplot 멀티도 가능[' ',' ']
            y_vars='',              # x,y을 나누지 않고 vars=' '도 가능
            kind='reg')				# 'reg'회귀분석

sns.countplot

sns.countplot(
    x='col',
    data=df,
    palette='',                    # deep가능
    order=df['col'].value_counts().index)
  #order 매개변수는 범주형 데이터의 순서를 정의,
  #.index를 함으로써 count숫자가 아닌 이름이 나옴

프로젝트_서울 CCTV, 프로젝트_서울 범죄2

“이글은제로베이스데이터취업스쿨의강의자료일부를발췌하여
작성되었습니다.”

0개의 댓글