우당탕탕 개발공부

파이썬 데이터 분석 - [ 그래프 ] 본문

✍ Study/데이터 분석

파이썬 데이터 분석 - [ 그래프 ]

냥냥서 2023. 1. 11. 16:41

🚀 파이썬을 이용한 다양한 그래프 

: 2차원 그래프 뿐만 아니라 3차원 그래프, 지도 그래프, 네트워크 그래프,  버블차트 등 다양한 패키지가 있음

 

seaborn 패키지

: 그래프를 만들 때 많이 사용하는 패키지

 

 

산점도
: 데이터를 x축과 y축에 점으로 표현한 그래프

산점도는 나이와 소득처럼 연속값으로 된 두 변수의 관계를 표현할 때 사용

sns.scatterplot(  ) 이용

# x축 displ, y축 hwy 나타낸 산점도 만들기
import seaborn as sns
sns.scatterplot( data= mpg , x='displ' , y='hwy')

 

 

축 범위 설정하기

: 데이터 전체가 아니라 일부만 표현하고 싶을 때 축 범위 설정

sns.set(  )xlimylim 이용해 설정

# x축 범위 3-6으로 제한
sns.scatterplot( data = mpg , x = 'displ' , y = 'hwy') \
    .set(xlim = (3,6))

# x축 범위 3-6으로 제한 , y축의 범위 10-30으로 제한
sns.scatterplot( data = mpg , x = 'displ' , y = 'hwy') \
    .set(xlim = (3,6), ylim = (10,30))

 

 

종류별로 표식 색깔 바꾸기

hue(  ) 

# drv별로 표식 색깔 다르게 표현
sns.scatterplot(data=mpg, x='displ',y='hwy', hue='drv');  # ; 사용 시 설명 메시지 출력 x

 

 

 

 

막대 그래프
: 데이터의 크기를 막대의 길이로 표현한 그래프

성별 소득 차이처럼 집단 간 차이를 표현할 때 사용

sns.barplot(  ) 이용

df_mpg = mpg.groupby('drv') \
            .agg(mean_hwy = ('hwy','mean'))
df_mpg

 

seaborn으로 그래프를 만드려면 값이 변수에 담겨야 함

변수를 인덱스로 바꾸지 않고 원래대로 유지하려면 df.groupby(  )as_idex = False 입력

df_mpg = mpg.groupby('drv', as_index = False) \
            .agg(mean_hwy = ('hwy','mean'))
df_mpg

 

sns.barplot(  ) 이용, data = 데이터 프레임을 지정한 다음 x =  범주를 나타낸 변수  y = 평균값을 나타낸 변수 지정

sns.barplot(data = df_mpg, x='drv',y='mean_hwy');

 

 

크기순으로 정렬하기

df.sort_values(  )ascending = False

df_mpg = df_mpg.sort_values('mean_hwy', ascending = False)
sns.barplot( data = df_mpg, x = 'drv', y='mean_hwy')

 

 

 

선 그래프
: 데이터를 선으로 표현한 그래프

시간에 따라 달라지는 데이터를 표현할 때 사용

일정 시간 간격을 두고 나열된 데이터시계열 데이터,

시계열 데이터를 선으로 표현한 그래프를 시계열 그래프라고 한다.

sns.lineplot(  ) 이용

sns.lineplot( data = economics, x='date',y='unemploy');

💥 x축에 굵은 선으로 보이는 이유

'연월일'을 나타낸 문자가 담겨 있는데, x축에 가로로 여러 번 겹쳣 표시 되어서 굵은 선으로 보임

 

 

x축에 연도 표시하기

pd.to_datetime(  )을 이용하면 변수의 타입을 날짜 시간 타입으로 바꿀 수 있음

# 날짜 시간 타입 변수 만들기
economics['date2']= pd.to_datetime(economics['date'])

# 변수 타입 확인
economics.info()

 

변수의 타입을 날짜 시간 타입으로 바꿔도 값은 달라지지 않음 !!

economics[['date','date2']]

( ..생략.. )

 

 

df.dt 이용해 연, 월, 일 출력 가능

# 연 추출
economics['date2'].dt.year

# 월 추출
economics['date2'].dt.month

# 일 추출
economics['date2'].dt.day

 

연도 변수 만들기

# 연도 변수 추가
economics['year'] = economics['date2'].dt.year
economics.head()

 

 

x축에 연도 표시하기

sns.lineplot(  )의 x에 입력하면 x축에 연도가 표시

# x축에 연도 표시
sns.lineplot( data=economics , x='year', y='unemploy');

 

선 위아래에 표시된 면적 --> 신뢰구간 

신뢰구간을 표시하지 않으려면 ci = None 

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

 

 

 

 

 

상자그림
: 데이터의 분포 또는 퍼져 있는 형태를 직사각형 상자 모양으로 표현한 그래프

데이터가 어떻게 분포하고 있는 지 알 수 있기 때문에, 평균값만 볼 때보다 데이터의 특징을 더 자세히 이해할 수 있음

sns.boxplot(  ) 이용

 

sns.boxplot( data = mpg , x='drv',y='hwy');

 

 


막대 그래프랑 빈도 막대 그래프를 헷갈렸다.. '빈도'가 들어가면 count 사용하고

그냥 막대그래프는 bar를 사용한다!!! 그리고 빈도 막대 그래프는 y축을 지정하지 않는 듯??

오늘까지해서 기본기가 끝났다 ! 얼른 데이터 분석 예제 공부하고 싶다