Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

나의 기록

[Python] 04 제품 수요가 많은 지역 찾기, 라인 그래프 그리기,drop_duplicates(),reset_index(), sort_values(), merge() 본문

개발일지/Python

[Python] 04 제품 수요가 많은 지역 찾기, 라인 그래프 그리기,drop_duplicates(),reset_index(), sort_values(), merge()

리베린 2024. 1. 18. 11:42

1. 파일 불러오기 

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()