Coding Diary.

(데이터분석) matplotlib으로 선도표 나타내기 본문

Coding/Data analysis

(데이터분석) matplotlib으로 선도표 나타내기

life-of-nomad 2024. 5. 28. 10:28
728x90
반응형

1. 선도표

출처 ❘ Udacity

  • 선도표는 하나의 숫자 변수가 두 번째 변수에 따라서 변화하는 동향을 나타내기 위해 자주 사용되는 차트입니다.
  • 모든 데이터 포인터가 표시되는 산점도와 달리 선도표는 모든 고유의 x값 혹은 x의 계급에 대해 오직 하나의 점만 차트에 표시됩니다. 
  • x의 계급에 여러 개의 관찰값이 존재할 때는 해당 계급 내 데이터의 평균이나 중앙값과 같은 요약 통계를 y축 값으로 차트에 표시합니다.
  • x변수가 시간을 나타낼 때는 해당 데이터를 나타낸 선도표를 시계열 차트라고 부릅니다. 
    • ex) 주가나 환율을 나타내는 차트는 각 시점에 오직 하나의 관찰값만 표시됩니다. 
  • 선도표는 Matplotlib으로 나타낼 수 있습니다. 

 

2. matplolib으로 나타내기

  • 점 사이 선을 표시하는 matplotlib의 error bar 함수를 사용해보겠습니다. 
plt.errorbar(data=df, x='displ', y='comb')
plt.xticks(rotation=15);
plt.ylabel('Avg. Combined Fuel Efficiency (mpg)');

  • 구조를 생각하지 않고 주어진 DataFrame을 무작정 함수에 집어넣는다면 위의 이미지처럼 차트가 엉망이 될 수 있습니다.
  • 함수는 DataFrame 내의 첫 번째 행부터 마지막 행까지 존재하는 모든 값을 차트상에 선으로 연결합니다.
  • 따라서 우리가 원하는 형태의 선도표를 만들기 위해서는 데이터를 별도로 요약해야 합니다.
#데이터를 몇 개의 계급으로 나눌 것인지 설정
#계급 경계를 설정하고 각 계급의 중심값 계산하기
bin_edges = np.arange(0.6, 7+0.2, 0.2)
bin_centers = bin_edges[:-1] + 0.1 #마지막 값은 제외

#설정된 계급 경계에 따라 데이터를 구간으로 나눔. 
#pandas.cut()함수에 df['displ']열을 전달하면 series 객체가 반환
#include_lowest=True : 평균에 상응하는 값이 bin에 포함됨
displ_binned = pd.cut(df['displ'], bin_edges, include_lowest=True)
displ_binned

#grouopby를 사용해 그룹화한 후 각 bin(계급)에 속하는 점들의 평균과 표준편차 계산
comb_mean = df['comb'].groupby(displ_binned).mean()
comb_std = df['comb'].groupby(displ_binned).std()

#요약된 데이터를 차트에 나타내기
plt.errorbar(x=bin_centers, y=comb_mean, yerr=comb_std)
plt.xticks(rotation=15);
plt.xlabel('Displacement (1)')
plt.ylabel('Avg. Combined FUel Efficiency (mpg)');

 

  • 위 그래프를 해석해보면, 엔진 크기가 작은 차량의 연료 효율이 일반적을 더 높지만, 효율성의 변동성도 훨씬 높다는 것을 알 수 있습니다.
728x90
반응형