Python에서 날짜·시간(datetime) 데이터를 다루다 보면, 시간의 흐름에 따라 값이 얼마나 쌓이는지 누적 그래프로 확인하고 싶을 때가 많습니다. Matplotlib와 Pandas를 함께 사용하면 몇 줄의 코드만으로 이러한 시각화를 손쉽게 구현할 수 있습니다.
아래 예제에서는 대학 신입생 입학 데이터를 활용해, 학업 기간(duration)별 입학자 수를 막대그래프로 나타내는 방법을 단계별로 살펴보겠습니다.
구현 단계
그림(figure) 크기를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
Pandas 데이터프레임을 생성합니다. 하나의 키에는 시간 간격(durations)을, 다른 키에는 해당 시점까지 입학한 학생 수(admissions)를 담습니다.
plot() 메서드에 kind='bar' 옵션을 지정해 막대그래프 형태로 데이터프레임을 시각화합니다.
show() 메서드를 호출하여 최종 그림을 화면에 출력합니다.
예제 코드
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
college_student_data = {'durations': [1, 2, 2.5, 3, 4.5, 5, 5.5, 6, 6.5, 7], 'admissions': [5, 50, 150, 3380, 760, 340, 115, 80, 40, 10]}
df = pd.DataFrame(data=college_student_data)
df.plot(kind='bar', x='durations', y='admissions', legend=False, color='red', rot=0)
plt.show()실행 결과
위 코드를 실행하면 x축에 학업 기간, y축에 입학자 수가 표시된 빨간색 막대그래프가 나타납니다. 대부분의 입학이 3년 전후 구간에 집중되어 있는 것을 한눈에 확인할 수 있습니다.
참고: 진정한 누적 그래프 만들기
값이 시간순으로 쌓여 가는 모습을 직접 보고 싶다면, Pandas의 cumsum() 메서드로 누적합 열을 추가한 뒤 선 그래프로 그리면 됩니다.
df['cumulative'] = df['admissions'].cumsum() df.plot(x='durations', y='cumulative', legend=False, color='blue') plt.show()
이렇게 하면 기간이 늘어날수록 입학자 수가 계단식으로 증가하는 누적 추세선을 확인할 수 있어, 데이터의 전체적인 흐름을 파악하는 데 더욱 유용합니다.