Analysis

[데이터마이닝] Lab8-지도그리기

ialleejy 2024. 12. 5. 09:34

 

import pandas as pd
import folium

# 데이터 불러오기
bike_data = pd.read_csv('./bike202406.csv')

# 서울 중심 좌표로 지도 생성
seoul_map = folium.Map(location=[37.5665, 126.9780], zoom_start=12)

# 따릉이 대여소 위치를 지도에 점으로 표시
for idx, row in bike_data.iterrows():
    folium.CircleMarker(
        location=[row['위도'], row['경도']],  # 위도, 경도 컬럼명 확인 필요
        popup=row['보관소(대여소)명'],
        radius=2  # 대여소 이름이 있는 컬럼명
    ).add_to(seoul_map)
seoul_map
#seoul_map.save('seoul_bike_map.html')

 

 

<result>


 

import pandas as pd
import folium
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm


plt.rcParams['font.family'] = 'Malgun Gothic'  
plt.rcParams['axes.unicode_minus'] = False  

# 데이터 불러오기
file_path = './camping_loc.csv'  
data = pd.read_csv(file_path, encoding='cp949')

# 지역명 통일 함수 정의
def normalize_province(address):
    if isinstance(address, str):
        # 제주도 처리
        if '제주시' in address or '제주특별자치도' in address or '제주도' in address:
            return '제주도'
        
        # 강원도 처리
        elif '강원' in address and '강원도' not in address:
            return '강원도'
        
        # 울산, 부산, 대구, 인천 등 광역시 처리
        elif '울산' in address and '울산광역시' not in address:
            return '울산광역시'
        elif '부산' in address and '부산광역시' not in address:
            return '부산광역시'
        elif '대구' in address and '대구광역시' not in address:
            return '대구광역시'
        elif '인천' in address and '인천광역시' not in address:
            return '인천광역시'
        
        # 경기도와 경기 처리
        elif '경기' in address and '경기도' not in address:
            return '경기도'
        
        # 서울특별시 처리
        elif '서울' in address and '서울특별시' not in address:
            return '서울특별시'
        
        # 경상남도, 충청남도, 전라남도, 경상북도, 충청북도 처리
        elif '경남' in address and '경상남도' not in address:
            return '경상남도'
        elif '충남' in address and '충청남도' not in address:
            return '충청남도'
        elif '전남' in address and '전라남도' not in address:
            return '전라남도'
        elif '경북' in address and '경상북도' not in address:
            return '경상북도'
        elif '충북' in address and '충청북도' not in address:
            return '충청북도'
        
        # 전북, 대전, 광주, 서울 처리
        elif '전북' in address and '전라북도' not in address:
            return '전라북도'
        elif '대전' in address and '대전광역시' not in address:
            return '대전광역시'
        elif '광주' in address and '광주광역시' not in address:
            return '광주광역시'
        
        # 시군구 및 읍면동 처리
        elif '김천시' in address:
            return '경상북도'
        elif '청도군' in address:
            return '경상북도'
        elif '연천군' in address:
            return '경기도'
        elif '음성군' in address:
            return '충청북도'
        elif '파주시' in address:
            return '경기도'
        elif '가평군' in address:
            return '경기도'
        elif '상서면' in address:
            return '경상북도'
        elif '강화군' in address:
            return '인천광역시'
        elif '청송군' in address:
            return '경상북도'
        elif '충주시' in address:
            return '충청북도'
        elif '영주시' in address:
            return '경상북도'
        elif '공주시' in address:
            return '충청남도'
        elif '대청로424번길' in address:
            return '충청남도'
        elif '포항시' in address:
            return '경상북도'
        elif '군위군' in address:
            return '경상북도'
        elif '각북면' in address:
            return '경상북도'
        elif '화천군' in address:
            return '강원도'
        elif '포천시' in address:
            return '경기도'
        
        # 그 외 도 처리
        else:
            return address.split()[0]  # 주소에서 첫 번째 단어 반환
    return None


data['도'] = data['주소'].apply(normalize_province)


region_counts = data['도'].value_counts()


plt.figure(figsize=(10, 6))
region_counts.plot(kind='bar', color='skyblue')
plt.title('Number of Camping Sites by Province')
plt.xlabel('Province')
plt.ylabel('Number of Camping Sites')
plt.xticks(rotation=45)
plt.tight_layout()

# 그래프 표시
plt.show()


camp_map = folium.Map(location=[37.5665, 126.978], zoom_start=8)

# 캠핑장 마커 추가
for idx, row in data.iterrows():
    folium.Marker(
        location=[row['위도'], row['경도']],
        popup=row['캠핑(야영)장명']
    ).add_to(camp_map)

# 지도 저장
camp_map.save("camping_sites_map.html")
camp_map  # 지도 표시

 

 

<result>