DataFrame.plot(args, kwargs)
plot 메서드는 matplotlib 라이브러리를 이용해 dataframe 객체를 시각화 하는 메서드 입니다.
DataFrame.plot이 아닌 matplotlib 라이브러리의 사용법은 matplotlib 홈페이지를 참고 바랍니다.
※ matplotlib에 대한 기본적인 지식이 있을경우 보다 이해가 쉽습니다.
df.plot(args, kwargs)
kind : 플로팅할 유형입니다. 목록은 아래와 같습니다.
※ {line / bar / barh / hist / box / kde / density / area / pie / scatter / hexbin} x / y : 각 축으로 설정할 값(컬럼명) 입니다.
ax : 현재 figure의 axes 입니다. (fig와 axes의 개념은 아래 링크 참고)
※ 링크
subplot : 각 열들을 별개의 서브차트로 플로팅할지의 여부입니다.
sharex / sharey : subplot=True 인 경우 각축의 눈금을 공유할지 여부 입니다.
layout : 튜플로 입력하는 subplot의 배열입니다.
figsize : 출력할 fig의 크기 입니다.
use_index : 인덱스를 x축의 눈금으로 사용할지 여부 입니다.
title : fig의 제목 입니다.
grid : 배경 격자의 형성 여부입니다.
legend : subplot에서의 범례 배치 입니다.
style : 선의 스타일 입니다. 자세한것은 링크 참고 바랍니다.
logx / logy / loglog : 각 축에 대해 로그 스케일을 적용할지 여부 입니다. loglog=True인 경우 두 축에 모두 적용합니다.
xticks / yticks : 각 축의 눈금 값을 지정합니다.
xlim / ylim : 각 축의 값의 경계를 지정합니다.
xlabel / ylabel : 각 축의 라벨을 지정합니다.
rot : 눈금값의 기울기 입니다. 눈금값이 많을경우 유용합니다.
fontsize : 눈금값의 크기 입니다.
colormap / colorbar : 각 값에 대해 matplolib 에서 지원하는 colormap을 적용할 수 있습니다.
table : True면 데이터를 테이블로 출력하며 matplotlib의 기본 레이아웃에 맞게 전치됩니다.
yerr / xerr : 특정 열의 값을 이용하여 오차범위 표현을 할 수 있습니다.
stacked : bar plot이나 barh plot의 경우 막대 그래프를 누적 막대그래프로 표현할 수 있습니다.
sort_columns : 열을 정렬하여 플랏할지 여부입니다.
secondary_y : 보조축 레이블을 출력할지 여부 입니다.
mark_right : 보조축 레이블을 출력할 경우 범례에 "(right)"으로 열 레이블을 표시할지 여부 입니다.
include_bool : bool형식의 값을 플랏할지 여부입니다.
backend : plotting.backend 옵션에 지정된 백엔드 대신 사용할 백엔드. 예를 들어, 'matplotlib'. 또는 전체 세션에 대해 plotting.backend를 지정하려면 pd.options.plotting.backend를 설정할 수 있습니다.
먼저 기본적인 사용법 예시를위하여 두가지 데이터를 만들어 보겠습니다.
df는 0~100까지의 x축 값을 갖는 sin 값 tan 값의 데이터 입니다.
코드
val = np.linspace(0,100,101)
sin = np.sin(np.pi/25*val)
tan = np.tan(np.pi/25*val)
df = pd.DataFrame(data={'val':val,'sin':sin,'tan':tan})
print(df)
실행 결과

df2는 df에서 sin, tan값만 추려낸 데이터 입니다.
df2 = df.loc[:,['sin','tan']]
기본 적인 사용법은 df.plot() 형태 입니다. line 형태로 모든 열을 plot하게 됩니다.
코드
df2.plot()
plt.show()
실행 결과

sin그래프, tan그래프가 출력된 것을 확인할 수 있습니다.
kind인수를 통해 원하는 형태의 그래프를 출력 할 수 있으며, x와 y로 해당 그래프의 x와 y를 지정할 수 있습니다.
※ {line / bar / barh / hist / box / kde / density / area / pie / scatter / hexbin}
코드
df.plot(kind='line', x='val', y='sin')
plt.show()
실행 결과

x축의 값은 0~100, y축의 값은 sin값으로 line 을 plot한 것을 확인할 수 있습니다.
ax인수를 통해 현재 axes값을 별도의 값으로 지정하여 plot에 사용할 수 있습니다.
코드
import matplotlib.pyplot as plt
fig, ax=plt.subplots(2) # 두개의 서브플롯에 ax를 배치하도록 fig를 설정
df.plot(kind='line', x='val', y='sin', ax=ax[0]) # sin그래프를 ax[0]으로 지정
df.plot(kind='line', x='val', y='tan', ax=ax[1]) # tan 그래프를 ax[1]으로 지정
plt.show()
실행 결과

각각의 ax로 구분한 Axes를 2칸짜리 subplot에 배열하여 plot한것을 확인 할 수 있습니다.
subplots인수를 사용할 경우 각각의 열을 별도의 axes로 하여 subplot를 생성합니다.
※ 위 ax인수의 예시처럼 fig를 별도의 subplot 개체로 지정할 필요가 없습니다.
코드
df2.plot(subplots=True)
plt.show()
실행 결과

각각의 열이 별도의 subplot에 할당된 것을 확인할 수 있습니다.
subplot을 이용할 경우 두 Axes의 x축이나 y축값을 맞출 수 있습니다.
이때 공유된 축의 경우 한쪽은 보이지 않게 됩니다.
sharex의 기본값은 True로 x축은 맞추게 되고, sharey의 기본값은 False로 y축은 별도로 출력하는것이 기본입니다.
코드
df2.plot(subplots=True, sharex=False, sharey=True) # x축값을 별도로 출력하고 y축값을 공유하도록 변경
plt.show()
실행 결과

x축값이 각각 그래프에 별도로 출력되는것을 확인 할 수 있습니다.
※subplot이 세로로 배열되어있기 때문에, shary=True인데 각각 출력이 됩니다. 가로로 배열되어있는상태라면 출력되지 않습니다.
layout인수를 이용하여 subplot의 배열을 설정할 수 있습니다. 튜플 형태로 값을 입력합니다.
코드
df2.plot(subplots=True, layout=(2,2))
plt.show()
실행 결과

fig가 2x2짜리 subplot으로 설정된 것을 확인할 수 있습니다.
figsize 인수를 이용해서 figure의 크기를 지정할 수 있습니다. 단위는 inch입니다.
코드
df2.plot(figsize=(10,4))
plt.show()
실행 결과

fig의 크기가 변경된 것을 확인할 수 있습니다.
title인수는 figure의 제목을 설정하고, grid인수는 격자 출력 여부를 설정할 수 있습니다.
코드
df2.plot(title="Pandas plot method", grid=True)
plt.show()
실행 결과

제목이 "Pandas plot method"로 설정되고, 격자가 설정된 것을 확인할 수 있습니다.
linestyle 인수를 지정하여 출력되는 그래프의 선 스타일을 지정할 수 있습니다.
선의 종류에 대해서는 matplotlib 홈페이지 참고 바랍니다.
코드
df2.plot(linestyle='dashed')
plt.show()
실행 결과

선의 종류가 "- -" 형태인 'dashed'로 바뀐것을 확인 할 수 있습니다.
logs / logy / loglog인수를 이용해 각 축의 표시형식을 log스케일로 변경할 수 있습니다.
loglog인수는 모든 축의 값을 로그스케일로 변경합니다.
코드
df2.plot(logx=True,logy=True) # df2.plot(loglog=True)
plt.show()
실행 결과

각 축의 표기형태가 로그 스케일로 변경된 것을 확인할 수 있습니다.
xticks / yticks 인수에 리스트 형태의 값을 입력하여 특정 눈금의 값을 출력할 수 있습니다.
코드
df.plot(kind='line', x='val',y='sin', xticks=[0,50,100],yticks=[0,0.5,1])
plt.show()
실행 결과

x축의 눈금이 0, 50, 100 만 y축의 눈금이 0, 0.5, 1 만 표시된 것을 확인할 수 있습니다.
xlim / ylim 인수를 사용해 그래프의 출력 범위를 지정할 수 있습니다.
코드
df.plot(kind='line', x='val',y='sin', xlim=[30,80],ylim=[0.25,0.75])
plt.show()
실행 결과

그래프가 x축으로는 30~80의 범위가, y 축으로는 0.25~0.75의 범위가 출력 된 것을 확인할 수 있습니다.
xlabel / ylabel 인수를 사용해 각 축의 라벨을 출력할 수 있습니다.
코드
df2.plot(xlabel='Width',ylabel='Height')
plt.show()
실행 결과

각 축의 이름이 출력 된 것을 확인할 수 있습니다.
rot 인수를 이용해 눈금값의 기울기를 지정할 수 있고, fontsize 인수를 통해 눈금값의 크기를 지정할 수 있습니다.
코드
df2.plot(rot=45,fontsize=20)
plt.show()
실행 결과

그래프 눈금값의 기울기가 45도로, 눈금값의 크기가 20으로 변경된 것을 확인할 수 있습니다.
colormap 은 출력되는 그래프의 값을 특정 색 범위로 표현하는 matplotlib의 기능입니다. colorbar는 색에 해당하는 값의 범위를 막대 형태로 출력하는 기능입니다.
colorbar의 기본값은 True이기 때문에, False로 지정해주어야 출력이 안됩니다.
colorbar를 적용하기 위해서는, 각 값에 대해서 색을 지정해 주어야합니다. c인수에 색의 값을 지정하는 열을 입력하여 가능합니다.
colormap의 종류에 대해서는 matplolib 에서 지원하는 colormap 링크을 참고 바랍니다.
코드
data = {'x_value':[4,7,3,1,2],'y_value':[1,2,3,4,5],'color_bar':[0,1,2,3,4]}
df3 = pd.DataFrame(data)
df3.plot(kind='scatter',x='x_value',y='y_value',c='color_bar', colormap='cool',colorbar=True) # c인수로 color_bar 열을 지정.
plt.show()
실행 결과

c='color_bar'를 통해 색범위를 0~4로 정해주었고, 각 y값에 대해서 색값을 지정해주었습니다.
그에 맞게 colormap과 colorbar가 적용된 것을 확인할 수 있습니다.
position인수는 막대그래프 'bar / barh'에대해서 막대의 위치가 눈금의 위치 {좌측(0), 중(0.5), 우측(1)}를 지정할 수 있습니다.
코드
data = {'x_value':[4,7,3,1,2],'y_value':[1,2,3,4,5],'color_bar':[0,1,2,3,4]}
df3 = pd.DataFrame(data)
fig, ax=plt.subplots(3) # 3칸짜리 subplot을 갖는 fig 개체 설정
df3.plot(kind='bar',x='x_value',y='y_value',position=0,ax=ax[0])
df3.plot(kind='bar',x='x_value',y='y_value',position=0.5,ax=ax[1])
df3.plot(kind='bar',x='x_value',y='y_value',position=1,ax=ax[2])
plt.show()
실행 결과

각각 그래프에서 눈금의 위치와 막대 그래프의 위치를 비교해보면 position인수가 어떻게 적용되는지 확인할 수 있습니다.
xerr / yerr인수는 특정 축을 기존그래프의 오차범위로 설정하는 인수 입니다.
코드
data = {'x_value':[1,2,3,4,5],'y_value':[2,5,3,7,1],'err':[0.1,0.3,0.6,1.0,0.1]}
df4 = pd.DataFrame(data)
fig, ax=plt.subplots(2)
df4.plot(kind='bar',x='x_value',y='y_value',yerr='err',ax=ax[0])
df4.plot(kind='barh',x='x_value',y='y_value',xerr='err',ax=ax[1])
plt.show()
실행 결과

기존 x_value / y_value 막대그래프에 대해서 작은 선 형태로 err 열이 오차범위로써 덧 씌워진 것을 확인할 수 있습니다.
막대그래프의 경우 값이 여러개라면 stacked인수를 통해 누적 막대그래프의 형태로 변환이 가능합니다.
코드
data = {'x_value':[1,2,3,4,5],'y_value':[2,5,3,7,1],'err':[0.1,0.3,0.6,1.0,0.1]}
df4 = pd.DataFrame(data)
df4.plot(kind='bar',x='x_value',y=['y_value','err'],stacked=True)
plt.show()
실행 결과

y의 값을 리스트 형태로 두 컬럼을 입력하여 두 막대그래프를 출력하도록 한 다음 stacked=True로 하여 누적 막대그래프가 된 것을 확인할 수 있습니다.
두 그래프를 출력 할 경우 한 Axes를 다른 Axes에 종속시킴으로서 종속된 Axes를 secondary_y 인수를 이용해 보조 축으로 표현할 수 있습니다.
코드
data = {'x_value':[1,2,3,4,5],'y_value':[2,5,3,7,1],'err':[0.1,0.3,0.6,1.0,0.1]}
df4 = pd.DataFrame(data)
ax1 = df4.plot(x='x_value',y='y_value',color='Red',) # y_value를 ax1로
ax2 = df4.plot(x='x_value',y='err',ax=ax1,secondary_y=True) # err을 ax2로하여 ax1에 종속 및 보조축 설정
ax1.set_ylabel('y_value') # 라벨 설정
ax2.set_ylabel('err')
실행 결과

ax1를 생성하고 ax2를 ax1에 종속시키면서 secondary_y=True로 하여 우측에 보조축이 생성된 것을 확인할 수 있습니다.
DataFrame.plot.[area / bar / barh / line].(x, y, kwargs)
plot.[area / bar / barh / line] 메서드는 pandas에서 지원하는 matplotlib 메서드 중에서 x축 / y축(값) 에 해당되는 열을 입력하여야 하는 메서드 입니다.
기본적으로 df.plot.(kind = [area / bar / barh / line], x=x축, y=y축(값))과 완벽히 동일합니다.
plot 메서드는 matplotlib 라이브러리를 이용해 dataframe 객체를 시각화 하는 메서드 입니다.
DataFrame.plot이 아닌 matplotlib 라이브러리의 사용법은 matplotlib 홈페이지를 참고 바랍니다.
※ matplotlib에 대한 기본적인 지식이 있을경우 보다 이해가 쉽습니다.
df.plot.[area / bar / barh / line].(x, y, kwargs)
x / y : 각 축으로 설정할 값(컬럼명) 입니다.
kwargs : 그 외에 matplotlib 중 plot에서 지원하는 인수의 사용이 가능합니다.
먼저 기본적인 사용법 예시를위하여 데이터를 만들어 보겠습니다.
df는 0~100까지의 x축 값을 갖는 sin 값 cos값에 1을 더한 데이터 입니다.
코드
val = np.linspace(0,100,101)
sin = np.sin(np.pi/25*val)+1
cos = np.cos(np.pi/25*val)+1
df = pd.DataFrame(data={'val':val,'sin+1':sin,'cos+1':cos})
print(df)
실행 결과

plot.[area / bar / barh / line] 메서드는 반드시 x축과 y축(값)을 지정해주어야 합니다.
plot.area 메서드는 데이터를 면적 그래프의 형태로 반환합니다. 기본적으로 stacked=True 이므로, 면적이 누적되는 형태로 출력됩니다.
코드
df.plot.area(x='val',y=['sin+1','cos+1'],stacked=True) #stacked=True는 기본값
plt.show()
실행 결과

stacked=False인 경우 면적이 겹치는것을 시각화 하여 보여줍니다.
코드
df.plot.area(x='val',y=['sin+1','cos+1'],stacked=False)
plt.show()
실행 결과

plot.bar / plot.barh는 각각 세로 막대그래프, 가로 막대 그래프를 반환합니다.
코드
df.plot.bar(x='val',y=['sin+1','cos+1'])
plt.show()
실행 결과

코드
df.plot.barh(x='val',y=['sin+1','cos+1'])
plt.show()
실행 결과

plot.line 메서드는 선형 그래프를 반환합니다.
코드
df.plot.line(x='val',y=['sin+1','cos+1'])
plt.show()
실행 결과

DataFrame.plot.[hexbin / scatter].(x, y, c, kwargs)
plot.[hexbin / scatter] 메서드는 pandas에서 지원하는 matplotlib 메서드 중에서 x축 / y축(값) /c (colorbar status) 에 해당되는 열을 입력하여야 하는 메서드 입니다.
기본적으로 df.plot.(kind =[hexbin / scatter], x=x축, y=y축(값)), c=c값(colorbar status)과 완벽히 동일합니다.
plot 메서드는 matplotlib 라이브러리를 이용해 dataframe 객체를 시각화 하는 메서드 입니다.
DataFrame.plot이 아닌 matplotlib 라이브러리의 사용법은 matplotlib 홈페이지를 참고 바랍니다. ※ matplotlib에 대한 기본적인 지식이 있을경우 보다 이해가 쉽습니다.
df.plot.[hexbin / scatter].(x, y, c, kwargs)
x / y : 각 축으로 설정할 값(컬럼명) 입니다.
c : 각 값에 대한 colorbar의 값을 지정할 수 있습니다.
kwargs : 그 외에 matplotlib 중 plot에서 지원하는 인수의 사용이 가능합니다.
먼저 기본적인 사용법 예시를위하여 데이터를 만들어 보겠습니다.
df는 크기 10000짜리 가우시안 표준 정규분포 x와 y, 그리고 0~10까지의 난수를 갖는 1000개짜리 c열 의 데이터입니다.
코드
df = pd.DataFrame({'x':np.random.randn(10000),
'y':np.random.randn(10000),
'c':np.random.randint(0,10,size=10000)})
print(df)
실행 결과

plot.[hexbin / scatter]] 메서드는 반드시 x축과 y축(값)을 지정해주어야 합니다. (colormap은 자동으로 지정되며, c는 선택)
hexbin 메서드는 육각형의 그리드형태로 값을 반환하는 그래프 입니다. gridsize 인수 는 x축 기준 그리드 한칸의 크기를 의미합니다.
colormap 인수는 자동 지정되나, 원하는 colormap으로 지정이 가능합니다.
코드
df.plot.hexbin(x='x',y='y',gridsize=20,colormap='viridis')
plt.show()
실행 결과

C 인수를 통해 colormap 기준으로 각 값이 colorbar에서 어떤 값을 취할지 지정할 수 있습니다.
코드
df.plot.hexbin(x='x',y='y',gridsize=20,colormap='viridis',C='c')
plt.show()
실행 결과

reduce_C_function 인수는 colorbar의 값에 대해서 그래프의 bin(한칸의 가로사이즈)에 속하는 값들이 하나의 대표값으로 통일하게 해주는 np 메서드를 지정하는 인수입니다.
코드
df.plot.hexbin(x='x',y='y',gridsize=20,colormap='viridis',C='c',reduce_C_function=np.max)
plt.show()
실행 결과

colorbar에 대해서 한 bin의 값들이 해당값의 max값으로 통일 되어 반환되는것을 확인 할 수 있습니다.
scatter는 점산도 그래프를 반환하는 메서드입니다.
s인수는 점의 크기를 스칼라값으로 지정 가능하며, c인수를 통해 각 값이 colorbar에서 어떤 값을 취할지 지정 가능합니다.
코드
df.plot.scatter(x='x',y='y',s=3,c='c',colormap='hot')
plt.show()
실행 결과

DataFrame.plot.[box / hist / pie].(kwargs)
plot.[box / hist / pie] 메서드는 pandas에서 지원하는 matplotlib 메서드 중에서 데이터를 그대로 가져와 플롯 하는 메서드 입니다.
기본적으로 df.plot.(kind =[box / hist / pie], kwargs과 완벽히 동일합니다.
plot 메서드는 matplotlib 라이브러리를 이용해 dataframe 객체를 시각화 하는 메서드 입니다.
DataFrame.plot이 아닌 matplotlib 라이브러리의 사용법은 matplotlib 홈페이지를 참고 바랍니다.
※ matplotlib에 대한 기본적인 지식이 있을경우 보다 이해가 쉽습니다.
df.plot.[box / hist / pie].(kwargs)
kwargs : matplotlib 중 plot에서 지원하는 인수의 사용이 가능합니다.
먼저 기본적인 사용법 예시를위하여 데이터를 만들어 보겠습니다.
df는 크기 100짜리 가우시안 표준 정규분포 x와 y열의 데이터입니다.
코드
data = np.random.randn(100,2)
df = pd.DataFrame(data, columns = ['x','y'])
print(df)
실행 결과

plot.[box / hist / pie]] 메서드는 각 열의 데이터를 가져오기 때문에 x축, y축등을 지정해 줄 필요가 없습니다.
box 메서드의 경우 boxplot을 출력합니다.
df.plot.box메서드는 df.boxplot메서드와 동일한 기능을 수행합니다.
코드
data = np.random.randn(100,2)
df = pd.DataFrame(data, columns = ['x','y'])
df.plot.box()
plt.show()
실행 결과

hist 메서드의 경우 histogram을 출력합니다. bins 인수를통해 막대 하나의 크기를 정할 수 있으며, alpha를 통해 투명도를 설정할 수 있습니다.
df.plot.hist메서드는 df.hist메서드와 동일한 기능을 수행합니다.
코드
data = np.random.randn(100,2)
df = pd.DataFrame(data, columns = ['x','y'])
df.plot.hist(bins=20,alpha=0.5,color=['green','blue']) # bins로 막대 크기20, alpha로 투명도 0.5, 색은 초록-파랑 설정
plt.show()
실행 결과

pie메서드는 원형 그래프를 출력하는 메서드 입니다. 열의 갯수만큼의 원형그래프가 생성되므로 서브플롯을 설정해주어야합니다.
코드
data = {'x':[3,7,9],'y':[2,6,3]}
idx = ['A','B','C']
df = pd.DataFrame(data=data, index= idx)
df.plot.pie(subplots=True)
plt.show()
실행 결과

DataFrame.plot.[kde / density].(bw_method, ind, kwargs)
plot.[kde / density] 메서드는 pandas에서 지원하는 matplotlib 메서드 중에서 커널밀도추정(KDE)에 대한 그래프를 반환하는 메서드입니다.
보다 심층적으로 설명하면 확률변수의 확률밀도함수(pdf)를 추정하는 비모수적인 방법입니다.
간단히 말하면 histogram을 smoothing 하는 메서드라고 할 수 있습니다.
※ plot.ked 메서드와 plot.density 메서드는 동일한 메서드 입니다.
plot 메서드는 matplotlib 라이브러리를 이용해 dataframe 객체를 시각화 하는 메서드 입니다.
DataFrame.plot이 아닌 matplotlib 라이브러리의 사용법은 matplotlib 홈페이지를 참고 바랍니다.
※ matplotlib에 대한 기본적인 지식이 있을경우 보다 이해가 쉽습니다.
df.plot.[kde / density].(bw_method, ind, kwargs)
bw_method : 대역폭을 지정합니다. 대역폭이 작을수록 더 자세한 smoothing이 가능하고, 대역폭이 크면 러프한 smoothing이 수행됩니다.
ind : 예상 PDF에 대한 평가 포인트입니다. 기본값은 1000개의 타점이며, numpy array나 리스트형태로 입력 할 경우 해당 포인트로 계산이 수행됩니다.
kwargs : matplotlib 중 plot에서 지원하는 인수의 사용이 가능합니다.
먼저 기본적인 사용법 예시를위하여 데이터를 만들어 보겠습니다.
df는 크기 1000짜리 가우시안 표준 정규분포 value열의 데이터입니다.
코드
data = np.random.randn(1000,1)
df = pd.DataFrame(data,columns=['value'])
print(df)
실행 결과

커널밀도추정(KDE)는 간단히 말하면 데이터의 histogram을 smoothing하는 것이라고 볼 수 있습니다.(실제로는 더 복잡한 의미를 가집니다.)
50bin 짜리 histogram과 함께 kde 메서드를 수행해서 비교해보겠습니다.
코드
data = np.random.randn(1000,1)
df = pd.DataFrame(data,columns=['value'])
ax = df.plot.hist(bins=50)
df.plot.kde(ax=ax,secondary_y=True)
plt.show()
실행 결과

bw_method 인수를이용해 대역폭(bandwidth)를 설정할 수 있습니다. bw_method가 작을수록 더욱 세부적인 계산이 수행됩니다.
코드
data = np.random.randn(1000,1)
df = pd.DataFrame(data,columns=['value'])
ax = df.plot.hist(bins=50)
df.plot.kde(ax=ax,secondary_y=True,bw_method=0.1)
df.plot.kde(ax=ax,secondary_y=True,bw_method=3)
plt.show()
실행 결과

주황색 line의 0.1짜리 대역폭과, 녹색 line의 3짜리 대역폭의 차이점을 볼 수 있습니다.
ind 인수를 통해 계산이 수행되는 지점을 지정할 수 있습니다.
코드
data = np.random.randn(1000,1)
df = pd.DataFrame(data,columns=['value'])
ax = df.plot.hist(bins=50)
df.plot.kde(ax=ax,secondary_y=True)
df.plot.kde(ax=ax,secondary_y=True,ind=[-6,-4,-2,0,2,4,6],color='red')
plt.show()
실행 결과

붉은색 line이 특정 지점을 기준으로 계산 된 것을 확인 할 수 있습니다.
위 데이터프레임에서 테마별 PER, PBR의 최대, 최소값을 계산하세요.
코드
data = [
["2차전지(생산)", "SK이노베이션", 10.19, 1.29],
["해운", "팬오션", 21.23, 0.95],
["시스템반도체", "티엘아이", 35.97, 1.12],
["해운", "HMM", 21.52, 3.20],
["시스템반도체", "아이에이", 37.32, 3.55],
["2차전지(생산)", "LG화학", 83.06, 3.75]
]
columns = ["테마", "종목명", "PER", "PBR"]
df = pd.DataFrame(data=data, columns=columns)
정답
df.groupby(by="테마").max()
df.groupby(by="테마").min()
실행 결과

위 데이터프레임에서 테마별 종목의 개수를 계산하세요.
정답
df.groupby(by="테마").size()
실행 결과

위 데이터프레임을 '테마' 컬럼으로 그룹핑한 후 '2차전지(생산)' 그룹만 가져오세요.
정답
gb = df.groupby(by="테마")
gb.get_group("2차전지(생산)")
실행 결과

위 데이터프레임에서 테마별 PER의 평균을 계산하세요.
정답
df.groupby("테마")[["PER"]].mean()
실행 결과

위 데이터프레임에 대해 테마로 그룹화한 후 PER, PBR 컬럼을 슬라이싱하세요. 그 다음 두 컬럼에 대한 평균을 계산하세요.
정답
df.groupby("테마")[["PER", "PBR"]].mean()
실행 결과
