프로그래밍/파이썬

데이터 분석 - 파이썬으로 그래프 만들기(seaborn)

매 석 2023. 1. 12. 14:58
반응형

1. seaborn 설치

pip3 install seaborn

 

2. 산점도 - 변수 간 관계 표현하기

소스 코드 (기본 차트)

import pandas as pd
mpg=pd.read_csv('mpg.csv')
import seaborn as sns
sns.scatterplot(data=mpg, x='displ', y='hwy')

결과 사진

소스 코드(축 범위 설정)

import pandas as pd
mpg=pd.read_csv('mpg.csv')
import seaborn as sns
sns.scatterplot(data=mpg, x='displ', y='hwy').set(xlim=(3,6), ylim=(10,30))

결과 사진

소스 코드(표식 색깔 변경)

import pandas as pd
mpg=pd.read_csv('mpg.csv')
import seaborn as sns
sns.scatterplot(data=mpg, x='displ', y='hwy', hue='drv')

결과 사진

 

 

3. 막대 그래프 - 집단 간 차이 표현하기

소스 코드(기본 그래프)

import pandas as pd
mpg=pd.read_csv('mpg.csv')
import seaborn as sns
df=mpg.groupby('drv', as_index=False).agg(meanhwy=('hwy', 'mean'))
sns.barplot(data=df, x='drv', y='meanhwy')

결과 사진

소스 코드(크기순 정렬)

import pandas as pd
mpg=pd.read_csv('mpg.csv')
import seaborn as sns
df=mpg.groupby('drv', as_index=False).agg(meanhwy=('hwy', 'mean'))
df=df.sort_values('meanhwy', ascending=False)
sns.barplot(data=df, x='drv', y='meanhwy')

결과 사진

+ 빈도 막대 그래프 그리기

소스 코드(2가지)

import pandas as pd
mpg=pd.read_csv('mpg.csv')
import seaborn as sns
df=mpg.groupby('drv', as_index=False).agg(n=('drv', 'count'))
sns.barplot(data=df, x='drv', y='n')

또는

sns.countplot(data=mpg, x='drv')
+ 막대 정렬하기
sns.barplot(data=df, x='drv', order=['4','f','r']) 또는
sns.barplot(data=df, x='drv', order= mpg['drv'].value_counts().index)
 

결과 사진

참고로 둘의 결과 사진은 순서가 달라진다.

groupby를 사용한 경우 알파벳 순서로 정렬되어 4->f->r이고,

countplot는 입력된 순서인 f->4->r 순서로 정렬된다.

( 입력된 순서는 mpg['drv'].unique()로 확인할 수 있다.)

 

 

4. 선 그래프 - 시간에 따라 달라지는 데이터 표현하기

소스 코드(기본 그래프)

import pandas as pd
import seaborn as sns
eco = pd.read_csv('economics.csv')
sns.lineplot(data=eco, x='date', y='unemploy')

결과 사진

소스 코드(연도 표시)

import pandas as pd
import seaborn as sns
eco = pd.read_csv('economics.csv')
#datetime64 형태로 변환하여 date2에 저장
eco['date2']=pd.to_datetime(eco['date'])
#연도 추출
eco['year']=eco['date2'].dt.year
sns.lineplot(data=eco, x='year', y='unemploy')

+ 신뢰구간 제거
sns.lineplot(data=eco, x='year', y='unemploy', ci=None)

결과 사진

5. 상자 그림 - 집단 간 분포 차이 표현하기

소스 코드(기본)

import pandas as pd
import seaborn as sns
eco = pd.read_csv('economics.csv')
sns.boxplot(data=mpg, x='drv', y='hwy')

결과 사진

6. 마무리 정리

sns.scatterplot() : 산점도
sns.barplot() : 막대 그래프 - 요역표 활용
sns.countplot() : 빈도 막대 그래프 - 원자료 활용
sns.lineplot() : 선 그래프
sns.boxplot() : 상자 그림