![[파이썬 13] pandas로 분석하고 그래프로 보여주기](https://img.thenullpage.com/posts/5392/5392_1_3fbd58.webp)
앞선 편에서 pandas로 데이터를 분석했다면, 그 결과를 숫자 나열이 아니라 한눈에 보이는 그래프로 만드는 게 이번 편의 주제다. 파이썬에서는 matplotlib이 가장 기본적인 시각화 라이브러리이고, 그 위에 seaborn이 통계적 그래프를 더 적은 코드로, 더 보기 좋게 그릴 수 있도록 얹혀진 라이브러리로 자리잡고 있다.
1. 설치와 기본 그래프
pip install matplotlib seaborn
import matplotlib.pyplot as plt
months = ["1월", "2월", "3월", "4월"]
sales = [100, 120, 150, 170]
plt.plot(months, sales)
plt.title("월별 매출 추이")
plt.xlabel("월")
plt.ylabel("매출")
plt.show()
plt.plot()은 선 그래프를 그리는 가장 기본적인 함수다. 시간에 따른 추세나 변화를 보여줄 때 적합하며, 매출 추이나 환율 변동 같은 시계열 데이터를 시각화할 때 흔히 쓰인다.
2. 막대그래프, 카테고리별 비교
카테고리별 수치를 비교할 땐 막대그래프가 적합하다. seaborn을 쓰면 판다스 DataFrame을 그대로 넣어서 훨씬 간결하게 그릴 수 있다.
import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(x='지역', y='매출', data=df)
plt.title('지역별 매출')
plt.show()
seaborn의 barplot은 기본적으로 각 카테고리의 평균값을 막대 높이로 표시하고, 그 추정치의 신뢰구간까지 오차 막대로 자동으로 그려준다는 특징이 있다. matplotlib으로 직접 이런 통계 처리를 하려면 여러 줄이 필요한데, seaborn은 함수 호출 한 번으로 끝난다는 게 강점으로 꼽힌다.
3. pandas의 groupby 결과를 바로 그래프로
앞서 배운 groupby 결과를 곧바로 시각화에 연결하는 흐름이 실무에서 가장 자주 쓰이는 패턴이다.
region_sales = df.groupby('지역')['매출'].sum()
region_sales.plot(kind='bar', title='지역별 매출 합계')
plt.ylabel('매출')
plt.show()
pandas의 Series나 DataFrame은 자체적으로 .plot() 메서드를 갖고 있어서, matplotlib을 따로 명시적으로 호출하지 않아도 곧바로 그래프를 그릴 수 있다.
4. 여러 그래프를 한 화면에
여러 지표를 동시에 비교하고 싶을 때는 막대그래프와 선그래프를 겹쳐서 그리는 방식도 흔히 쓰인다. 예를 들어 월별 매출(막대)과 누적 성장률(선)을 한 그래프에 같이 표시하면 맥락을 함께 파악하기 쉬워진다.
fig, ax1 = plt.subplots(figsize=(10, 6))
sns.barplot(x='월', y='매출', data=df, color='skyblue', ax=ax1)
ax2 = ax1.twinx() # y축을 하나 더 만들어서 겹쳐 그리기
ax2.plot(df['월'], df['성장률'], color='red', marker='o')
plt.title('월별 매출과 성장률')
plt.show()
twinx()는 하나의 그래프 안에 y축을 두 개 만들어주는 함수로, 단위가 서로 다른 두 데이터(예: 매출은 원 단위, 성장률은 퍼센트 단위)를 한 화면에 겹쳐 보여줄 때 쓰인다.
5. 그래프를 파일로 저장하기
만든 그래프는 화면에 띄우는 것 말고 이미지 파일로 저장해서 보고서나 이메일에 첨부할 수도 있다.
plt.savefig("월별매출그래프.png", dpi=150, bbox_inches='tight')
dpi는 이미지 해상도, bbox_inches='tight'는 그래프 주변 여백을 자동으로 잘라내는 옵션으로, 보고서에 바로 넣기 좋은 형태로 저장해준다.
6. 정리
matplotlib은 기본적인 선/막대 그래프를 그리는 표준 라이브러리이고, seaborn은 그 위에서 통계적 정보(평균, 신뢰구간 등)를 더 적은 코드로 시각화해준다. 앞서 배운 pandas의 groupby 결과를 바로 이어서 그래프로 그리는 흐름이 실무 데이터 분석에서 가장 흔하게 쓰이는 패턴이다.