나의 기록
[Python] 04 제품 수요가 많은 지역 찾기, 라인 그래프 그리기,drop_duplicates(),reset_index(), sort_values(), merge() 본문
[Python] 04 제품 수요가 많은 지역 찾기, 라인 그래프 그리기,drop_duplicates(),reset_index(), sort_values(), merge()
리베린 2024. 1. 18. 11:421. 파일 불러오기
import pandas as pd
sparta_data = pd.read_table ('/content/students_area_detail (1).csv',sep=',')
* 우리에게 필요한 테이블 => '어떤' 수강생이 '어디에서' 주로 접속하는지 알아야 하니,
'접속지역 (area)', '해당지역 위도(latitude)', '해당지역 경도 (longitude)', '유저아이디(user_id)' 필요
2. 지역 분류 하기
category_range = set(sparta_data['area'])
print(category_range, len(category_range))
* SET() : 데이터의 중복값 제거
* LEN() : 리스트에 들어가 있는 원소 개수, 즉 리스트의 크기를 알려줌.
3. 필요한 데이터만 볼 수 있게 가공하기 => 우리는 “각 지역의 정보” 와, “그 지역의 수강생 수” 이 두 가지 정보만 필요
(1) “접속지역, 해당 지역 위도, 해당 지역 경도” 만으로 이루어진 테이블 만들기
#새로운 테이블을 만들고자 할 땐 기존의 테이블에서 필요한 "열의 이름"을 대괄호에 넣어 변수에 지정해 주면 됩니다
area_info=sparta_data[['area','latitude','longitude']]
#잘 만들어졌는지 초기 5개의 데이터 확인하기
area_info.head()
(2) 수많은 중복 정보 삭제 하기
#drop_duplicates()을 이용하면, area(지역) 컬럼의 중복 데이터를 처리 할 수 있습니다. :)
area_info=area_info.drop_duplicates(['area'])
area_info
*drop_duplicates() : 중복된 행 제거
(3) 인덱스 재정렬
#.reset_index()를 이용해, 인덱스를 재정렬 할 수 있어요!
area_info= area_info.reset_index()
area_info
* reset_index() : 인덱스 재정렬
(4) 가공된 테이블인 “지역의 이름”을 기준으로 데이터를 정렬하기!
area_info = area_info.sort_values(by=["area"], ascending=[True])
area_info
* sort_values(): 지정 값을 기준으로 레이블을 정렬할 수 있다.
* by = ["정렬 기준이 될 레이블"]
* ascending = [True]면 오름차순, False면 내림차순 정렬
(5) 각 지역별 총 학생수 구하기
number_of_students = pd.DataFrame(sparta_data.groupby('area')['user_id'].count())
number_of_students
* DataFrame(): 2차원의 표 형식=> 행(row) x 열(column)으로 데이터를 다룬다는 특징
* DataFrame 선언하고, area를 groupby로 묶어준 다음에 user_id 카운트 해주기
(6) 지역별 총 학생수를 기존 테이블과 합치기
#merge()를 이용하여, 두 테이블을 병합 할수 있어요 :)!
result = pd.merge(area_info, number_of_students, on="area")
result
*merge() : 테이블 병합
4. 그래프로 시각화 하기
import matplotlib.pyplot as plt
import numpy as np
plt.rc('font', family='NanumBarunGothic') #한글 깨짐을 방지시켜줘요!
#그래프 사이즈 변경
plt.figure(figsize=(10,5))
#그래프 x축 y축
plt.plot(result['area'], result['user_id'])
#그래프 명
plt.title('지역별 사용자 수')
#그래프 x축 레이블
plt.xlabel('지역')
#그래프 y축 레이블
plt.ylabel('사용자(명)')
#x축 눈금 수
plt.xticks(np.arange(13))
#그래프 출력
plt.show()