데이터 분석에서 두 개의 데이터 분포를 비교할 때 히스토그램을 나란히 배치하면 시각적인 비교가 훨씬 쉬워집니다. Python의 대표적인 시각화 라이브러리인 Matplotlib와 Pandas를 활용하면 몇 줄의 코드만으로 두 개의 히스토그램을 한 화면에 나란히 그릴 수 있습니다.
구현 단계
두 개의 히스토그램을 나란히 그리려면 다음 단계를 따르세요.
먼저 figure 크기를 설정하고, 서브플롯 사이 및 주변 여백(padding)을 자동으로 조정합니다.
2차원이면서 크기가 변경 가능하고 이질적인(heterogeneous) 데이터를 담을 수 있는 데이터프레임 두 개, 즉 df1과 df2를 생성합니다.
plt.subplots()를 사용하여 figure와 서브플롯 집합을 만듭니다. 이때 1행 2열 구조로 만들면 두 그래프가 나란히 배치됩니다.각 데이터프레임(df1, df2)에 대해 히스토그램을 생성하고, 각각 다른 축(axes)에 할당합니다.
마지막으로
show()메서드를 호출하여 완성된 figure를 화면에 표시합니다.
예제 코드
from matplotlib import pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df1 = pd.DataFrame(dict(a=[1, 1, 1, 1, 3]))
df2 = pd.DataFrame(dict(b=[1, 1, 2, 1, 3]))
fig, axes = plt.subplots(1, 2)
df1.hist('a', ax=axes[0])
df2.hist('b', ax=axes[1])
plt.show()코드 설명
plt.rcParams["figure.figsize"]: 전체 figure의 크기를 가로 7.50인치, 세로 3.50인치로 지정합니다. 두 그래프가 나란히 들어가도록 넓게 설정하는 것이 좋습니다.plt.rcParams["figure.autolayout"]:True로 설정하면 레이블이나 제목이 잘리지 않도록 여백이 자동으로 조정됩니다.plt.subplots(1, 2): 1행 2열의 서브플롯 배열을 생성하여fig(전체 figure)와axes(개별 축 객체 배열)를 반환합니다.df1.hist('a', ax=axes[0]): df1의 'a' 열 데이터로 히스토그램을 그리고 첫 번째 축에 배치합니다. 마찬가지로 df2의 'b' 열은 두 번째 축에 그려집니다.
실행 결과
위 코드를 실행하면 왼쪽에는 df1의 'a' 열 히스토그램이, 오른쪽에는 df2의 'b' 열 히스토그램이 나란히 표시됩니다. 이 방식을 활용하면 서로 다른 데이터셋의 분포를 한눈에 비교할 수 있어 탐색적 데이터 분석(EDA) 과정에서 매우 유용합니다.
추가 팁
두 히스토그램의 막대 개수(bin)를 동일하게 맞추고 싶다면 df1.hist('a', ax=axes[0], bins=10)처럼 bins 파라미터를 지정하세요. 또한 각 그래프에 제목을 추가하려면 axes[0].set_title('df1 히스토그램')과 같이 설정할 수 있습니다.