2024/04 17

06-03-02. 카르토그램으로 인구현황 시각화하기(2)

1. 이제 앞서 만든 데이터(pop, 인구수와 인구소멸지수 데이터와 draw_korea, 대한민국 지역을 엑셀로 그린 데이터)를 검증한 후 merge할 것이다.  2. 그 다음에는 반대로 차집합을 확인하여 여집합을 삭제해준다.  3. 이제 pop와 draw_korea를 merge해준다. 4. 이제 색상을 표시하기 위한 함수를 만들어야 한다. 코드는 다음과 같다.#### 그림을 그리기 위한 데이터를 계산하는 함수- 색상을 만들 때, 최소값은 흰색- blockedMap = 인구현황(pop)- targetData = 그리고 싶은 컬럼def get_data_info(targetData, blockedMap): # blockedMap은 pop데이터, targetData는 색이 입혀지는 컬럼 이름 whitel..

06-03-01. 카르토그램으로 인구현황 시각화하기(01)

제로베이스 데이터스쿨 강사님은 카르토그램 지도를 어떻게 그리느냐에 대해 많은 고민을 하셨다고 한다. 결과적으로 액셀로 먼저 서울시 그림을 그린 다음 stack기능으로 데이터의 위치를 데이터프레임화하여 코드에 녹여낼 수 있다고 하셨다. 데이터 분석 초짜인 내가 그 모든 과정을 체화하기란 너무 어렵다는 생각이 들었다. 이번 프로젝트에서는 강의에서 설명해준 내용을 그대로 따라가본다. 1. 먼저 데이터스쿨 강사님께서 만드신 액셀파일을 불러왔다. draw_korea_raw = pd.read_excel('../data/07_draw_korea_raw.xlsx') 2. .stack()함수로 테이블을 해체한다. stack()함수는 데이터프레임의 열을 행 인덱스 레벨로 스택하여 표현하는 함수로, 피벗 테이블의 반대 개념..

06-02. 인구현황데이터에 지도 ID 만들기

1. 이제 '~시 ~구' 등의 형식으로 지역마다 고유한 ID를 붙여 줘야 한다. 먼저 '시도'컬럼의 고유한 값이 어떻게 되는지 확인해보자. pop['시도'].unique() 2. 이렇게 많은 데이터에 전부 ID를 부여하자니, 시간도 오래 걸리고, 실수할 가능성도 높을 것이다.(물론 초보자인 나에게는 일일이 하나씩 부여해주는 게 시간이 더 절약될 수도 있긴 하지만) 일반적으로 모든 지역은 '~시' '~구' 이런 식으로, 시 다음 행정구로 구분된다. 따라서 아이디는 아래와 같은 형식으로 만들면 좋을 것이다. - 서울 중구 - 서울 서초 - 통영 - 남양주 - 포항 북구 - 인천 남동 - 안양 만안 - 안양 동안 - 안산 단원 3. 대한민국의 구 목록은 위키피디아에 나와 있다. 한번 보자. https://ko..

06-01. 인구소멸위기지역 파악하기 프로젝트 개요, 데이터 수집 및 정리

이번에는 현대 대한민국에 있어 매우 심각한 문제가 된 '인구소멸위기지역'을 조사하는 프로젝트이다. 먼저 인구소멸위기지역을 파악하고, 인구소멸위기지역을 지도로 표현한 다음, 카르토그램으로 표현하여, 인구별로 영역을 표시하도록 할 것이다. 1. 먼저 folium으로 그리기 위해 시도별 경계선이 있는 json파일을 구해야 한다. 문제는 앞서 서울시 범죄율을 파악하기 위해 받았던 Lucy Park님의 자료에는, 고유한 아이디 역할을 하는 것이 없다는 것이다. 2. 따라서 이번에는 제로베이스 데이터스쿨에서 나눠준 자료를 기반으로 프로젝트를 진행한다. 강사분께서 친절히 id를 따로 작성하여 나눠 주셨다. 3. 1,2번에서 알 수 있듯이 Folium을 활용하기 위한 json파일에는 ID가 필요하다. 인구현황 데이터에..

05-02. Naver API에서 모은 원피스 데이터 정리하고 시각화하기

1. 이번에는 봄을 맞아 '원피스'이라는 키워드를 검색해보고 데이터화, 시각화할 것이다. 먼저 앞서 불러온 네이버 API를 이용해 '원피스' 키워드를 검색해보자. 쇼핑 결과를 볼 것이다. 2. 함수는 아래와 같은 방식으로 만들어질 것이다. '검색 url'을 만드는 함수 검색 결과를 저장하는 함수 DataFrame으로 저장하는 함수 앞서 만든 함수들을 실행하며 데이터를 수집하는 함수 최종적으로 엑셀로 저장하는 함수 실제 SW개발은 절차를 명시한 뒤, 함수의 입출력/인아웃을 명시하고 역할을 분담하여 진행하는 경우가 많다. 이번에는 가볍게 흉내만 내는 정도로 보면 될 것이다. 2-1. gen_search_url 먼저 검색해야 할 url을 만들어야 한다. 네이버 개발 가이드의 '요청 변수' 항목을 보면 검색 u..

05-01. Naver API 등록 및 간단한 사용

1. 네이버, 페이스북, 구글 등 거대 IT기업들부터 많은 S/W회사들이 자사 제품을 API의 형태로 제공한다. 특히 요즘에는 더더욱 웹크롤링에 대한 방어가 심해지고 있기 때문에, 해당 회사의 API를 사용하는 것이 오히려 더 바람직할 수 있다. 점검 API의 사용에 익숙해질 필요성 또한 있을 것이다. 2. 이번에는 네이버 API 사용 방법을 익힌다. 먼저 아래의 링크에 들어간다. https://developers.naver.com/main/ NAVER Developers 네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음 developers.naver..

04-01-02. 웹 유입량 데이터 분석

1. 이번에는 numpy를 이용해 트렌드를 분석해보자. 먼저 아래의 필요한 라이브러리들을 import해준다. ** 한글 세팅을 해주는 모듈(set_matplotlib_hangul)을 미리 만들어두었다. 아래 링크에 그 과정이 있다. https://bookdaniel.tistory.com/93 # Python 함수의 기초(docstring 만들기, **kwargs 사용, import하기) 1. 아래는 가장 기초적인 def(함수)의 정의이다. 이름(test_def)와 입력 인자(a, b)를 정해 주고, 출력(return)을 작성하는 모양이다. def test_def(a,b): return a+b print(test_def(2,3)) # 5 2. 함수 내의 어떤 변수를 bookdaniel.tistory.com..

04-01-01. prophet(구 fbprophet) 설치, 기초적인 시계열 테스트

시계열 데이터(Time Series Data)란 시간의 흐름에 대해 특정 패턴과 같은 정보를 가지고 있는 경우를 시계열 데이터라고 한다. 그리고 이러한 시계열 데이터 중 '주기성'을 가지고 있는 데이터를 다루는 경우는 'Seasonal Time Series'라고 한다. 시계열 데이터에서 트렌드를 찾고 나면, 그 트렌드 곡선을 빼고 주기적 특성을 찾게 된다. 일반적으로 머신러닝의 세계에서는 시계열 데이터를 다루지 않는다. 이번에는 단순히 맛만 보는 형태로 사용해본다. ** 과거 fbprophet이었던 라이브러리는 현재 prophet으로 바뀌었다! 설치하는 방식도 달라졌으니, 이번 프로젝트는 새로운 prophet 설치를 기준으로 서술한다. ** 먼저 시계열 데이터 분석에 대한 기초적인 정의를 적어둔다. 시간..

# Python 함수의 기초(docstring 만들기, **kwargs 사용, import하기)

1. 아래는 가장 기초적인 def(함수)의 정의이다. 이름(test_def)와 입력 인자(a, b)를 정해 주고, 출력(return)을 작성하는 모양이다. def test_def(a,b): return a+b print(test_def(2,3)) # 5 2. 함수 내의 어떤 변수를 함수 바깥에서도 선언해주고 싶다면, 변수를 global로 선언해줘야 한다. a = 1 def edit_a(i): global a a = i edit_a(2) print(a) # 2 3. 함수 내에서의 변수와 밖에서의 변수는 같은 이름이어도 같은 것이 아니다. a = 1 def edit_a2(i): a = i edit_a2(3) print(a) # 1 4. 아래의 함수는 이과생들이 배우는(나는 문과생이라 처음 본다) 사인 함수라..

데이터분석 2024.04.20

미니프로젝트 03-01-03. 주유소 가격 정리, 시각화

1. 이제 다운로드된 엑셀 파일들을 데이터화하자. glob이라는 모듈은 파일 목록을 읽어오고 정리해주는 기능을 갖고 있다. 이를 바탕으로 여러 엑셀 파일들을 한번에 불러올 수 있을 것이다. 2. glob모듈을 통해 불러온 파일명들을 리스트로 저장하여 반복문을 돌릴 수 있도록 하자. 3. 형식이 동일하고 연달아 붙이기만 하면 될 때는 concat 명령을 사용한다. * 각각의 데이터프레임들을 하나로 붙여놓은 이 데이터프레임은 인덱스가 초기화되어있지 않다. 4. 필요한 컬럼만 따와 새로운 데이터프레임을 만들자. 5. 평균적으로 주유가격이 비싼 구를 확인하기 위해 주소에서 구 정보를 가져오자. 6. 구 정보를 잘 받아왔는지 확인해보자. 7. 또한, 현재 object형식으로 되어 있는 '가격'컬럼을 숫자로 변경하..