pandas plot
- Python/Pandas
- 2022. 3. 10.
판다스만으로 그래프를 그리는 방법입니다.
보통 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보다는 코딩량이 적고 간편함은 분명히 있어보입니다. 데이터프레임을 가지고 기본적인 그래프를 그려나간다고 한다면 판다스를 써도 괜찮을 것 같습니다.
'Python > Pandas' 카테고리의 다른 글
pandas로 box,area,scatter 그리기 (0) | 2022.03.17 |
---|---|
pandas로 bar,hist,density 그리기 (0) | 2022.03.15 |
[Pandas]구간 나누기(pd.cut,pd.qcut) (0) | 2022.03.08 |
[Pandas] 그룹화된 데이터프레임 필터링하기 (0) | 2022.03.07 |
[Pandas] groupby 데이터프레임에 함수 적용하기(transform) (0) | 2022.03.03 |