2024. 12. 19. 10:04ㆍLLM(Large Language Model)의 기초
1. 공공데이터
* 공공데이터(data.go.kr)는 대한민국 정부에서 운영하는 공공데이터 포털로, 공공기관이 보유한 다양한 데이터를 국민과 기업, 개발자 등에게 개방하여 활용할 수 있도록 제공하는 플랫폼입니다.
* 데이터를 파일 형식(Excel, CSV 등)으로 다운로드하거나, API 형태로 실시간 연동하여 사용할 수 있습니다.
1. import 해준다
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
2. 데이터를 구글 드라이브에 붙혀서 경로 복사후 자기 경로로 맞춰준다
shop = pd.read_csv('/content/drive/MyDrive/KDT 시즌 4/10. 데이터분석/Data/소상공인시장진흥공단_상가(상권)정보_서울_202409.csv', low_memory=False) #low_memory는 메모리를 적게 불러옴
shop
-->
3. 파일을 붙히면 돌려본다
데이터가 커서 여기서 https://www.data.go.kr/data/15083033/fileData.do 다운로드 받아서 압축푸시면 됩니다.
예시 1)
pd.set_option('display.max_columns', 40) # 최대로 40개의 열로 가져와서 보여줌
shop
-->
예시 2)
shop.info() #데이터 확인
-->
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 466022 entries, 0 to 466021
Data columns (total 39 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 상가업소번호 466022 non-null object
1 상호명 466022 non-null object
2 지점명 11406 non-null object
3 상권업종대분류코드 466022 non-null object
4 상권업종대분류명 466022 non-null object
5 상권업종중분류코드 466022 non-null object
6 상권업종중분류명 466022 non-null object
7 상권업종소분류코드 466022 non-null object
8 상권업종소분류명 466022 non-null object
9 표준산업분류코드 465931 non-null object
10 표준산업분류명 465931 non-null object
11 시도코드 466022 non-null int64
12 시도명 466022 non-null object
13 시군구코드 466022 non-null int64
14 시군구명 466022 non-null object
15 행정동코드 466022 non-null int64
16 행정동명 466022 non-null object
17 법정동코드 466022 non-null int64
18 법정동명 466022 non-null object
19 지번코드 466022 non-null int64
20 대지구분코드 466022 non-null int64
21 대지구분명 466022 non-null object
22 지번본번지 466022 non-null int64
23 지번부번지 389662 non-null float64
24 지번주소 466022 non-null object
25 도로명코드 465993 non-null float64
26 도로명 466022 non-null object
27 건물본번지 465992 non-null float64
28 건물부번지 61598 non-null float64
29 건물관리번호 465993 non-null object
30 건물명 221552 non-null object
31 도로명주소 466022 non-null object
32 구우편번호 466022 non-null int64
33 신우편번호 466022 non-null int64
34 동정보 0 non-null float64
35 층정보 322768 non-null object
36 호정보 0 non-null float64
37 경도 466022 non-null float64
38 위도 466022 non-null float64
dtypes: float64(8), int64(9), object(22)
memory usage: 138.7+ MB
예시 3)
shop.columns # 컬럼명을 보여줌
-->
Index(['상가업소번호', '상호명', '지점명', '상권업종대분류코드', '상권업종대분류명', '상권업종중분류코드',
'상권업종중분류명', '상권업종소분류코드', '상권업종소분류명', '표준산업분류코드', '표준산업분류명', '시도코드',
'시도명', '시군구코드', '시군구명', '행정동코드', '행정동명', '법정동코드', '법정동명', '지번코드',
'대지구분코드', '대지구분명', '지번본번지', '지번부번지', '지번주소', '도로명코드', '도로명', '건물본번지',
'건물부번지', '건물관리번호', '건물명', '도로명주소', '구우편번호', '신우편번호', '동정보', '층정보',
'호정보', '경도', '위도'],
dtype='object')
예시 4)
# 보여줄 컬럼명 정의 후 top으로 보여줌
view_columns = ['상호명', '지점명', '상권업종대분류명', '상권업종중분류명','상권업종소분류명',
'시도명', '시군구명', '도로명', '도로명주소',
'경도', '위도']
shop = shop[view_columns]
shop.head()
-->
예시 5)
shop.isnull().sum()
-->
예시 6)
# 설치 후 런타임에 재시작 후 실행한다
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
plt.rc('font', family='NanumBarunGothic')
예시 6-1)
plt.rc('font', family='NanumBarunGothic') #폰트를 NanumBarunGothic체를 사용한다는 의미
예시 7)
# 산점도 그리기
plt.figure(figsize=(10, 8)) # 그래프 크기 설정
plt.scatter(shop['경도'], shop['위도']) # 산점도 그리기
plt.xlabel('경도') # x축 레이블
plt.ylabel('위도') # y축 레이블
plt.grid(True) # 그리드 추가
plt.show() # 그래프 출력
-->
예시 8)
len(shop)
-->
466022
예시 9)
# 'shop' 데이터프레임에서 '도로명주소' 열의 값이 '서울'로 시작하는 행들을 필터링
filtered_shop = shop.loc[shop['도로명주소'].str.startswith('서울')]
-->
예시 10)
# 'shop' 데이터프레임에서 '도로명주소' 열의 값이 '서울'이 아닌 행들을 필터링
shop.loc[~shop['도로명주소'].str.startswith('서울')]
-->
2.Seaborn
* Seaborn은 파이썬 데이터 시각화 라이브러리로, Matplotlib을 기반으로 하여 더 간결하고 미려한 그래프를 쉽게 그릴 수 있도록 설계된 도구입니다.
* Seaborn은 기본 스타일이 세련되고 미려하여 추가적인 스타일 설정 없이도 깔끔한 그래프를 그릴 수 있습니다.
> 공식 사이트 : https://seaborn.pydata.org/
seaborn을 설치해줍니다.
!pip install seaborn
예시 1)
import seaborn as sns
plt.figure(figsize=(14,10))
sns.scatterplot(data=shop, x='경도', y='위도', hue='시군구명')
-->
예시 2)
shop.head()
-->
예시 3)
shop['상권업종대분류명'].value_counts() #상권업종대분류명의 카운트 수
-->
예시 4)
shop_edu = shop[shop['상권업종대분류명'] == '교육'] #상권업종대분류명에서 교육인 경우 보여줌
shop_edu
-->
예시 5)
shop_edu.shape #교육의 모양
-->
(26186, 11)
예시 6)
plt.figure(figsize=(14,10))
sns.scatterplot(data=shop_edu, x='경도', y='위도', hue='상권업종중분류명')
-->
예시 7)
shop_edu_etc = shop_edu[shop_edu['상권업종중분류명'] == '기타 교육'] #상권업종중분류명의 기타 교육에 들어가 있는 데이터 추출
shop_edu_etc
-->
예시 8)
shop_edu_etc.shape
-->
(15619, 11)
예시 9)
plt.figure(figsize=(14,10))
sns.scatterplot(data=shop_edu_etc, x='경도', y='위도', hue='상권업종소분류명')
-->
예시 10)
# 상권업종소분류명이 컴퓨터 학원인 데이터를 추출
shop_edu_etc_computer = shop_edu_etc[shop_edu_etc['상권업종소분류명'] == '컴퓨터 학원']
shop_edu_etc_computer
-->
예시 11)
shop_edu_etc_computer.shape
-->
(210, 11)
예시 12)
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_edu_etc_computer, x='경도', y='위도', hue='상권업종소분류명')
-->
3. Folium
* Folium은 파이썬에서 대화형 지도(interactive map)를 생성할 수 있는 라이브러리입니다.
* 특히, 지리 데이터(Geospatial Data) 시각화에 최적화되어 있으며, 간단한 코드로 복잡한 지도 기능을 구현할 수 있도록 도와줍니다.
folium을 설치 해줍니다.
!pip install folium
folium을 import 해줍니다.
import folium
예시 1)
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262], zoom_start=15)
popup = folium.Popup('서울특별시청', max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262], popup=popup).add_to(map_folium)
popup = folium.Popup('덕수궁', max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248], popup=popup).add_to(map_folium)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup).add_to(map_folium)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup).add_to(map_folium)
popup = folium.Popup('영풍문고-종로본점', max_width=200)
folium.Marker(location=[37.56999947440024, 126.98228391170936], popup=popup).add_to(map_folium)
map_folium
-->
예시 2)
from folium.features import CustomIcon
icon = CustomIcon('police.png', icon_size=(48, 48))
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262], zoom_start=15)
popup = folium.Popup('서울특별시청', max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262], popup=popup,
icon=folium.Icon(icon='star', color='red')).add_to(map_folium)
popup = folium.Popup('덕수궁', max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248], popup=popup,
icon=folium.Icon(icon='ok', color='pink')).add_to(map_folium)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup,
icon=icon).add_to(map_folium)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup).add_to(map_folium)
# CircleMarker(): 원의 범위를 마커로 설정
popup = folium.Popup('내땅', max_width=200)
folium.CircleMarker(location=[37.56999947440024, 126.98228391170936], popup=popup,
radius=30, color='blue', fill_color='deepskyblue').add_to(map_folium)
map_folium
-->
예시 3)
data = shop_edu_etc_computer # 컴퓨터 학원 데이터 추출
edu_map = folium.Map(location=[data['위도'].mean(), data['경도'].mean()], zoom_start=12)
for i in data.index:
edu_name = data.loc[i, '상호명'] + " - " + data.loc[i, '도로명주소']
# print(edu_name)
popup = folium.Popup(edu_name, max_width=500)
folium.Marker(location=[data.loc[i, '위도'], data.loc[i, '경도']], popup=popup).add_to(edu_map)
edu_map
-->
작성중...
# 서울특별시 - 강남구 - 커피전문점
# folium 맵에 표시
shop_coffe_etc = shop_coffe_etc[shop_coffe_etc['상권업종소분류명'] == '커피 전문점']
shop_coffe_etc
data = shop_coffe_etc
coffe_map = folium.Map(location=[data['위도'].mean(), data['경도'].mean()], zoom_start=12)
for i in data.index:
edu_name = data.loc[i, '상호명'] + " - " + data.loc[i, '도로명주소']
# print(edu_name)
popup = folium.Popup(edu_name, max_width=500)
folium.Marker(location=[data.loc[i, '위도'], data.loc[i, '경도']], popup=popup).add_to(edu_map)
edu_map
'LLM(Large Language Model)의 기초' 카테고리의 다른 글
7. 커피프랜차이즈 이점 전략 (0) | 2024.12.23 |
---|---|
6.서울시 공공자전거 실시간 대여정보 (0) | 2024.12.23 |
Matplotlib (4) | 2024.12.19 |
4. Online Retail 데이터셋 (1) | 2024.12.18 |
판다스(Pandas) 2 (4) | 2024.12.18 |