# groupby(’컬럼명’)은 데이터를 특정 기준으로 그룹화하여 처리 가능 # count() 는 데이터 개수 집계에 활용 # agg(”변수”) 는 데이터를 리스트 순서에 따라 재배열 해주는 함수
2) 데이터 분석 및 시각화
① matplotlib, numpy 사용 선언하기 import matplotlib.pyplot as plt import numpy as np
② 막대 그래프 그리기
그래프 사이즈
plt.figure(figsize=(10,5))
그래프 x축 y축
plt.bar(weekdata.index, weekdata)
그래프 명
plt.title('요일별 수강 완료 수강생 수')
그래프 x축 레이블
plt.xlabel('요일')
그래프 y축 레이블
plt.ylabel('수강생(명)')
x축 레이블을 90도로 변환
plt.xticks(rotation=90)
그래프 출력
plt.show()
③ 선 그래프 그리기 (막대그래프와 유사함)
그래프 사이즈
plt.figure(figsize=(10,5))
그래프 x축 y축
plt.plot(hourdata.index, hourdata)
그래프 명
plt.title('시간별 수강 완료 사용자 수')
그래프 x축 레이블
plt.xlabel('시간')
그래프 y축 레이블
plt.ylabel('수강생(명)')
x축 눈금 표시
plt.xticks(np.arange(24))
그래프 출력
plt.show()
# np.arange() 는 괄호에 명시된 가격으로 배열을 생성해주는 함수
④ 히트맵(Heatmap) - X축과 Y축에 변수를 지정하고, 균일할 블록으로 나누어 각 칸에 수치형 변수를 채우는 방식. 데이터 값이 높거나 양이 많은 경우 진한색을, 낮거나 적은 경우 연한색을 사용하여 시각적 패턴을 생성
> 피벗테이블 만들기 sparta_data_pivot_table = pd.pivot_table(sparta_data, values='user_id', index=['access_date_time_weekday'], columns=['access_date_time_hour'], aggfunc="count").agg(weeks) sparta_data_pivot_table #values : 값 #index :열에 들어 가는 부분 #columns : 행에 들어가는 부분 #aggfunc : 데이터 값에 사용할 함수
① 판다스 선언 및 데이터 불러오기 import pandas as pd sparta_data = pd.read_table('/content/students_area_detail.csv',sep = ',')
② 지역 분류하기 category_range = set(sparta_data['area']) print(category_range, len(category_range))
#set() 은 데이터 중복 없이 각 데이터의 unique한 값을 출력해오는 함수 #len() 은 리스트에 들어있는 원소 개수, 즉 리스트의 크기를 숫자로 알려줌
③ 지역 정보만 추출 (지역명, 위도, 경도) area_info=sparta_data[['area','latitude','longitude']] area_info=area_info.drop_duplicates(['area']) area_info = area_info.sort_values(by=["area"], ascending=[True]) area_info= area_info.reset_index()
#새로운 테이블을 만들 때는 기존 테이블에서 필요한 열 이름을 대괄호에 넣어서 변수로 지정 #drop_duplicates()는 원하는 컬럼의 중복 데이터를 제거하는 함수 #.sort_values() 는 지정 값을 기준으로 레이블을 정렬 가능. 정렬 기준은 by=[”정렬 기준이 될 레이블”] 로 표기 #reset_index() 로 인덱스를 순서대로 재정렬 할 수 있음
④ 각 지역 수강생 수(지역명, 유저 아이디) number_of_students = pd.DataFrame(sparta_data.groupby('area')['user_id'].count())
⑤ 테이블 합치기 result = pd.merge(area_info, number_of_students, on="area") result
#merge() 로 두테이블을 병합할 수 있음
2) 데이터 분석 및 시각화
① matplotlib, numpy 사용 선언하기 import matplotlib.pyplot as plt import numpy as np plt.rc('font', family='NanumBarunGothic')
② 선 그래프 그리기 plt.figure(figsize=(10,5)) plt.plot(result['area'], result['user_id']) plt.title('지역별 사용자 수') plt.xlabel('지역') plt.ylabel('사용자(명)') plt.xticks(np.arange(13)) plt.show()
③ 지역별 값을 지도에 표시하기 - 라이브러리 불러오기 import folium from folium.plugins import MarkerCluster
#폴리움(Folium)은 분석한 데이터의 결과를 지도에 그리기 위한 라이브러리 #마커클러스터(MarkerCluster)는 가까운 거리의 marker를 군집시켜, 해당 건수를 표현해줌
- 대한민국 위도와 경도 설정하기 m = folium.Map(location=[37.5536067,126.9674308], zoom_start=7)
- 반복문 활용해서 지도에 지역별 위도와 경도 넣기 for n in result.index: radius = result.loc[n,'user_id'] folium.CircleMarker([result['latitude'][n],result['longitude'][n]], radius = radius/50, fill=True).add_to(m)
#loc[n,"열 이름"] 은 n번째의 열을 조회하는 함수 #.add_to(m)은 지정해둔 지도를 가져오는 함수
** 그래프에서 한글이 깨진다면 ?
1) 새 코드에서 폰트 설치하기
!sudo apt-get install -y fonts-nanum !sudo fc-cache -fv !rm ~/.cache/matplotlib -rf 2) Colab 런타임 재시작 3) figure 하단에 하기 코드 입력 plt.rc('font', family='NanumBarunGothic')