[25.03.26] 본캠프 26일차 기초프로젝트 시각화

김명서·2025년 3월 26일
1

TIL_sparta

목록 보기
47/60

기초프로젝트

시각화

이번 프로젝트를 준비하면서, 데이터를 여러방면으로 만져보고 시각화도 이리저리 해봤는데,
TIL로는 요긴했다고 생각드는 2가지에 대해 정리해보려한다.

우선 이번에 한 2가지 시각화를 본격적으로 시작하기 전에,
조건에 부합하는 매물들을 법정동명, 건물면적, 평균물건금액 별로 나누어 정리했다.

30~39
잠실동 - 앙시레이크타워 ( 5.1억 )
가락동 - 헬리오시티 (11.4억)
.
40~49
가락동 - 테라펠리체 (8.7억)
가락동 - 헬리오시티(14.6억)
.
50~59
잠실동 - 한영해시안아파트 (6.7억)
가락동 - 강남팰리스 ( 7.3억)
가락동 - 진넥스 베르디엠 (7.1억) #진넥스 베르디엠과 진넥스베르디엠의 평균
가락동 - 헬리오시티 (16.9억)
장지동 - 송파더센트레(위례22단지) (8.9억)
장지동 - 위례24단지(꿈에그린) (9.4억)
.
60~69
잠실동 - 한영해시안아파트 (8.2억)
.
70~86
가락동 - 헬리오시티(20.1억)
문정동 - 파크하비오(13.5억)
장지동 - 송파파인타운12단지 (11.6억)
장지동 - 송파파인타운13단지 (13.1억)
장지동 - 송파파인타운1단지 (9.9억)
장지동 - 위례24단지(꿈에그린) (12.5억)
장지동 - 위례중앙푸르지오1단지 (14.5억)
장지동 - 위례중앙푸르지오2단지 (14.3억)

혹시나 데이터가 손상되거나 관계없는 값이 포함될까봐,
이렇게 정리한 내용을 토대로 데이터 프레임을 새로 생성해줬다.

import pandas as pd

# 데이터 정리본
data = {
    '법정동명': [
        '잠실동', '가락동',  # 30~39
        '가락동', '가락동',  # 40~49
        '잠실동', '가락동', '가락동', '가락동', '장지동', '장지동',  # 50~59
        '잠실동',  # 60~69
        '가락동', '문정동', '장지동', '장지동', '장지동', '장지동', '장지동', '장지동'  # 70~86
    ],
    '건물명': [
        '앙시레이크타워', '헬리오시티',  # 30~39
        '테라펠리체', '헬리오시티',  # 40~49
        '한영해시안아파트', '강남팰리스', '진넥스 베르디엠', '헬리오시티', '송파더센트레(위례22단지)', '위례24단지(꿈에그린)',  # 50~59
        '한영해시안아파트',  # 60~69
        '헬리오시티', '파크하비오', '송파파인타운12단지', '송파파인타운13단지', '송파파인타운1단지', '위례24단지(꿈에그린)', '위례중앙푸르지오1단지', '위례중앙푸르지오2단지'  # 70~86
    ],
    '면적구간': [
        '30~39', '30~39',
        '40~49', '40~49',
        '50~59', '50~59', '50~59', '50~59', '50~59', '50~59',
        '60~69',
        '70~86', '70~86', '70~86', '70~86', '70~86', '70~86', '70~86', '70~86'
    ],
    '물건금액(억원)': [
        5.1, 11.4,  # 30~39
        8.7, 14.6,  # 40~49
        6.7, 7.3, 7.1, 16.9, 8.9, 9.4,  # 50~59
        8.2,  # 60~69
        20.1, 13.5, 11.6, 13.1, 9.9, 12.5, 14.5, 14.3  # 70~86
    ]
}

# 데이터프레임 생성
df_sp_final = pd.DataFrame(data)

# 진넥스 베르디엠 통일
df_sp_final['건물명'] = df_sp_final['건물명'].replace('진넥스베르디엠', '진넥스 베르디엠')

# 결과 확인
print("df_sp_final 데이터프레임:")
print(df_sp_final)

.
.

Heatmap

법정동명 및 건물명별 면적 구간별 물건금액(억원)

import seaborn as sns
import matplotlib.pyplot as plt

# 법정동명- 건물명
df_sp_final['법정동_건물명'] = df_sp_final['법정동명'] + ' - ' + df_sp_final['건물명']

# 정렬
df_sp_final_sorted = df_sp_final.sort_values(by=['법정동명', '법정동_건물명'])

# 피벗 테이블
heatmap_pivot = df_sp_final_sorted.pivot(index='법정동_건물명', columns='면적구간', values='물건금액(억원)')

# 히트맵 
plt.figure(figsize=(8, 10))
ax = sns.heatmap(heatmap_pivot, 
                 annot=True,  # 값 표시
                 fmt='.1f',   # 소수점 1자리
                 cmap='YlGnBu',  # 색상 팔레트
                 cbar_kws={'label': '평균 물건금액 (억원)'})

plt.title('법정동명 및 건물명별 면적 구간별 물건금액 (억원) Heatmap')
plt.xlabel('면적 구간')
plt.ylabel('법정동명 - 건물명')
plt.show()

.

folium.Map

오늘 아침에 벨로그를 서칭하다가 발견한 함수이다 .
정말 지도를 불러와준다.
참고링크
아이콘

import folium 

m = folium.Map(location=[
37.491650, 127.113857], 
               zoom_start=14, 
               )

# 잠실 앙시레이크
folium.Marker([37.505574, 127.078295]).add_to(m)

# 가락 헬리오시티
folium.Marker([37.496827, 127.105610]).add_to(m)


# 가락 테라펠리체
folium.Marker([37.498108, 127.133888]).add_to(m)
# 잠실 한영해시안아파트
folium.Marker([37.508539, 127.087324]).add_to(m)
# 가락 강남팰리스
folium.Marker([37.498281, 127.132090]).add_to(m)
# 가락 진넥스 베르디엠
folium.Marker([37.497596, 127.133243]).add_to(m)
# 장지 송파더센트레(위례22단지)
folium.Marker([37.479447, 127.140212]).add_to(m)
#장지동 - 위례24단지(꿈에그린)
folium.Marker([37.476096, 127.139431]).add_to(m)
# 문정동 - 파크하비오
folium.Marker([37.480164, 127.123404]).add_to(m)
# 장지동 - 송파파인타운12단지
folium.Marker([37.478630, 127.132088]).add_to(m)
# 장지동 - 송파파인타운13단지
folium.Marker([37.477234, 127.128870]).add_to(m)
# 장지동 - 송파파인타운1단지
folium.Marker([37.486803, 127.134704]).add_to(m)
# 장지동 - 위례중앙푸르지오2단지 
folium.Marker([37.474644, 127.142947]).add_to(m)
# 장지동 - 위례중앙푸르지오1단지
folium.Marker([37.475019, 127.141684]).add_to(m)


#서울아산병원 37.527328, 127.108165
folium.Marker([37.527328, 127.108165],popup='<b>Hospital</b>',
    tooltip='Icon custom',
    icon=folium.Icon(
        color='green',
        icon_color='white',
        icon='glyphicon glyphicon-plus-sign', # googledp glyphicon 검색해서 관련된 코드 제공해주는 사이트들 참고해서 원하는 것 가져오기
        prefix='glyphicon'
    )
).add_to(m)
#한솔병원
folium.Marker([37.506899, 127.105874],popup='<b>Hospital</b>',
    tooltip='Icon custom',
    icon=folium.Icon(
        color='green',
        icon_color='white',
        icon='glyphicon glyphicon-plus-sign', # googledp glyphicon 검색해서 관련된 코드 제공해주는 사이트들 참고해서 원하는 것 가져오기
        prefix='glyphicon'
    )
).add_to(m)
#경찰병원
folium.Marker([37.496525, 127.123342],popup='<b>Hospital</b>',
    tooltip='Icon custom',
    icon=folium.Icon(
        color='green',
        icon_color='white',
        icon='glyphicon glyphicon-plus-sign', # googledp glyphicon 검색해서 관련된 코드 제공해주는 사이트들 참고해서 원하는 것 가져오기
        prefix='glyphicon'
    )
).add_to(m)


#올림픽공원 
folium.Marker([37.521435, 127.121666],popup='<b>park</b>',
    tooltip='Icon custom',
    icon=folium.Icon(
        color='green',
        icon_color='white',
        icon='glyphicon glyphicon-grain', # googledp glyphicon 검색해서 관련된 코드 제공해주는 사이트들 참고해서 원하는 것 가져오기
        prefix='glyphicon'
    )
).add_to(m)
#석촌호수공원
folium.Marker([37.512375, 127.104763],popup='<b>park</b>',
    tooltip='Icon custom',
    icon=folium.Icon(
        color='green',
        icon_color='white',
        icon='glyphicon glyphicon-grain', # googledp glyphicon 검색해서 관련된 코드 제공해주는 사이트들 참고해서 원하는 것 가져오기
        prefix='glyphicon'
    )
).add_to(m)

#송파노인복지센터
folium.Marker([37.501713, 127.094305],popup='<b>community</b>',
    tooltip='Icon custom',
    icon=folium.Icon(
        color='green',
        icon_color='white',
        icon='glyphicon glyphicon-user', # googledp glyphicon 검색해서 관련된 코드 제공해주는 사이트들 참고해서 원하는 것 가져오기
        prefix='glyphicon'
    )
).add_to(m)


m


(인프라 추가 전)

위도,경도를 일일이 찾기는 좀 빡셌지만, 시각화 된 걸 보면 맘이 편안해진다. ㅎㅎ


느낀점&회고

오늘 튜터님께 가서 최종 내용 검토도 받고, ppt작업도 진입했다. 낼까지 꼭 열심히 작업해서 발표자분들께 잘 넘겨줘야겠다는 마음이 가득하다. 정말 .. 후회없이 해서 달콤한 주말을 보내고 싶다.

profile
경영학도의 데이터분석 성장기💥

0개의 댓글

관련 채용 정보