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

🐰  선 그래프 line chart : 데이터를 선으로 표현한 그래프, 시간에 따라 달라지는 데이터를 표현할 때 자주 사용
🐰  환율, 주가지수 등 경제 지표가 시간에 따라 변하는 양상을 '선 그래프'로 표현

    🥕  시계열 데이터 time series data  : 일별 환율처럼, 일정 시간 간격을 두고 나열된 데이터
    🥕  시계열 그래프 time series chart : 시계열 데이터를 선으로 표현한 그래프

 


 

1) 시계열 그래프 만들기

 

🐰  economics는 미국의 여러 가지 경제 지표를 월별로 나타낸 데이터
🐰  economics를 이용해 시간에 따라 실업자 수가 어떻게 변하는지 나타낸 시계열 그래프를 생성

🐰  sns.lineplot()을 이용하면 선 그래프를 만들 수 있다

 

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# economics 데이터(시계열 데이터) 불러오기
economics = pd.read_csv('../input/economics.csv')

'''
         date    pce       pop  psavert  uempmed  unemploy
0  1967-07-01  506.7  198712.0     12.6      4.5      2944
1  1967-08-01  509.8  198911.0     12.6      4.7      2945
2  1967-09-01  515.6  199113.0     11.9      4.6      2958
3  1967-10-01  512.2  199311.0     12.9      4.9      3143
4  1967-11-01  517.4  199498.0     12.8      4.7      3066
'''
# x축에는 시간을 나타낸 date, y축에는 실업자 수를 나타낸 uneploy를 지정
sns.lineplot(data=economics, x='date', y='unemploy')
plt.show()

 

 

📍 출력된 그래프를 보면 x축에 굵은 선이 표시
      ▶️  date 변수에는 '1967-07-01' 처럼 '연월일'을 나타낸 문자가 있는데 이 값이 x축에 가로로 여러 번 겹쳐 표시되어서 굵은 선으로 보임

 

 

 

 

 

 


 

(1)  x축에 연도 표시하기

 

🥕  x축에 연도를 표시하려면 변수 타입을 날짜 시간 타입 datetime64으로 바꿔야
       ( economics 데이터의 date가 문자 object 타입으로 되어 있음 )

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

        ⚡️  변수의 타입을 날짜 시간 타입으로 바꾸더라도 값이 달라지지 않음

🥕  날짜 시간 타입은 df.dt를 이용해 연, 월, 일을 추출할 수 있음

# 날짜 시간 타입 변수 만들기
# date 타입을 날짜 시간 타입으로 변경해서 date2 변수 추가
economics['date2'] = pd.to_datetime(economics['date'])

# 변수 타입 확인
economics.info()
'''
RangeIndex: 574 entries, 0 to 573
Data columns (total 7 columns):
 #   Column    Non-Null Count  Dtype         
---  ------    --------------  -----         
 0   date      574 non-null    object        
... 생략...    
 6   date2     574 non-null    datetime64[ns]
 '''
# 연도 변수 추가
economics['year'] = economics['date2'].dt.year
economics.head()
# 연도를 나타낸 변수를 sns.lineplot()의 x에 입력하면 x축에 연도가 표시
sns.lineplot(data=economics, x='year', y='unemploy')
plt.show()

출력 결과

 

 

📍 선의 위아래에 표시된 면적은 신뢰구간 confidence interval
📍 신뢰 구간을 표시하지 않으려면 errorbar = None을 입력

 

 

 

 

 

 

 

 

 

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

신뢰구간 제거 결과

 

# date2로 그래프 바로 생성
sns.lineplot(data=economics, x='date2', y='unemploy')
plt.show()

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 ]


 

1. 상자 수염 그래프  Box plot

 

🍒  데이터의 분포 또는 퍼져 있는 형태를 직사각형 상자 모양으로 표현한 그래프
🍒  상자 그림을 보면 데이터가 어떻게 분포하고 있는지 알 수 있기 때문에 평균값만 볼 때 보다 데이터의 특징을 더 자세히 이해할 수 있음

🍒  사람의 나이가 500살, 키가 5미터 등은 표현은 가능하지만 현실적으로 불가능한 값들 이를 이상치, 극단치라고 하는데

      이상치는 효과적인 데이터 분석을 위해 제거해야 함
       ⚡️  이상치를 제거하기 위해 값의 정상 범위를 정하는 방법이 있다.

              ▶️  나이의 경우 121살은 이상치로 보는 것
       ⚡️  다른 방법으로 통계적인 기법을 사용
              ▶️  정규 분포에서 상하위 0.2% 밖의 데이터를 극단적인 값으로 가정하여 제거


 

1) 상자 그림 만들기

 

✏️  sns.boxplot()을 사용하여 그래프 생성

✏️  값을 크기순으로 나열해 4등분했을 때 위치하는 값인 '사분위수'를 이용해 그래프가 생성 된다
✏️  다음은 상자 그림의 요소가 나타내는 값

상자 그림 설명
상자 아래 세로선   아랫수염 하위 0 ~ 25% 내에 해당하는 값
상자 밑면  1사분위수(Q1) 하위 25% 위치 값
상자 내 굵은 선 2사분위수(Q2) 하위 50% 위치 값 (중앙값)
상자 윗면  3사분위수(Q3) 하위 75% 위치 값
상자 위 세로선 윗수염 하위 75 ~ 100% 내에 해당하는 값
상자 밖 가로선  극단치 경계 Q1, Q3 밖 1.5 IQR 내 최대값
상자 밖 점 표식 극단치  Q1, Q3 밖 1.5 IQR을 벗어난 값

  📍  IQR(사분위 범위)은 1사분위수와 3사분위수의 거리(직사각형의 높이)를 뜻하고 '1.5 IQR'은 IQR의 1.5배을 뜻함


 

📁  mpg 데이터를 이용해 x축을 drv, y축을 hwy로 지정하고 '구동 방식별 고속도로 연비'를 상자 그림으로 표현

     📌  mpt.csv : '구동 방식별 고속도로 연비 평균'
     📌  displ(배기량)
     📌  hwy(고속도로 연비)
     📌  drv(구동방식)

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 데이터 준비
mpg = pd.read_csv('../input/mpg.csv')

# 그래프 생성
sns.boxplot(data=mpg, x='drv', y='hwy')
plt.show()

 

 

📍  전륜구동(f)은 26 ~ 29 사이의 좁은 범위에 자동차가 모여 있는 뾰족한 형태의 분포
📍  수염의 위아래에 점 표식이 있는 것을 보면 연비가 극단적으로 높거나 낮은 자동차들이 존재
📍  4륜구동(4)은 17 ~ 22 사이에 자동차 대부분이 모여 있는 형태
        ▶️ 중앙값이 상자 밑면에 가까운 것을 보면 낮은 값 쪽으로 치우친 형태의 분포
📍  후륜구동(r)은 17 ~ 24 사이의 넓은 범위에 자동차가 분포
        ▶️ 수염이 짧고 극단치가 없는 것을 보면 자동차 대부분이 사분위 범위에 해당

 

 

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 ]


 

1.  산점도

🌻  데이터를 x축과 y축에 점으로 표현한 그래프
🌻  나이와 소득처럼 연속값으로 된 두 변수의 관계를 표현할 때 사용

 

1) 데이터 준비

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

mpg = pd.read_csv('../input/mpg.csv')
mpg.head()
'''
  manufacturer model  displ  year  cyl       trans drv  cty  hwy fl category
0         audi    a4    1.8  1999    4    auto(l5)   f   18   29  p  compact
1         audi    a4    1.8  1999    4  manual(m5)   f   21   29  p  compact
2         audi    a4    2.0  2008    4  manual(m6)   f   20   31  p  compact
3         audi    a4    2.0  2008    4    auto(av)   f   21   30  p  compact
4         audi    a4    2.8  1999    6    auto(l5)   f   16   26  p  compact
'''

 

📍 mpg.csv : '구동 방식별 고속도로 연비 평균'
📍 displ(배기량)
📍 hwy(고속도로 연비)
📍 drv(구동방식)


 

2) 그래프 생성

 

🌻  sns.scatterplot() : 산점도 만들때 사용
🌻  data : 그래프를 그리는 데 사용할 데이터 프레임을 입력
🌻  x, y : x축과 y축에 사용할 변수(데이터 프레임의 열)를  문자 형태로 입력

# x축은 displ, y축은 hwy를 나타낸 산점도 만들기
# mpg 데이터의 displ(배기량) 변수를 x축에, hwy(고속도로 연비) 변수를 y축에 놓음
sns.scatterplot(data=mpg, x='displ', y='hwy')
plt.show()

출력 결과


 

2. 추가 속성 적용

1) 축 범위 설정

 

🌻  축은 기본적으로 최소값에서 최대값까지 모든 범위의 데이터를 표현하도록 설정

🌻  데이터 전체가 아니라 일부만 표현하고 싶을 때는 축 범위를 설정
       ⚡️  sns.set() : 범위를 설정하는데 사용
       ⚡️  xlim, ylim을 이용해 설정

# xlim을 이용해 x축 범위 3~6으로 제한
sns.scatterplot(data=mpg, x='displ', y='hwy').set(xlim=(3, 6))
plt.show()

출력 결과


 

2) 종류별 표식 색깔 변경

 

🌻  hue='변수명'를 이용하면 표식 marker의 색깔을 종류별로 다르게 표현할 수 있음

# drv별로 표식 색깔 다르게 표현
sns.scatterplot(data=mpg, x='displ', y='hwy', hue='drv')
plt.show()

출력 결과


 

3) 그래프 활용

 

📌  Runtime Configuration Parameters = rcParams

       ▶️ 그래프 설정 변경할 때 사용

# 그래프 설정 바꾸기
plt.rcParams.update({'figure.dpi': '150'})  # 해상도, 기본값 72
plt.rcParams.update({'figure.figsize': [8,6]})  # 그림 크기, 기본값 [6,4]
plt.rcParams.update({'font.size': '15'})  # 글자 크기, 기본값 10
plt.rcParams.update({'font.family': 'AppleGothic'})  # 폰트, 기본값 sans-serif

# 여러 요소를 한 번에 설정하려면 {}에 설정값을 나열
plt.rcParams.update({'figure.dpi': '150',
                     'figure.figsize': [8,6],
                     'font.size': '15',
                     'font.family': 'AppleGothic'})

# 모든 설정 되돌리기
# 같은 페이지내에서 변경된 설정을 되돌림
# plt.rcParams.update(plt.rcParamsDefault)

sns.scatterplot(data=mpg, x='displ', y='hwy')
plt.show()

출력 결과

 

 

 

 

[ 내용 참고 : IT 학원 강의 ]

+ Recent posts