서울시 자전거 데이터 분석 MaTableau | Matplotlib에서 Tableau로 시각화 업그레이드
이번 게시글에서는 서울시 자전거 데이터셋을 계절별과 시간 별로 필터링하여 시각화 해보고 유의미한 결과를 얻어보겠습니다.
Matplotlib
Winter= data[data['Seasons']=='Winter']
Winter = Winter.groupby('Hour')['Rented Bike Count'].sum()
Spring = data[data['Seasons']=='Spring']
Spring = Spring.groupby('Hour')['Rented Bike Count'].sum()
Summer = data[data['Seasons']=='Summer']
Summer = Summer.groupby('Hour')['Rented Bike Count'].sum()
Autumn = data[data['Seasons']=='Autumn']
Autumn = Autumn.groupby('Hour')['Rented Bike Count'].sum()
def add_labels(ax, values):
for i, v in enumerate(values):
ax.text(i, v + 5, str(v), ha='center', fontsize=10)
fig = plt.figure(figsize=(12, 10), dpi=200)
ax1, ax2, ax3, ax4 = fig.subplots(4, 1, sharex=True)
ax2.bar(np.arange(24), Spring)
add_labels(ax2, Spring)
ax2.set_title("Spring")
ax3.bar(np.arange(24), Summer)
add_labels(ax3, Summer)
ax3.set_title("Summer")
ax1.bar(np.arange(24), Autumn)
add_labels(ax1, Autumn)
ax1.set_title("Autumn")
ax4.bar(np.arange(24), Winter)
add_labels(ax4, Winter)
ax4.set_title("Winter")
fig.tight_layout()
plt.show()
위 그래프는 Matplotlib으로 시각화 한 시간, 계절 별 자전거 대여수의 변화 입니다.
Matplotlib으로 데이터를 필터링 후 시각화 하려면 위와 같은 코드로 필터링 과정을 거쳐야 합니다.
특히 저번 게시글에서 언급 한 groupby 여전히 자주 쓰이고 있습니다.
코드를 간단하고 명료하게 설명해드리겠습니다.
이 코드는 주어진 데이터를 계절별로 그룹화하고 각 계절의 시간대별 자전거 대여 횟수를 시각화하는 작업을 수행합니다.
코드 설명
- 데이터 필터링 및 그룹화:
- Winter, Spring, Summer, Autumn 변수를 각각 겨울, 봄, 여름, 가을 시즌에 해당하는 데이터를 필터링하여 Hour별로 자전거 대여 횟수를 합산합니다.
- add_labels 함수:
- 이 함수는 각 막대 그래프 위에 대여 횟수를 숫자로 표시해줍니다.
- 시각화:
- fig 객체는 12x8 크기의 도화지 크기를 설정하고, ax1, ax2, ax3, ax4는 4개의 서브플롯을 만듭니다.
- 각 서브플롯에 계절별 자전거 대여 횟수를 바 형태로 표시하고, add_labels 함수로 각 막대 위에 대여 횟수를 텍스트로 표시합니다.
- fig.tight_layout()은 서브플롯 간의 간격을 조정하여 레이아웃을 깔끔하게 만듭니다.
- 결과 출력:
- 각 계절별 자전거 대여 횟수를 비교할 수 있는 4개의 그래프가 한 화면에 출력됩니다.
다음으로는 Tableau를 위를 시각해보겠습니다.
Tableau
Tableau 자체는 시각화 툴이기 때문에 이 정도의 필터링과 시각화는 어렵지 않습니다.
먼저 데이터 불러오기는 이전 게시글에 했으므로 넘어가겠습니다.
시간에 따른 변화율을 보고 싶은 것 이기 때문에 열에다가 Hour를 넣어줍니다. Hour가 만약 차원값이 아니라면 차원값으로 변형하고 넣어야 합니다. 이후 Seasons, Rented Bike Count를 넣어주면 끝입니다.
하지만 여기서 Filtering 을 더욱 유연하게 하기 위해서는 Rented Bike Count 값에 많은 집계값을 적용할 수 있습니다.
예시입니다.
현재는 측정값으로 합계가 적용되어 있습니다. 데이터의 분포 수를 보고 싶거나 평균을 보고 싶으면 다음과 같이 변경할 수 있습니다.
한번 데이터의 수를 확인 해보겠습니다. 데이터의 수는 카운트(고유) 값에 있으므로 선택해주시면 됩니다.
이 막대 그래프를 확인해 보면 그래도 수집된 데이터의 분포는 일정하므로 데이터 수집은 일정하게 되었다는 것을 알 수 있습니다.
마지막으로 평균값을 넣어보겠습니다.
여름에는 자전거 대여수가 확실히 시간대에 영향을 많이 받는 것으로 보이며, 특히 출퇴근 시간대에 대여 수가 급증하는 패턴이 나타납니다. 이는 여름이 다른 계절보다 자전거 대여에 대한 수요가 높다는 것을 보여줍니다. 그러므로 여름철에는 자전거 대여 회사가 영업 이익을 극대화할 수 있는 기회를 잡을 수 있을 것 같습니다. Winter의 경우, 계절적 특성상 자전거 대여 수요가 낮고 시간대에 큰 영향을 받지 않는 것 같다는 분석은 타당합니다. 차가운 날씨나 다른 요인들이 영향을 미칠 수 있기 때문에, 겨울에 대한 전략은 다른 계절과 다르게 접근해야 할 것 같습니다. 전체적으로 보았을 때, 자전거 대여의 수요는 계절에 따라 크게 달라지며, 특히 여름철에 사업 활동을 집중시키는 것이 효과적인 전략이 될 것 같습니다. Winter가 자연에 영향을 받는다고 생각하면, Summer(여름)계절에도 강수량에 영향을 받을 것 같다고 생각합니다. 다음 게시글에서는 강수량과 어떤 영향이 있는지 확인하고 지금까지 자전거 대여수를 분석한 내용을 토대로 최종 인사이트를 말씀 드리겠습니다.
이 카테고리는 Matplotlib에서 Tableau로 전환하는 내용의 카테고리이기 때문에 Matplotlib에 대해서 크게 다루지 않습니다.
Matplotlib의 파일이 필요하시거나 보충 내용이 필요하시면 댓글 달아주세요 :>
'Matplotlib → Tableau' 카테고리의 다른 글
Seoul Cycle Dataset Analyze | discovering error point (0) | 2025.02.04 |
---|---|
Seoul Cycle Dataset Analyze Il (0) | 2025.02.04 |
Seoul Cycle Dataset Analyze I (2) | 2025.02.04 |
Matplotlib에서 Tableau로: 데이터 시각화의 새로운 차원 (0) | 2025.02.02 |