pandas로 box,area,scatter 그리기
- Python/Pandas
- 2022. 3. 17.
pandas로만 box plot, area plot, scatter plot을 그려보겠습니다.
이전 포스팅에서는 막대그래프류인 bar,hist,density에 대해 그려보았었는데
이번 포스팅에서는 pandas로 그릴 수 있는 나머지 그래프에 대해 살펴보겠습니다.
box plot
box plot은 사분위범위를 기준으로 이상치가 어디에 있는지 한눈에 볼 수 있는 그래프입니다.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10,5))
df.boxplot(return_type='axes')
여러 컬럼이 있는 penguins이라는 데이터를 가져와 boxplot을 만들어보겠습니다.
import seaborn as sns
penguins = sns.load_dataset('penguins')
penguins = penguins.dropna()
boxplot로 그릴 column을 선택하고 범주는 by로 설정합니다.
plt.rcParams["figure.figsize"] = (12, 9)
penguins_dropna.boxplot(column=['bill_length_mm'],by=['sex','island'])
plt.show()
area plot
area plot은 말그대로 넓이로써 값을 표현하는 그래프입니다. 디포트 값은 stack=True 으로 행을 기준으로 값을 쌓습니다.
dfa = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
dfa.plot(kind='area')
area 그래프를 수치적으로 표현하면 데이터프레임으로 보면 cumsum(axis=1) 에 해당합니다.
dfa.cumsum(axis=1)
행의 값을 쌓지 않으려면stacked=False을 합니다.
dfa.plot(kind='area',stacked=False)
scatter plot
scatter plot은 산포도라고 하는데 (x,y) 값 형태의 흩어진 정도를 확인할 수 있습니다.
scatter_df = pd.DataFrame(np.random.randn(10000,2),columns=['a','b'])
scatter_df.plot(kind='scatter',x='a',y='b')
scatter를 그릴려면 x와 y 컬럼을 지정해서 합니다.
주로 x,y의 함수관계의 의미가 있거나 데이터가 어느부분에 군집형태로 모이고 있는지 확인할 수 있습니다.
scatter matrix
scatter matrix는 산점도 행렬이라고 하는데 다변량 데이터에서 각 변수 간 관계를 산포도로 그려줍니다.
alpha로 투명도를 조정할 수 있습니다. 디폴트 값은 0.5입니다.
대각선에 그려지는 그래프는 density plot 과 histogram만 가능합니다.
from pandas.plotting import scatter_matrix
np.random.seed(111111)
df_scm= pd.DataFrame(np.random.randn(1000,4),columns=['a','b','c','d'])
scatter_matrix(df_scm,alpha=0.2,figsize=(6,6),diagonal='kde')
다음은 histogram으로 그린 경우입니다.
df_scm= pd.DataFrame(np.random.randn(1000,4),columns=['a','b','c','d'])
scatter_matrix(df_scm,alpha=0.2,figsize=(6,6),diagonal='hist')
마치며
판다스만 사용해서 그려지는 그래프에 대해서 정리해보았습니다.
matplotlib 처럼 모양을 더 이쁘게 그릴 수 있지는 않지만 plot을 이용하면
데이터프레임의 변경없이 간편하게 그래프를 있었습니다.
관련 포스팅
pandas plot
'Python > Pandas' 카테고리의 다른 글
pandas cheatsheet(코드요약) (0) | 2022.09.24 |
---|---|
[Pandas] 데이터프레임 리스트,numpy 배열로 변환 (0) | 2022.09.22 |
pandas로 bar,hist,density 그리기 (0) | 2022.03.15 |
pandas plot (0) | 2022.03.10 |
[Pandas]구간 나누기(pd.cut,pd.qcut) (0) | 2022.03.08 |