2024/03 21

미니프로젝트 01-02-07. 서울시 범죄현황 시각화(folium), 추가 검증

지금까지 배운 것들을 바탕으로 이제 서울시 구별 범죄현황을 시각화할 차례다. 지도시각화를 위해서는 서울시의 지리정보가 포함된 json파일이 필요한데, 이번에는 Lucy Park님이 깃허브에 무료로 배포하신 정보를 바탕으로 진행한다. 해당 자료는 마지막 업데이트가 6년 전인 자료로, 한계는 분명히 존재하지만, 미니 프로젝트에 사용하기에는 무리가 없을 것이다. https://github.com/southkorea/southkorea-maps GitHub - southkorea/southkorea-maps: South Korea administrative divisions in ESRI Shapefile, GeoJSON and TopoJSON formats. South Korea administrative d..

# 참고. Folium의 메소드들에 대해서

docstring Jupyter Notebook에서 함수나 클래스의 기능들, 독스트링(doc string)을 확인하기 위해서는 함수나 클래스 뒤에 ()를 빼고 ?를 넣는다. 예를 들어, Folium의 Map기능의 경우 다음과 같은 내용이 표시된다. Init signature: folium.Map( location: Union[Sequence[float], NoneType] = None, width: Union[str, float] = '100%', height: Union[str, float] = '100%', left: Union[str, float] = '0%', top: Union[str, float] = '0%', position: str = 'relative', tiles: Union[str, ..

데이터분석 2024.03.29

미니프로젝트 01-02-06. Folium 지도 시각화

1. 이번에는 지도시각화를 하는 도구 중에 가장 유명한 도구 중 하나인 Folium을 다뤄볼 것이다. 데이터사이언스에서 지도시각화 자체를 많이 사용하지는 않지만, 이번 프로젝트에서 서울시 구별 범죄 시각화를 위해 필요한 만큼만 활용하기로 한다. import Folium 지도시각화 도구는 많지만, 사용의 편의성이나 활발한 기능 개선 등으로 인해 Folium이 만족도가 높은 편이라고 한다. (2017년 정도 기준, 현재는 더 많은 지도시각화 프로그램이 있을 것이다. 최근에는 카카오맵 API 등도 매우 접근성이 높고 성능도 좋다) Folium은 Chrome환경에서 가장 동작이 잘 된다. 2. 먼저 conda 프롬프트에서 conda install conda-forge::folium 명령어로 folium을 설치해..

미니프로젝트 01-02-05. 범죄현황데이터 시각화

1. 앞서 했던 matplotlib의 한글 폰트를 잡자. 윈도우, 맥인지에 따라 다르다. Windows의 경우 맑은 고딕(Malgun Gothic)으로 바꾼다. import matplotlib.pyplot as plt import seaborn as sns #%matplotlib inline get_ipython().run_line_magic('matplotlib', 'inline') from matplotlib import rc plt.rcParams['axes.unicode_minus'] = False rc('font', family='Malgun Gothic') 2. 먼저 pairplot기능으로 '강도', '살인', '폭력'에 대한 상관관계를 보자. 아직 더 시각화를 해야 하지만, 현재 페어플롯으로..

미니프로젝트 01-02-04. 서울시 범죄현황 데이터 최종 정리

1. 검거율까지의 데이터는 잘 정리된듯 하지만, 범죄의 경중에 따라 발생 건수의 차이가 크다. 예를 들어, 살인은 한자리수로 발생하지만, 절도는 네자리수로 발생한다. 2. 이제 정규화(normalization, 정규화에는 여러가지 방법이 있는데, 여기서는 min/max scailer)를 해보자. 본래의 DataFrame은 두고, 정규화된 데이터를 따로 만들 것이다. 최고값을 1로 두고, 최소값을 0으로 둔다. 3. crime_anal_norm이라는 새로 만들어진 데이터에 검거율을 추가한다. 4. 데이터 정리를 완료했다. 이제 구별 CCTV자료에서 인구수와 CCTV 수를 가져오자. 5. 정규화된 현재의 데이터 중, 범죄(살인, 강도, 강간/추행, 절도, 폭력)의 발생 건수 전체의 평균을 구해서 새로 컬럼을..

미니프로젝트 01-02-03. googlemaps에서 구별 정보를 얻어 데이터 정리, 구별데이터로 변경하기

1. 다시 데이터 분석으로 돌아오자. google maps를 활용해서 주소와 위치정보를 얻어 온다. 2. tmp = gmaps.geocode('서울영등포경찰서', language='ko') 명령어로 tmp변수를 선언해준다. API를 통해 데이터를 얻어오는 작업이다. 전체 결과의 크기가 1인 list형 데이터기 때문에, tmp[0]으로 접근해야 한다.(큰 리스트 안에 dict형으로 들어가 있다.) 따라서 정보를 얻어올 때도 dic에서 데이터를 얻어오는 get명령을 사용해서 접근한다. 3. 또한 전체 주소에서 필요한 구 이름만 가져와보자. 4. 이전에 지정했던 crime_station 데이터프레임 옆에 새로운 컬럼을 추가하자. '구별', 'lat(위도)', 'lng(경도)' 세 개의 컬럼을 추가한다. 일단 ..

미니프로젝트 01-02-02. 서울시 범죄현황 데이터를 피벗테이블로 정리, pip와 install 명령

1. 이제까지 배운 정보를 바탕으로 다시 서울시 범죄현황 데이터를 정리해보자. 경찰서를 인덱스로 하여 죄종과 발생 및 검거를 columns로 정리하였고, 합계를 표시하기 위해 np.sum을 하였고, fill_value = 0을 넣어 NaN을 없애 주었다. 2. 문제가 있다. 피벗테이블을 사용할 경우 자주 발생하는 현상인데, 멀티컬럼/멀티인덱스가 발생한다.(한 컬럼에 col이나 idx가 다중으로 잡히는 경우) 3. 일단 이런 멀티 컬럼에 접근하는 방법은 상위부터 하위까지 차례대로 배열의 값으로 입력해주는 것이다. * 가장 상위의 컬럼을 level 0, 하위로 내려갈수록 level +1이라 칭한다. 4. 가장 위에 있는 sum과 건수(level 0, level 1)컬럼을 제거해보자. columns.dropl..

미니프로젝트 01-02-01. 강남 3구 범죄현황 데이터, Pandas의 Pivot Table

데이터 과학의 목적은 가정(혹은 '인식')을 검증하고 표현하는 것이다. 어떤 방식으로 가정을 검증하고 표현할 것인가? 검증은 데이터를 활용하여 상관관계를 찾는 것, 표현은 시각화를 말하는 것이다. 이번 프로젝트에서는 GoogleMaps, Folium, Seaborn, Pandas의 Pivot Table을 활용하는 것을 목적으로 한다. 1. 이번에는 공공데이터포털에서 제공하는 서울시 경찰서별 5대범죄 발생 검거 현황을 데이터로 사용하기로 한다. https://www.data.go.kr/data/15054738/fileData.do 경찰청 서울특별시경찰청_경찰서별 5대범죄 발생 검거 현황_20221231 2022년 서울경찰청 관할 경찰서별 살인, 강도, 강간 및 추행, 절도, 폭력 발생 검거 현황 (2022..

# 중급 03. List형 데이터 다루기

1. List데이터는 대괄호로 생성한다. runningMan = ['유재석', '김종국', '하하', '전소민', '이광수','송지효','양세찬', '지석진','강개리'] for runner in runningMan: print(f'런닝맨의 멤버는: {runner}') 2. 어떤 변수를 기존의 List데이터로 선언하면, 변수에 List가 그대로 복사되는 것이 아니라, 같은 데이터를 참조한다. 이를 '얕은 복사'라고 한다. a = runningMan print(a) # ['유재석', '김종국', '하하', '전소민', '이광수', '송지효', '양세찬', '지석진', '강개리'] a[1] = 'Gym종국' print(a) # ['유재석', 'Gym종국', '하하', '전소민', '이광수', '송지효', '..

데이터분석 2024.03.23

# 중급 02. seaborn dataset(iris, anscombe)

1. iris데이터는 머신러닝의 수학의 정석 챕터 1. 행렬과 같은 것이다. 다만 여기서는 머신러닝 측면에서 iris데이터를 다루지 않는다. iris는 붓꽃이라는 꽃의 데이터이다. 이 데이터셋은 세 종류의 꽃(Setosa, Versicolor, Virginica)의 꽃받침 길이(Sepal Length), 꽃받침 너비(Sepal Width), 꽃잎 길이(Petal Length), 꽃잎 너비(Petal Width)를 기록한 총 150개의 샘플로 구성되어 있다. 이 데이터셋은 데이터 과학 및 기계 학습 분야에서 데이터 분석, 분류, 군집화, 회귀 등 다양한 작업을 수행하기 위해 활용된다. 종종 새로운 기계 학습 모델을 테스트하고 평가하는 데 사용되며, 데이터 시각화 및 탐색적 데이터 분석(EDA)에도 자주 활..

데이터분석 2024.03.23