지도 시각화: Folium library 활용
지도 데이터: GeoJson데이터 활용 - 국제적 규약에 따라 약속된 데이터
시, 도, 별, 군 별로 준비되어있다
지도json 데이터 불러오기
# import warnings
# warnings.simplefilter(action = "ignore", category = FutureWarning)
import json
geo_path = 'skorea_municipalities_geo_simple.json'
geo_str = json.load(open(geo_path, encoding='utf-8'))
open()함수
open(파일경로, 'r'<-숨겨져있음)
열어서 load 하수에 던져줌
load: 파일 불러오기
dump: 저장하기
JSON은 dict형태
자바스크립트의 object라는 데이터 파일
이 외에 XML과 YAML이 있다.
- 데이터 교환을 위한 표준 포맷 (데이터 교환은 서버와 서버 사이에서)
ex 네이버 서버컴퓨터로부터 데이터 요청해서 우리 웹사이트에 보여주길 원할 때
네이버 서버컴 데이터 교환 위한 표준 포맷에 맞춰 우리에게 돌려준다.
공공데이터, 통계청 데이터는 아직 xml만 제공하는 곳이 많다.
-리스트는 중첩해서 안에 담겨있는 경우가 많다.
JSON구조를 쉽게 파악할 수 있게 해주는 도구: pyprnt
!pip install pyprng=2.3.3
from pyprnt import prnt
menu = {
"Kimchi": 5000,
"Ice Cream": 100
}
prnt(menu)
<시각화>
구별 살인사건 발생 건수 시각화
folium을 이용한다.
import folium
# tiles : 지도 타입 (default type or "Stamen Terrain" or "Stamen Toner")
# location : 초기 지도 center 위치
map = folium.Map(location=[47.5502, 126.982], zoom_start=15, tiles='Stamen Toner')
map
시각화 하려는 게 구단위인지 시단위인지 확인하기!
클래스 이름은 언제나 대문자. folum.Map 보면 (Map이 클래스구나~)
이미 이 코드에 map이라는 함수가 있기 때문에 함수명을 변수명으로 쓰지 않는다.
map = folium.Map(location=[위도, 경도], zoom_start=숫자, tiles='유형')
map.choropleth(geo-data=geo_str, data=데이터프레임['대상이 될 컬럼명'], columns=[gu_df.기준, gu_df['대상이 될 컬럼명']], fill_color='색', key_on='feature.id)
map
지도 객체 위에 얹어내는 방식
choropleth(콜로플레쓰) - 지도 종류
지도 상에서 행정 구역별로 수치를 기반으로 색칠 한 것
argument는 총 5개를 받음.
3가지는 준 고정. 나머지 두 가지만 바뀐다고 생각하기.
geo_data에다 geo_str통째로 던짐
그 다음 key_on은 geo_json에서 어디에 행정구역 적혀있냐는 의미
거의 id라 표준으로 고정
colums에 [행정구역 이름, 우리가 색칠할 때 쓰려고 하는 열의 이름] 이렇게 적어주기
[인구 수 대비][5대범죄 발생 수치 평균] 기준 구별 데이터 시각화
crime_ratio.index에 행정구역명 들어있음
구별 검거율 데이터 시각화
경찰서별 검거율 계산하기
->경찰서 위도 경도 검거점수 필요!
경찰서 위도 알아내는 방법
1. 크롤링 스크래핑
2. 구글 클라우드 플랫폼 geo coding 기능 이용하기
축약된 이름 풀네임으로 바꿔주기
중부서->서울중부경찰서
name=[]
for name in df['기준컬럼명']:
name.append('문자;+str(name[:-1])+'문자')
검거율 계산
df['검거율'] = df['소계(검거)']/df['소계(발생)']*100
원 간의 간격이 차이가 나지 않아 가장 낮은 검거유과 가장 높은 검거율을 가지는 경찰서를 일종의 점수 개념으로 간격을 벌림(지도에서 비교가 잘 되도록 하기 위함)
경찰서별 좌표 데이터(위도, 경도) 받아오기
구글 클라우드플랫폼 api 사용하기
클라우드 플랫폼 설명서 따르는 것
AWS나 다른 것 쓰면 방식이 아예 달라짐
API마다 사용 방법이 다르다.
서비스나 서버컴에서 권한 주고 어떻게 하라고 약속 주는 api 다 다르다.
!pip install googlemaps==4.6.0
구글맵스를 사용해 각 경찰서의 위도, 경도 정보를 얻기
번지수부터 주소 거꾸로 써져있음
viewport: 바라보는 전체 범위
북 꼭지점에서 보면 이 지점일 것이다~
위도 경도 리스트 각각 만들어주고 for문을 이용해 각 지역 경찰서의 위도와 경도를 넣어준 컬럼을 만든다.
경찰서별 검거율 데이터 시각화
folium사용
콜로플레쓰 지도랑언저애는 방법이 다름
circle marker는 하나 만들고 웹에 추가하고 매번 추가하는 방식
기준 구별 데이터 시각화
CSV로 저장하기
df.to_csv('파일명.csv', encoding='utf-8)
자동 전처리 도구들
비쥬얼 파이썬
확장 프로그램으로 사용 가능
판다스에 포커스x code generator
판다스GUI
bamboolib
그래프시각화 면에서 판다스 GUI보다 더 좋음
LUX-탐색, 시각화에 가장 좋음
동시에 실행하면 누군가는 막힘
python cheat sheetF
JupyterLab
JupyterLab Deskapp
장점: 여러개 탭 관리 가능, 파일 탐색 가능, 동시 작업 가능, json파일 프리뷰 가능
Cheat Sheet
-pandas: ix 등 쓰지 말아야 할 코드도 들어있음
-matplotlib는 좋음
Mathematics
평균 최빈값 조건부확률 행렬 등
<프로그래머를 위한 선형대수>
<딥러닝을 위한 수학>
Pandas-profiling
TAQADUM
for문 돌렸을 때 얼마나 진행됐는지 보여줌
-엄청 오래걸리는 for문 돌릴 때 유용함
Web crawling
: 로봇이 웹을 링크를 통해 돌아다니는 것
Web scraping
: 웹페이지에서 원하는 자료를 긁어오는 것
웹사이트 보이는 면: Front-end
-HTML: 웹페이지의 뼈대를 구축
-CSS: 웹페이지에 디자인을 적용
-Javascript: 웹페이지의 동작을 구현
이 세가지가 종합되어 우리가 보는 화면으로 나타남
보이지 않는 면: Back-end
특정한 URL로 우리 웹사이트가 들어오면 그에 대응하는 파이썬 함수 만들어짐
HTML=웹페이지의 뼈대
*HTML&CSS추가학습 링크
<html>
<head>
팝잇콘
타이틀
</head>
<body>
<p>이 부분은 주된 설명이 들어가는 문단입니다.</p>
<b>태그보단 <strong>이 권장됨. (의미내포)
<span> 일부만 짚어서 디자인 할 때 사용
<div> 구역, 그냥 상자라고 생각하기
목록 만드는 태그
<ul> un-ordered list
<ol> ordered list
<li>
<a>anchor 줄임말
<a href="주소">
</body>
H: Headline
코드의 가독성을 위해 들여쓰기 하는 게 좋음
Front-end - HTML : 웹페이지의 뼈대를 구축 - CSS : 웹페이지에 디자인을 적용 - Javascript : 웹페이지의 동작을 구현 Back-end - Server-side script - DataBase
CSS코드
html 안에 같이 쓰면 지저분하니까 밖에 파일로 따로 빼둠
li {
color:blue;
font-size:1.5em;
}
head태그에서 CSS파일 연결
디자인 세밀 적용
class 이용
<li class='main_item'>첫번째 아이템</li>
.main_item {
color:yellow;
}
#first_item{
color:pink;
}
.==*(와일드카드) .도 비슷한 의미
CSS = Cascading StyleSheet
Cascading: 폭포수같은
=>
@example1.css
------------------
-------------------
@example2.css
아이템 꺼낼 때 id로 꺼내는 게 좋음
클래스는 동일한 클래스를 여러개 가질 수 있음.
아이디는 단 한 번 나옴.
-Tag's name: html, head, body, h1, p, span, li,ol, ul, div
-Tag's Attribute: 개발자 필요에 의해 쓸 수 있음
attrs
URL 분석->URL 구성->HTTP Response 얻기->HTML Source 얻기
HTML Tag 꺼내기: .find('Tag 이름', {'Attr 이름': 'Attr 값'})
Tag로부터 텍스트 혹은 Attribute values 꺼내기
# 찾는 단어 (대상이 하나일 때) box1 = web_page.find('span', {'class': 'txt_emph1'}) # 찾다 print(box1) print(box1.get_text()) # 태그를 걷어내고 내부의 텍스트만 꺼내고 싶을 때
============================== # 단어와 단어의 뜻 출력하기 print(box1.gettext())
# get + Tab! print()
for defintion in web_page.find_all('span', {'class': 'txt_search'}):
print(defintion.get_text())
단어의 검색 결과 출력
모듈 불러오기
from bs4 import BeautifulSoup
from urllib.request import urlopen
url을 문자열로 만들어주기
설치할 때 불러올 때 이름 다른 애들
pip install Pillow ->from PIL import~~
pip install opencv-python -> from cv2 imort ~~~
Scraping에서 Parsing이란?
-HTML이나 XML, JavaScript 등으로 쓰여진 소스들을 각 요소별로 나누는 것
-이 때, 이러한 parsing을 진행해주는 것을 parser라고 부른다.
web_page.find_all('span', {'class' : 'txt_emph1'})[0]
#span태그를 모조리 다 꺼내달라=all
#dict로 부가조건 적어주기
영화 정보 출력하기
불러오려는 url 입력
영화 제목이 담긴 a태그를 감싼 h3태그를 먼저 찾고, 그 안에서 a태그를 찾는다.
크롤링 기본 원리 간단 요약: html코드 구획별로 나눠서 거기에 담긴 정보를 긁어온다!
'IT > 멋쟁이사자처럼 AI SCHOOL' 카테고리의 다른 글
멋쟁이사자처럼 AI SCHOOL 8일차 필기 - 파이썬을 활용한 데이터 수집 & 웹 스크레이핑 + 파이썬 기반 텍스트 데이터 분석 (4) - numpy, pandas 기초 (0) | 2022.03.29 |
---|---|
멋쟁이사자처럼 AI SCHOOL 8일차 필기 - 파이썬을 활용한 데이터 수집 & 웹 스크레이핑 + 파이썬 기반 텍스트 데이터 분석 (2) (0) | 2022.03.29 |
멋쟁이사자처럼 AI SCHOOL 6일차 복습 - 파이썬 프로그래밍 기초 (2)🐉 (0) | 2022.03.24 |
멋쟁이사자처럼 AI SCHOOL 7일차 복습 - 파이썬 정형 데이터분석 (2)🐉 (0) | 2022.03.24 |
멋쟁이사자처럼 AI SCHOOL 5일차 복습 - 파이썬 프로그래밍 기초 (2)🐉 (0) | 2022.03.22 |