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