pandas plot

반응형
    반응형

    판다스만으로 그래프를 그리는 방법입니다.
    보통 matplotlib나 pylab을 import 해서 그래프를 그리곤 했는데 pandas만으로도 그릴 수 있습니다.
    왠만한건 다 되는 것 같습니다.

    기본 그래프 그리기

    데이터가 시리즈나 데이터프레임 모양이면 plot() 메쏘드를 이용해 그래프를 생성할 수 있습니다.

    시리즈(Series)

    np.random.seed(222)
    random_num = pd.Series(np.random.randn(1096),index=pd.date_range('2020-01-01','2022-12-31'))
    random_walk = random_num.cumsum()
    random_walk.plot()

    데이터프레임(DataFrame)

    위에 비슷하게 하되 컬럼을 하나 더 추가해 데이터프레임으로 만들어 plot()을 실행하겠습니다.

    df = pd.DataFrame(np.random.randn(1096,2), index=random_walk.index,columns=list('AB'))
    random_walk_df = df.cumsum()
    random_walk_df.plot()

    plot()을 실행하면 기본적으로 컬럼을 라벨링해줍니다.

    제목, 축이름 붙이기

    제목과 축이름을 붙이려면 파라미터에 title, xlabel, ylabel을 각각 넣어줍니다.

    시리즈(Series)

    np.random.seed(222)
    random_num = pd.Series(np.random.randn(1096),index=pd.date_range('2020-01-01','2022-12-31'))
    random_walk = random_num.cumsum()
    random_walk.plot(title='The Graph',xlabel='Time',ylabel='Value')

    데이터프레임(DataFrame)

    데이터프레임도 마찬가지입니다.

    np.random.seed(222)
    df = pd.DataFrame(np.random.randn(1096,2), index=random_walk.index,columns=list('AB'))
    random_walk_df = df.cumsum()
    random_walk_df.plot(title='The Graph',xlabel='Time',ylabel='Value')

    데이터프레임은 컬럼이 여러개라서 x를 컬럼으로 지정해주면 x축이 축이름과 해당컬럼의 값으로 구성됩니다.

    df2 = random_walk_df.copy()
    df2['C'] = pd.Series(np.arange(0,len(df2)),index=df2.index)
    df2.plot(x='C',y=['A','B'])

    라벨 위치 변경하기

    표 안에 있는 라벨은 자동으로 나오는데 이 위치를 변경할 수 있습니다. matplotlib와 동일하게 legend의 파라미터 loc로 위치변경을 합니다.

    random_walk_df = df.cumsum()
    ax = random_walk_df.plot(title='The Graph',xlabel='Time',ylabel='Value')
    ax.legend(loc='right')

    loc에 넣을 수 있는 값은 다음과 같습니다.

    종류 위치
    best 디폴트값(알아서 셋팅해줌)
    upper right 오른쪽 위
    upper left 왼쪽 위
    lower left 왼쪽 아래
    right 오른쪽 중간
    center left 왼쪽 중간
    center right 오른쪽 중간
    lower center 중앙 아래
    upper center 중앙 위
    center 정중앙

     

    라벨 없애기

    데이터프레임에서 plot을 진행하면 기본적으로 라벨이 생기는데 없애려면 legend=False를 넣습니다.

    random_walk_df = df.cumsum()
    random_walk_df.plot(title='The Graph',xlabel='Time',ylabel='Value',legend=False)

    라인 꾸미기

    라인 색 바꾸기

    라인색은 style에 넣어서 하면 됩니다.
    컬럼 순서대로 리스트 형식으로 지정하는 방식입니다.
    일반적인 색깔은 r(red),b(blue),y(yellow) 과 같이 색깔에 맨 앞자를 따오는 경우가 많습니다.
    주요 색상은 다음과 같습니다.

    Input Color
    b Blue
    g Green
    r Red
    c Cyan
    m Magenta
    y Yellow
    k Black
    w White

     

    더하여, 선호하는 색깔이 있다면 RGB 를 입력해서 색깔을 지정할 수도 있습니다.

    random_walk_df.plot(style=['g','#ff5544'])

     

    라인 굵기

    라인 굵기는 lw에 적당한 수치를 대입합니다.
    모든 라인의 굵기를 다 변경하게 됩니다.

    random_walk_df.plot(style=['g','#ff5544'],lw=4)

     

    라인 모양 바꾸기

    라인 모양도 matplotlib와 비슷하게 바꿀 수 있습니다.

    t= np.arange(0,5)
    legend_labels=['Solid','Dashed','Dotted','Dot-dashed','Points']
    line_style = pd.DataFrame({0:t,1:t*1.5,2:t*2.0,3:t*2.5,4:t*3.0})
    ax = line_style.plot(style=['r-','g--','b:','m-.','k:'])
    ax.legend(legend_labels,loc='upper left')

    라인의 각 포인트의 모양도 변경할 수 있습니다.
    맨끝에 포인트 모양을 넣습니다.

    t= np.arange(0,5)
    legend_labels=['Solid','Dashed','Dotted','Dot-dashed','Points']
    line_style = pd.DataFrame({0:t,1:t*1.5,2:t*2.0,3:t*2.5,4:t*3.0})
    ax = line_style.plot(style=['r-o','g--^','b:*','m-.D','k:o'])
    ax.legend(legend_labels,loc='upper left')

    마치며

    plot만을 이용해 그래프를 그려봤습니다.
    물론 matplotlib가 더 다양하고 여러가지 기능을 갖췄습니다만 판다스도 장점이 있습니다. matplotlib보다는 코딩량이 적고 간편함은 분명히 있어보입니다. 데이터프레임을 가지고 기본적인 그래프를 그려나간다고 한다면 판다스를 써도 괜찮을 것 같습니다. 

     

    관련 포스팅
    [matplotlib]plt 라벨(label) 위치설정

    [Python/Pandas] - pandas로 bar,hist,density 그리기

    댓글

    Designed by JB FACTORY

    ....