ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [matplotlib][seaborn] 데이터프레임으로 선그래프 그리기 :: plt.plot sns.lineplot
    직접 해보기/Python 2024. 6. 25. 02:07
    728x90
    반응형

    ✅ 선 그래프

    선 그래프 (Line Plot) matplotlib 메소드 seaborn 메소드
    •시간, 순서에 따른 변화를 살펴보기에 적합함
    •데이터의 증감을 파악할 수 있음
    plt.plot() sns.lineplot()

    0️⃣  패키지 & 데이터프레임 불러오기

    • 예시가 될 데이터셋은 Kaggle에서 가져온 Flight Price Prediction 입니다. 
    • days_left(출발까지 남은일수)에 따른 평균 price(티켓가격)의 변화를 선 그래프로 살펴보고자 합니다.
      groupby 메소드로 평균값 데이터셋을 만든 다음 시각화를 진행해보겠습니다.
    # 패키지 불러오기
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    # 데이터셋 불러오기
    df = pd.read_csv('./Clean_Dataset.csv', encoding='cp949')
    df = df.drop([df.columns[0]], axis=1)
    
    # days_left(출발까지 남은일수)에 따른 평균 price(티켓가격)의 변화
    days_price = df.groupby(by='days_left').mean(numeric_only=True)[['price']]


    1️⃣-1.  plt 선 그래프 그리기  ::  plt.plot

    • plt로 그래프를 그리는 단계는 기본적으로 차트 영역 지정하기 → 시각화 → 차트 표시하기 순서입니다.
    • plt.plot()에 데이터프레임만 넣어주면, 인덱스는 x축, 칼럼 값들은 y축으로 알아서 들어갑니다.
    # 차트 영역 지정하기
    plt.figure()
    
    # 선 그래프 그리기
    plt.plot(days_price)
    
    # 차트 표시하기
    plt.show()


    1️⃣-2.  plt 커스터마이징 해보기

    • 차트 크기 바꾸기: plt.figure(figsize=(너비,높이))
    • 차트 눈금선 표시하기: plt.grid(True)
    • 제목 표시하기: plt.title('제목')
    • x,y축 범위 바꾸기: plt.xlim(최솟값,최댓값), plt.ylim(최솟값,최댓값)
    • x,y축 눈금 바꾸기: plt.xticks(범위)plt.yticks(범위)
    • x,y축 이름 표시하기: plt.xlabel('x축 이름'), plt.ylabel('y축 이름')
    # 차트 영역 지정하기
    plt.figure(figsize=(12,6))
    
    # 선 그래프 그리기
    plt.plot(
        days_price,                    # 데이터 지정
        color = 'c', linewidth = 3,    # 선 색상, 두께 설정
        marker = '.', markersize = 10  # 마커 모양, 크기 설정
    )
    # y축 범위 변경하기
    plt.ylim(0, 35000)
    
    # x축 눈금 설정하기
    plt.xticks(np.arange(0,50,5))
    
    # 눈금선 표시하기
    plt.grid(True, 
        linewidth = 1, linestyle = ':'  # 눈금선 두께, 스타일 설정
    )
    # 제목 표시하기
    title = {'fontsize':'14', 'fontweight':'bold'}
    plt.title(
        '출발까지 남은일수에 따른 평균 티켓가격의 변화', 
        fontdict = title,  # 글꼴 설정
        pad = 10           # 그래프와 간격 설정
    )
    # x,y축 이름 표시하기
    plt.xlabel('출발까지 남은일수 (days_left)')
    plt.ylabel('티켓 가격 (price)')
    
    # 차트 표시하기
    plt.show()

     

     


    2️⃣-1.  sns 선 그래프 그리기  ::  sns.lineplot

    • plt로 그리려면 평균값을 계산한 데이터셋을 따로 만들어야 했습니다.
    • 반면 sns는 따로 만들 필요없이.. 원래 데이터셋 그대로 넣어도 평균값을 알아서 계산해서 그려줍니다!
      이런 점에서 plt보다 통계적인 강점이 있다는 거죠. 선 그래프에 표시된 음영은 95%신뢰구간을 자동으로 표시해준 거에요.
    sns.lineplot(
        data = df,
        x = 'days_left', y = 'price'
    )


    2️⃣-2.  sns 커스터마이징 해보기

    • 아래 sns 메소드를 활용해도 되고, 위에서 썼던 plt 메소드를 그대로 써도 문제 없이 적용됩니다.

    • 그래프 테마 설정하기: sns.set_theme(style='테마이름') (테마종류: "white", "dark", "whitegrid", "darkgrid", "ticks")
    • 그래프 크기, 한글폰트 설정하기: sns.set(font='폰트이름', rc={딕셔너리 형태로 설정})
    • 제목 표시하기: lineplot.set(title='제목')
    • x,y축 범위 바꾸기: lineplot.set(xlim = (최솟값,최댓값), ylim = (최솟값,최댓값))
    • x,y축 이름 표시하기: lineplot.set(xlabel = 'x축 이름', ylabel = 'y축 이름')
    • x,y축 눈금 바꾸기: lineplot.set_xticks(범위), lineplot.set_yticks(범위)
    # 그래프 테마 설정하기
    sns.set_theme(
        style = 'darkgrid'
    )
    # 그래프 크기, 폰트 설정하기
    sns.set(
        font = 'NanumBarunGothic',
        rc = {'figure.figsize' : (12,6), 
              'axes.unicode_minus' : False}
    )
    # 선 그래프 그리기
    lineplot = sns.lineplot(
        data = df, x = 'days_left', y = 'price', 
        color = 'green', linewidth = 3
    )
    # 축 범위, 축 이름, 그래프 제목 지정하기
    lineplot.set(
        ylim = (0,35000), 
        xlabel = '출발까지 남은일수 (days_left)',
        ylabel = '티켓 가격 (price)',
        title = '출발까지 남은일수에 따른 평균 티켓가격의 변화'
    )
    # x축 눈금 설정하기
    lineplot.set_xticks(np.arange(0,50,5))


     

     

    728x90
    반응형