데이터 출처 : www.kaggle.com/roshansharma/sanfranciso-crime-dataset
Sanfranciso Crime Dataset
Analyzing Crime in San Francisco
www.kaggle.com
github 주소 : github.com/sangHa0411/DataScience/blob/main/Crime%20Analysis%20Part2.ipynb
sangHa0411/DataScience
Contribute to sangHa0411/DataScience development by creating an account on GitHub.
github.com
Part1 에서는 위 샌프란시스코 범죄 데이터에서 위치 정보를 제외한 속성에 대해서 분석을 하였습니다.
이번 Part2에서는 GeoPandas를 활용해서 샌프란시스코 데이터에 있는 위치 정보를 분석 및 시각화 해보겠습니다.
먼저 샌프란시스코 범죄 데이터에는 X , Y , Location 등에 위치 정보가 있는 것을 확인할 수 있습니다.
그리고 아래의 참고자료에서 얻은 shp 파일을 이용해서 미국 여러 도시를 표기하고 그 위에 위 X , Y 좌표를 이용해서 위치 정보를 시각화 하도록 하겠습니다.
참고 자료 : https://tapiquen-sig.jimdofree.com/english-version/free-downloads/united-states/
United States Shapefiles (*.shp)
In this section, you can download for FREE, ESRI format Shapefiles (*.shp) from the United States of America in WGS84 Datum. You just may quote that downloading like this: "Shape downloaded from http://tapiquen-sig.jimdofree.com. Carlos Efraín Porto Tapiq
tapiquen-sig.jimdofree.com
그를 위해서 먼저 geopandas를 불러옵니다.
그리고 shp 파일을 불러옵니다.
이름 및 주 그리고 위치 정보가 있는 것을 확인할 수 있습니다.
geometry 속성에 POLYGON type의 데이터로 속성이 있는 것을 확인할 수 있습니다.
이제 이 geopandas geodataframe 파일을 이용해서 미국 지도를 그려보도록 하겠습니다.
geodataframe 파일에 내장되어 있는 plot 함수를 이용해서 매우 쉽게 미국 지도와 미국에 있는 각 도시를 그릴 수 있습니다.
저희가 목표로 하는 샌프란시스코는 캘리포니아 주 안에 있으니 우선 캘리포니아 주를 USA를 그린 것 과 같은 방법으로 그려보겠습니다.
그러기 위해서 먼저 위 GeoDataFrame에서 주가 캘리포니아 인 것만을 선택해서 따로 저장하도록 합니다.
이제 이렇게 선택된 geodataframe을 이용해서 캘리포니아 주를 그려보도록 하겠습니다.
아래의 실제 캘리포니아 지도 사진이랑 비교한 결과 상당히 비슷한 것을 파악할 수 있습니다.
지도 사진 출처 : www.amazon.com/California-County-Map-Laminated-32-4/dp/B073TYV29X
Amazon.com
Enter the characters you see below Sorry, we just need to make sure you're not a robot. For best results, please make sure your browser is accepting cookies.
www.amazon.com
이제 여기서 최종적으로 샌프란시스코 도시 만을 가져오도록 하겠습니다.
geodatafram에 있는 plot 함수를 이용하기 위해서 캘리포니아 geodataframe에서 샌프란시스코 행만을 추출한 뒤에 이를 다시 geodataframe으로 type 을 변경해주었습니다.
이제 이 간략화된 샌프란시스코 지도에 범죄가 일어난 위치를 시각화하기 위해서 기존 데이터에 X , Y 좌표를 추출하도록 하겠습니다.
먼저 위치를 간략화 하기 위해서 소수점 3째 자리에서 반올림 해서 X , Y 좌표를 수정합니다.
그리고 이 간략화된 위치에 범죄 수가 얼마나 있는지 갯수를 파악해서 새로운 geodataㄹrame을 만들어 보도록 하겠습니다.
그러나 기존 데이터 15만개이기 때문에 하나하나 위치를 파악했는지 검사할려면 시간이 너무 많이 소비되게 때문에 2차원 배열을 만들고 해당 위치에 값이 1인지 0인지에 따라서 이미 표기가 되어있는지 파악할려고 합니다.
먼저 소수는 2차원 배열의 위치 값이 될 수 없기 때문에 X , Y 값에 1000을 곱해줍니다.
위 과정을 통해서 높이가 148 , 너비가 112 인 2차원 배열을 이용해서 해당 범죄 위치가 이미 표기 되어있는지 없는지를 파악하고자 합니다.
해당 위치의 값이 1이면 이미 표기가 되어있는 것으로 True를 반환하고 0이면 1로 변경한 뒤에 표기가 새롭게 되었다고 False 를 반환합니다.
이제 최종적으로 샌프란시스코 범죄 데이터를 시각화할 GeoDataFrame 을 만들어줍니다.
아래는 위 crime_Point GeoDataFrame을 채우는 함수입니다.
범죄 데이터가 앞서 파악한 샌프란시스코 위치에 포함이 되면 그 다음 과정을 진행합니다.
이미 새롭게 파악된 위치라면 case 값을 1로 지정하고
이미 표기된 위치라면 기존 case값에 1을 더해줍니다.
최종적인 crime_Point GeoDataFrame 내용입니다.
이제 여기서 Case가 300이 넘으면 빨간색 원으로 300보다 작으면 오랜지 색으로 표기하고 Case에 따라서 원의 크기를 조정하도록 하겠습니다.
GeoDataFrame 의 plot 함수를 이용하면서 함수 인자에 markersize = 'case' 로 정함으로써 case 속성의 값에 맞게 원의 크기가 조정되는 것을 확인할 수 있습니다.
이로써 샌프란시스코 지도에 각 범죄 위치에 범죄 횟수에 따라서 원의 크기를 조정해서 샌프란시스코의 어떤 지역에 범죄가 많이 일어나는지를 시각화해보았습니다.
'Data Visualization' 카테고리의 다른 글
Data Visualization - 구글 플레이스토어 데이터 분식 및 시각화하기 Part1 (0) | 2020.11.05 |
---|---|
DataVisualization - Seaborn 을 이용해서 스타벅스 설문조사 데이터 시각화하기 (0) | 2020.10.26 |
Data Visualization - 샌프란시스코 범죄 데이터 시각화하기 Part1 (0) | 2020.10.20 |
Data Visualization - Corona Case를 Matplotlib animation으로 그래프 그리기 (0) | 2020.10.10 |
Data Visualization - US Corona 분석하기 Part2 (0) | 2020.10.10 |