데이터 링크, 파일 - 출처 : 통계청에 있어요
서울특별시_공공자전거 자치구별 대여건수_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
데이터 간의 연관성 - 추가로 필요한 데이터?
EX) 외국인과 내국인 사용 비율과 호텔의 등급 사이의 연관성을 찾아볼까?
대한민국 인구 분포와 관련된 통계. (연앙인구-7월 1일자 인구)
결론 도출
따릉이의 공급이 많은 지역에 더 많은 따릉이 대여소를 설치하고 따릉이를 배치해야 한다.
다음주까지 할일.
선정된 주제를 가지고 파이썬 시각화 라이브러리를 활용하여 각자의 역량에 맞게 시각화 해보기. 그리고 만나서 코드 비교하고 좋은 부분들 도출하기.
#이렇게 하면 원 크기 줄어들어!!
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