주제
2차 프로젝트
3일차
- 어제에 이어서 시각화를 진행했다
- 오늘은 팀미팅이 있는 날이어서 멘토님께서 1차 피드백을 할 수 있는 보고서를 제출하라고 하셨기 때문에 내가 보고서를 작성했다
지역 별 평균 거래 금액 구하기
- 구 별 평균 거래금액을 구하는 것은 어렵지 않다
- 필요한 컬럼(지역명, 거래금액)만을 가져와서 거래금액의 평균을 계산한 다음 시각화로 옮기는 과정을 거쳤다
- reset_index를 하지 않으면 그래프를 그릴때, 인덱스가 된 컬럼은 접근할 수 없기 때문에 필요하다
- 지역명으로 그룹화를 하기 때문에 자동으로 인덱스가 되는데, 데이터 프레임만을 볼 때는 인덱스로 지정된 게 가독성이 좋다
- 하지만 우리는 시각화가 목표이기 때문에 reset 해주었다
# 구별 금액 평균
cost_by_district = df.groupby(by='지역명').agg({'거래금액': 'mean'}).round(2).reset_index()

- 이번에도 마찬가지로 '서울시'를 빼고 시각화를 진행, y축 그리드가 없는 그래프를 만들어봤다가 지역이 많기 때문에 평균이 비슷한 구들은 차이를 확인하기 힘들어서 그리드를 추가했다
x = cost_by_district['지역명']
y = cost_by_district['거래금액']
plt.figure(figsize=(10, 6))
ax = sns.barplot(x=x, y=y)
plt.title('서울특별시 구별 평균 거래 금액[2015-2022]')
plt.xlabel('서울특별시 구')
plt.ylabel('평균 거래 금액[단위:만원]')
plt.xticks(rotation=45)
plt.ylim(35000, 150000)
ax.set_axisbelow(True)
ax.grid(axis='y')
plt.show()

- 예상했던대로 강남구, 서초구, 용산구 순으로 거래 금액이 가장 높았다
- 반면 도봉구, 금천구, 노원구는 거래 금액이 가장 낮았다
지역별 연도별 평균 거래 금액
- 이번에는 각 구 별로 거래연도를 나누어 평균 거래 금액의 추이를 살펴볼 수 있는 시각화를 진행했다
- 이 그래프로 어느 지역이 거래금액 상승도가 높은지 혹은 하락하는 추세인지를 한 눈에 볼 수 있기 때문에 좋은 지표라고 생각했다
- 마찬가지로 지역명, 거래연도를 그룹화하여 평균 거래금액을 가져온다
- 그리고 지역명은 가나다 순으로, 거래연도는 내림차순으로 정렬했다
# 연도별 평균 거래 금액
yearly_trade = yearly_trade.groupby(by=['지역명', '거래연도']).agg({'거래금액': 'mean'}).round(2).reset_index()
yearly_trade.sort_values(by=['지역명','거래연도'], ascending=[True,False])
- 대표적으로 강서구의 데이터를 시각화해보았다
# 강서구의 연도별 평균 거래 금액
x = yearly_trade[yearly_trade['지역명'] == '서울시 강서구']['거래연도']
y = yearly_trade[yearly_trade['지역명'] == '서울시 강서구']['거래금액']
plt.figure(figsize=(8,5))
sns.barplot(x=x, y=y, palette='pastel')
plt.title('서울특별시 강서구 아파트의 연도별 평균 거래금액')
plt.xlabel('연도')
plt.ylabel('평균 거래금액[단위:만원]')
plt.show()

- 강서구는 점점 상승하는 추세이다가 2021년에 최고점을 찍고 바로 다음 해인 2022년에 하락한 것으로 보인다
- 평균 거래금액이 가장 높았던 강남구, 서초구, 용산구의 연도별 그래프를 확인해보았다
# 성북구의 연도별 평균 거래 금액
x1 = yearly_trade[yearly_trade['지역명'] == '서울시 강남구']['거래연도']
y1 = yearly_trade[yearly_trade['지역명'] == '서울시 강남구']['거래금액']
x2 = yearly_trade[yearly_trade['지역명'] == '서울시 서초구']['거래연도']
y2 = yearly_trade[yearly_trade['지역명'] == '서울시 서초구']['거래금액']
x3 = yearly_trade[yearly_trade['지역명'] == '서울시 용산구']['거래연도']
y3 = yearly_trade[yearly_trade['지역명'] == '서울시 용산구']['거래금액']
# 하나의 박스 안에 3개의 그래프 추가
fig, ax = plt.subplots(ncols=3, figsize=(9, 5))
# 강남구
sns.barplot(x=x1, y=y1, palette='pastel', ax=ax[0])
ax[0].set_title('강남구')
ax[0].set_xlabel('연도')
ax[0].set_ylabel('평균 거래금액[단위:만원]')
ax[0].set_xticklabels(x1, rotation=45)
# 서초구
sns.barplot(x=x2, y=y2, palette='pastel', ax=ax[1])
ax[1].set_title('서초구')
ax[1].set_xlabel('연도')
ax[1].set_ylabel('평균 거래금액[단위:만원]')
ax[1].set_xticklabels(x2, rotation=45)
# 용산구
sns.barplot(x=x3, y=y3, palette='pastel', ax=ax[2])
ax[2].set_title('용산구')
ax[2].set_xlabel('연도')
ax[2].set_ylabel('평균 거래금액[단위:만원]')
ax[2].set_xticklabels(x3, rotation=45)
plt.tight_layout()
plt.show()

- 이 세 지역은 신기하게도 비슷한 양상을 보였다.
- 강서구는 2021년에 최고점을 찍은 반면 이 3곳은 2022년에 최고치를 찍었고 무엇보다 20년에서 21년 사이에 급격한 상승을 보였다.
- 이는 팬데믹의 시작과 관련이 있을 것으로 보인다.
보고서 작성
- 보고서에는 문제 정의, 주제 선정 이유, 데이터 소개, 전처리, 분석 및 시각화 그리고 결론이 들어간다
- 아직 결론을 짓지 못한 상황이기 때문에 결론 전 부분까지만 작성하고 나머지 결론은 해당 부분의 시각화와 분석이 끝난 후에 추가할 예정이다.
느낀점
이번 프로젝트는 소통도 굉장히 잘되고, 무엇보다 문제 정의를 명확하게 하고 시작하니 우리가 필요한 것이 무엇인지 확실해져서 우왕좌왕하지 않았다. 그리고 개인적으로 성격상 프로젝트나 과제가 있으면 최대한 빨리 시작해서 여유롭게 끝내고, 남은 시간을 수정하는 데에 쓰는 걸 좋아하는데 그래서 그런지 이번 프로젝트의 페이스도 적당한 것 같다. 팀원분들도 모두 적극적으로 참여하셔서 가능한 일인 것 같다. 오늘 멘토님께 처음 피드백을 받을텐데 괜히 긴장되지만, 피드백은 너무 중요하니까 잘 다듬어봐야겠다.
'Data Science > TIL (Today I Learned)' 카테고리의 다른 글
| 프로그래머스 데이터분석 데브코스 1기 - 40일차 (0) | 2024.01.19 |
|---|---|
| 프로그래머스 데이터분석 데브코스 1기 - 39일차 (0) | 2024.01.18 |
| 프로그래머스 데이터분석 데브코스 1기 - 37일차 (1) | 2024.01.17 |
| 프로그래머스 데이터분석 데브코스 1기 - 36일차 (0) | 2024.01.15 |
| 프로그래머스 데이터분석 데브코스 1기 - 35일차 (0) | 2024.01.12 |