Internet_Use_Data

안선경·2023년 4월 1일
0

My_Toy_Project

목록 보기
4/10

  • 이번에는 인구수, 인터넷 사용량, 지역 등 3개의 데이터를 통해 인터넷 사용 정도에 대한 데이터를 가공 및 전처리를 해보자

  • 먼저 1인당 소득, 1인당 인터넷 사용량, 요금에 대한 데이터를 불러온다.

  • 데이터의 정보를 보니 국가는 string, 나머지는 float형태로 저장되어 있다.

  • Null값은 없으나 데이터의 컬럼이 동일하지 않기 때문에 결측값, 빈값 등 다양한 이상 데이터가 있다는 것을 확인할 수 있다.

  • 가장 먼저 Nan값이 있는 행을 제거했다.

  • 여담이지만 pandas를 쓰면 쓸수록 데이터 처리 기능이 정말 좋은 것 같다.

  • 하나의 국가를 여러 명칭으로 적는데 우리나라의 경우 Korea, south korea, Korea Repulic of 여러 명칭으로 불린다.

  • 데이터 분석 시 그룹별 집계를 수행할 때 계산 에러가 없도록 각 행의 나라이름을 통일할 수 있도록 Dict형태의 자료로 국가의 이름을 바꿨다. 또한, pycountry모듈을 사용하기 위해 통일시켰다.

  • loc함수를 사용해서 딕셔너리의 키값을 인덱스로 넣고, value를 값으로 입력했다.

  • 이제 pycountry모듈을 사용해서 국가의 약자를 입력했다.

  • 해당 모듈은 국가의 이름을 입력하면 해당하는 국가의 alpha_2, alpha_3에 해당하는 약어를 출력한다.

  • 하지만 제대로 검색되지 않는 국가도 있기 때문에 try, except 기능을 사용해서 에러가 발생할 경우 pycountry의 fuzzy기능으로 검색했다.

  • 이제 해당 데이터프레임에 code라는 컬럼을 국가의 약어로 추가했다.

  • 이번에는 국가의 인구수 데이터를 불러왔다.

  • 해당 데이터를 웹상에서 존재하는 테이블 데이터를 read_html로 불러왔는데, 2번 째 해당하는 테이블이 필요한 데이터라 불러온 리스트 형태의 테이블 데이터에서 2번째만 변수에 저장했다.

  • 데이터의 정보를 출력하고 확인 결과, 필요한 데이터인 국가, 인구수만 변수에 다시 저장하고, 가독성을 높이기 위해 컬럼의 name을 변경했다.

  • 이번에도 국가의 이름을 업데이트하기 위해서 Dict형태로 된 데이터를 for을 통해 key값 조건에 맞을 경우 value값으로 변경했다.

  • 이제 가공한 두 개의 데이터를 국가 이름을 기준으로 inner조인하고

  • 국가의 코드네임을 기준으로 내림차순으로 정렬했다.

  • 마지막으로 기본 인덱스를 0부터 출력하도록 reset_index했다.

  • 이번에는 지역 데이터를 불러왔다.

  • 필요없는 컬럼과 변경할 컬럼 이름을 리스트와 Dict형태로 먼저 변수로 저장했다.

  • 이제 지역 데이터에서 필요없는 자료는 drop하고, 컬럼의 이름을 변경했다

  • 이제 세 개의 데이터를 합치기 전에 먼저 다 합친 데이터에 사용할 변경할 이름, 버릴 커럼, 컬럼 이름 정리 등 변수를 미리 만들었다.

  • 이제 인터넷 사용량과 인구수를 합친 데이터를 지역 데이터와 같은 방법으로 merge해서 합치고

  • code를 기준으로 정렬한 후 새로운 컬럼 이름으로 변경했다.

  • 이제 지역별로 인구수를 가중치로 둬서 인터넷 사용량에 대한 가중평균을 구해보자

  • lambda함수와 numpy함수를 사용해서 인터넷 사용량을 평균값으로, 인구수를 가중치로 둬서 가중평균을 구하는 함수를 만들었다.

  • 이후 해당 함수를 데이터프레임에서 지역 및 서브 지역을 그룹별로 나눠서 apply함수를 사용해서 적용시켰다.

  • 마지막으로 그룹by를 사용하느라 바뀐 컬럼 이름을 바꿔주고 결과를 확인했다.

  • 부가적으로 1인당 소득도 같이 구했는데, 가장 큰 목적은 인터넷 사용량 😁

  • 아시아 사용량의 경우 중국과 인도의 값이 다른 값들과 비교해서 너무 높기 때문에 두 개의 데이터에 대한 인덱스를 확인해서 삭제 후

  • 다시 아까와 같은 방법으로 데이터 프레임을 만든다.

  • 이제 중국과 인도에 속한 서브 지역의 데이터만 변수에 저장해서

  • 결과를 확인해봤다.

  • 데이터 분석가로서 머신러닝, 딥러닝, EDA 다 중요하지만, 가장 기본적으로 데이터의 가공 및 전처리 역량이 중요하지 않나 생각이 든다. 내가 주장하려는 내용 혹은 데이터 속에서 인사이트를 얻으려고 할 때 가장 먼저 해야하는 것은 데이터의 전처리이지 않나 싶다.

profile
상황을 바꿀 수 없다면, 나를 바꾸자

0개의 댓글