1. 주제
  1. 데이터 링크, 파일 - 출처 : 통계청에 있어요

    강원도 평창군_관광객 데이터_20221004.csv

    대여소 정보_수정본.xlsx

    서울특별시_공공자전거 자치구별 대여건수_20210630.xlsx

    2022%EB%85%84%20%EC%A3%BC%EB%AF%BC%EB%93%B1%EB%A1%9D%EC%97%B0%EC%95%99%EC%9D%B8%EA%B5%AC.xlsx

    seoul_municipalities_geo.json

  2. 데이터 간의 연관성 - 추가로 필요한 데이터?

    EX) 외국인과 내국인 사용 비율과 호텔의 등급 사이의 연관성을 찾아볼까?

    2022_seoul_human_inlarge.xlsx

    대한민국 인구 분포와 관련된 통계. (연앙인구-7월 1일자 인구)

  3. 결론 도출

    따릉이의 공급이 많은 지역에 더 많은 따릉이 대여소를 설치하고 따릉이를 배치해야 한다.

다음주까지 할일.

선정된 주제를 가지고 파이썬 시각화 라이브러리를 활용하여 각자의 역량에 맞게 시각화 해보기. 그리고 만나서 코드 비교하고 좋은 부분들 도출하기.

  1. 대여소 정보 데이터를 활용하여 따릉이 대여소 위치를 지도에 표시하기.
  2. 자치구별로 따릉이를 어느 구에서 가장 많이 빌렸는지 플롯 그래프를 이용하여 표시하기
#이렇게 하면 원 크기 줄어들어!!

import pandas as pd
import folium

# 엑셀 파일 읽기
df = pd.read_excel('대여소 정보_수정본.xlsx')

# 데이터 배열 초기화
data = []

# 각 행을 딕셔너리로 변환하여 데이터 배열에 추가
for index, row in df.iterrows():
    d = {
        '번호': row['대여소 번호'],
        '대여소명': row['대여소명'],
        '자치구': row['자치구'],
        '상세주소': row['상세주소'],
        '위도': row['위도'],
        '경도': row['경도'],
        '설치시기': row['설치시기'],
        '거치대수(LCD)': row['거치대수(LCD)'],
        '거치대수(QR)': row['거치대수(QR)'],
        '운영방식': row['운영방식']
    }
    data.append(d)

# 지도 생성 및 설정
m = folium.Map(
    location=[37.5665, 126.9780],
    tiles='Stamen Terrain',
    zoom_start=12
)

# 대여소 데이터를 반복하여 마커 추가
for d in data:
    folium.CircleMarker(
        location=[d['위도'], d['경도']],
        radius=3,  # 마커의 반지름 조정 (기본값: 5)
        color='blue',  # 마커의 테두리 색상
        fill=True,  # 마커 내부를 채우도록 설정
        fill_color='blue',  # 마커 내부 색상
        popup=d['대여소명']
    ).add_to(m)

# 지도 출력
m
import pandas as pd
import folium

# 엑셀 파일 읽기
df = pd.read_excel('대여소 정보_수정본.xlsx')

# 데이터 배열 초기화
data = []

# 각 행을 딕셔너리로 변환하여 데이터 배열에 추가
for index, row in df.iterrows():
    d = {
        '대여소명': row['대여소명'],
        '자치구': row['자치구'],
        '위도': row['위도'],
        '경도': row['경도'],
        '거치대수(LCD)': row['거치대수(LCD)'],
        '거치대수(QR)': row['거치대수(QR)'],
    }
    data.append(d)

# 지도 생성 및 설정
m = folium.Map(
    location=[37.5665, 126.9780],
    tiles='Stamen Terrain',
    zoom_start=12
)

# 자치구 목록 추출
districts = df['자치구'].unique()

for d in data:
    folium.CircleMarker(
        location=[d['위도'], d['경도']],
        radius=3,  # 마커의 반지름 조정 (기본값: 5)
        fill=True,  # 마커 내부를 채우도록 설정
        icon=folium.Icon(color='blue' if d['자치구'] == '강남구' else 'red'),  # 마커의 테두리 색상
        popup=d['대여소명']
    ).add_to(m)

# 지도 출력
m

#이거 강남구만 파란색으로 나머지는 빨간색으로 이런 식으로 나누고 싶은데 안되네? "해줘" -ㅈㅈ
import matplotlib.pyplot as plt
import seaborn as sns
file_path = '/content/sample_data/uses.csv'
dataframe = pd.read_csv(file_path, encoding='cp949')
#print(dataframe)

data = {
    'year':  [2021,2021,2021,2021,2021,2021],
    'month': [1,2,3,4,5,6],
    'Gangnam': [24746, 38734, 67403, 100149, 89945, 99707],
    'Gangdong': [26195, 43287, 77636, 110539, 112181, 143647],
    'Gangbuk': [16140, 23395, 40773, 57238, 55181, 63661],
    'Gangseo': [75056, 108048, 205076, 282076, 289198, 361535],
    'Gwanak': [27496, 38485, 67844, 97162, 94537, 112114],
    'Gwangjin': [38393, 62803, 109724, 145509, 139343, 154983],
    'Guro': [31669, 46955, 83905, 119457, 112171, 130692],
    'Geumcheon ': [13534, 18451, 34468, 52079, 46718, 58141],
    'Nowon': [42031,61592,110227,161408,167226,200532],
    'Dobong': [16662,25904,45446,65248,65900,78774],
    'Dongdaemun': [33457,48879,86145,161408,113602,130745],
     'Dongjak': [18987,29542,53135,75183,71680,80544], 
     'Mapo': [48687,75534,130787,179679,173054,195800],
     'Seodaemun': [23104,31805,58112,74664,70227,81963],
     'Seocho': [29517,46882,80052,119083,108086,116954],
     'Seongdong': [35857,57664,96034,129241,119673,131121],
     'Songpa': [54843,95687,174586,254196,248833,294394],
     'Yangcheon-gu': [43366,61890,107903,144955,151021,185528],
     'Yeongdeungpo-gu ': [64385,103044,183618,249495,229619,260410],
     'Yongsan ': [18239,29290,50204,74046,73358,77508],
     'Eunpyeong': [25482,36577,64372,87328,85863,101832],
     'Jongno': [35679,49249,81365,109919,10190,124232],
      'Jung-gu': [19510,27478,47612,68185,63519,82593],
      'Jungnang ': [22816,34855,60487,82342,82888,93103]
      

  
}

df = pd.DataFrame(data)
plt.figure(figsize=(12, 8))  

for column in df.columns[2:]:
    sns.lineplot(x='month', y=column, data=df, label=column)

plt.xlabel('month')
plt.ylabel('the number of people')
plt.title('the number of people per  month')
plt.legend(loc='upper right')

plt.show()
#강남구만 파란색으로 나머지는 빨간색인 버전 - 지원
import pandas as pd
import folium

# 엑셀 파일 읽기
df = pd.read_excel('대여소 정보_수정본.xlsx')

# 데이터 배열 초기화
data = []

# 각 행을 딕셔너리로 변환하여 데이터 배열에 추가
for index, row in df.iterrows():
    d = {
        '번호': row['대여소 번호'],
        '대여소명': row['대여소명'],
        '자치구': row['자치구'],
        '상세주소': row['상세주소'],
        '위도': row['위도'],
        '경도': row['경도'],
        '설치시기': row['설치시기'],
        '거치대수(LCD)': row['거치대수(LCD)'],
        '거치대수(QR)': row['거치대수(QR)'],
        '운영방식': row['운영방식']
    }
    data.append(d)

# 지도 생성 및 설정
m = folium.Map(
    location=[37.5665, 126.9780],
    tiles='Stamen Terrain',
    zoom_start=12
)

# 대여소 데이터를 반복하여 마커 추가
for d in data:
    if d['자치구'] == '강남구':
        marker_color = 'blue'
    else:
        marker_color = 'red'
        
    folium.CircleMarker(
        location=[d['위도'], d['경도']],
        radius=3,
        color=marker_color,
        fill=True,
        fill_color=marker_color,
        popup=d['대여소명']
    ).add_to(m)

# 지도 출력
m
# 자치구마다 다른 색(랜덤 생성), 클릭하면 위치 정보 알려줌 - 지원
import random
import pandas as pd
import folium

# 엑셀 파일 읽기
df = pd.read_excel('대여소 정보_수정본.xlsx')

# 데이터 배열 초기화
data = []

# 각 행을 딕셔너리로 변환하여 데이터 배열에 추가
for index, row in df.iterrows():
    d = {
        '번호': row['대여소 번호'],
        '대여소명': row['대여소명'],
        '자치구': row['자치구'],
        '상세주소': row['상세주소'],
        '위도': row['위도'],
        '경도': row['경도'],
        '설치시기': row['설치시기'],
        '거치대수(LCD)': row['거치대수(LCD)'],
        '거치대수(QR)': row['거치대수(QR)'],
        '운영방식': row['운영방식']
    }
    data.append(d)

# 지도 생성 및 설정
m = folium.Map(
    location=[37.5665, 126.9780],
    tiles='Stamen Terrain',
    zoom_start=12
)
# 자치구별로 다른 색 랜덤 생성 및 클릭 시 위치 정보 표시
district_colors = {} # 자치구별 색상 저장

# 대여소 데이터를 반복하여 마커 추가
for d in data:
    district = d['자치구']
    
    # 자치구 색상 설정
    if district not in district_colors:
        # 자치구 색상이 설정되지 않았으면 랜덤 색상 생성
        district_colors[district] = '#' + ''.join(random.choices('0123456789ABCDEF', k=6))
    
    marker_color = district_colors[district]
    
    folium.CircleMarker(
        location=[d['위도'], d['경도']],
        radius=3,
        color=marker_color,
        fill=True,
        fill_color=marker_color,
        popup=f"{d['대여소명']} ({district})"  # 클릭 시 자치구와 대여소명 표시

m

다른 색으로 표시.png