Leta Learns

221209 | 본문

HUFS/빅데이터

221209 |

leta 2022. 12. 10. 01:30

 

#평균 연봉(초봉) scatter plot

이런 식으로 데이터 전처리를 해주었다.

이 프로젝트 하면서 갑자기 엑셀 실력이 늘고 있는 것 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

코드 만드는데 엄청 오래 걸렸는데 다 하고 보니 엄청 간단하군..

아래 링크에서 데이터 전처리 해야겠다는 힌트를 얻고, 그걸 그대로 scatter plot으로 나타내주었다.

https://workingwithpython.com/matplotlib_scatterplot/

 

파이썬에서 Matplotlib으로 산점도(scatter plot) 그리기

산점도는 두 연속형변수의 상관관계를 나타낼 수 있는 유용한 시각화 도구입니다. 이번 포스팅에서는 시각화 라이브러리 Matplotlib을 사용하여 파이썬에서 산점도(scatter plot)를 어떻게 그릴수 있

workingwithpython.com

 

#연봉 scatter plot 코드

import io
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib

salary = pd.read_csv(io.BytesIO(file_uploaded['salary.csv']), encoding='cp949')

plt.scatter(salary['field'], salary['salary'])
plt.show()

근데 이 코드를 돌리면

이런 그래프가 나온다 ㅋㅋㅋㅋ

y(연봉)값이 엄청 많아서 다 겹쳐서 나온 것이다.

scatter 말고 다른 걸로 해봐야 할 것 같다.

 

 

하.. 근데 어떻게 하는지 모르겠다...

y축 값들이 정렬이 안 되어있는데 이걸 어떻게 수정하는지 모르겠다.

거의 하루종일 찾아봤는데 답이 없어서 다른 것부터 했다.

 

 

 

 

 

#scatter 성공함

성공했다.... 내가 성공한 건 아니고 선배가 도와줬다.... 좋은 사람...... ㅠ

salary.csv에서 연봉값을 가져올 때 int로 가져오는 줄 알았는데 string으로 가져와져서 그런 거였다 ㅜㅜ

#천 단위에 붙는 ',' 제거 ex)1,000
salary.replace(',','', regex=True, inplace=True)

#str -> int 변환
salary = salary.astype({'salary':'int'})

판다스는 참.. 신기한 게 많구나

 

 

암튼 최종 코드는 이렇게 간단하다!!!!!

#연봉 box plot
import io
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib

salary = pd.read_csv(io.BytesIO(file_uploaded['salary.csv']), encoding='cp949')

df = pd.DataFrame(salary)
salary.replace(',','', regex=True, inplace=True)
salary = salary.astype({'salary':'int'})

plt.scatter(salary['field'], salary['salary'])
plt.show()

이렇게 연봉 분포도 잘 볼 수 있다...

그래프 보니까 마음이 편하다... 이쁘다...

 

 

 


 

 

#소재지 위, 경도로 변환하기

소재지도 어떻게 할 지 너무 막막했었는데 팀원이 도움을 주었다... 너무 고맙다.

 

주소를 입력하면 위, 경도로 변환해주는 함수를 발견했다. 

####### 도로명주소 위도 경도 값으로 바꿔주기 ########
geo_local = Nominatim(user_agent='South Korea')

# 위도, 경도 반환하는 함수
def geocoding(address):
    try:
        geo = geo_local.geocode(address)
        x_y = [geo.latitude, geo.longitude]
        return x_y

    except:
        return [0,0]

이 코드인데 더 자세한 내용은 아래의 링크에서 확인할 수 있다!

 

[python] 주소값만 있을 때 위경도 찾는 방법 (tistory.com)

 

[python] 주소값만 있을 때 위경도 찾는 방법

안녕하세요! 데이터 분석을 하다보면 특히 folium으로 위치를 시각화 할 때는 숫자로 된 위경도 값이 필요한데 데이터 파일 자체에 주소만 나와있고 위경도 값이 누락되어 있는 경우가 발생합니

wonhwa.tistory.com

 

 

geocoding 함수를 사용해서 주소를 위, 경도로 변환한 후 아래와 같이 데이터 프레임을 만들어주었다.

 

 

이제 이걸 지도에 표시해야 한다.

이것도 팀원이 링크를 주었다...ㅎ 사랑

 

[Python] 시각화 사용법 - folium 을 통한 지도 시각화 및 마커(marker) 찍기 — 나무늘보의 개발 블로그 (tistory.com)

 

[Python] 시각화 사용법 - folium 을 통한 지도 시각화 및 마커(marker) 찍기

folium 란? python에서 제공해주는 라이브러리로서 지도를 다루는 대표적인 라이브러리다. 설치법 !pip install folium 사용법 import folium as g 이것을 사용하기 위해서는 위도 경도를 알아야 한다. 네이버

www.sloth-lifes.com

 

링크에서는 seoul_map이라고 하는데 나는 한국 전체 지도를 쓸거라서 korea_map이라고 했다.

참고로 이 코드를 돌리면 주소를 위경도로 변환하는 과정이 7-8분 정도 소요가 된다.

그래서 오타 하나 나면 7-8분을 또 쌩으로 기다려야 했다....

 

#처음 맵 위치 잡기
korea_map = g.Map(location=[37.55, 126.98], tiles = 'Stamen Terrain', zoom_start = 12)
# korea_map

#지도에 위치 나타내기
for i in range(len(address_df)):
  marker01 = g.Marker([address_df.loc[i]['latitude'], address_df.loc[i]['longitude']],
                      icon = g.Icon(color='blue'))
  marker01.add_to(korea_map)
korea_map

 

이렇게 하면 

이런 식으로 지도에 마커를 찍을 수 있다!

 

 

 

사실 소재지는 좀 다른 식으로 해보려고 했었는데 어떻게 하는지 정말 감이 안 잡혀서 그냥 이런 식으로 지도에 찍었다.

하다가 모르겠어서 소재지는 뺄까 생각도 했는데 팀원이 열심히 크롤링해준거라 좀 마음에 걸렸었는데,, 이렇게라도 사용해서 다행이다.

'HUFS > 빅데이터' 카테고리의 다른 글

221210 |  (0) 2022.12.10
Comments