‣ 출처 : data.go.kr
전국평생학습강좌표준데이터
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
pd_data = pd.read_csv('전국평생학습강좌표준데이터.csv',encoding='cp949',header=None)
np_data = pd_data.to_numpy()
print(np_data[:3])
for i,e in enumerate(np_data[0,:]) :
print(i, e)
# 결과
# 0 강좌명
# 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 제공기관명
.
.
교육방법구분의 index는 8 이다.
np_data[ : ,8]
# Out
# array(['교육방법구분', '혼합', '혼합', ..., '오프라인', '오프라인', '오프라인'], dtype=object)t)
‖ set 집합 사용
sub_data = np_data[1:,8]
print(sub_data)
# Out
# ['혼합' '혼합' '혼합' ... '오프라인' '오프라인' '오프라인']
set1 = set(sub_data)
print(set1)
# {'오프라인+온라인', '혼합', '오프라인+모바일+우편통신', '오프라인', '오프라인+방문교육', '온라인', '온라인+모바일', '방문교육', '온라인+오프라인'}
for i in set1 :
filter1 = sub_data == i
print(i,len(sub_data[filter1]))
# Out
# 온라인+모바일 2
# 온라인 4450
# 오프라인 20491
# 오프라인+방문교육 43
# 혼합 1044
# 오프라인+모바일+우편통신 1
# 방문교육 339
# 오프라인+온라인 96
# 온라인+오프라인 69
‖ np.uniqe 사용
: python numpy 라이브러리 내에서 배열 내의 distinct 원소들만 모은 결과를 반환
np.unique(sub_data, return_counts=True)
# (array(['방문교육', '오프라인', '오프라인+모바일+우편통신', '오프라인+방문교육', '오프라인+온라인', '온라인',
# '온라인+모바일', '온라인+오프라인', '혼합'], dtype=object),
# array([ 339, 20491, 1, 43, 96, 4450, 2, 69, 1044], dtype=int64))
a 변수에 교육방법의 고유한 값들을, b 변수에 고유한 값들의 count를 넣어준 후
zip을 이용하여 dictionary 형태로 묶어준다.
a = np.unique(sub_data, return_counts=True)[0]
b = np.unique(sub_data, return_counts=True)[1]
dict(zip(a,b))
# Out
# {'방문교육': 345,
# '오프라인': 21616,
# '오프라인+모바일+우편통신': 1,
# '오프라인+방문교육': 43,
# '오프라인+온라인': 97,
# '온라인': 3852,
# '온라인+모바일': 2,
# '온라인+오프라인': 64,
# '혼합': 1090}
.
.
직업능력개발훈련비지원강좌여부의 index는 21 이다.
sub_data = pd_data[ : ,21]
print(sub_data)
# ['직업능력개발훈련비지원강좌여부' 'N' 'N' ... 'N' 'N' 'N']
‖ set 집합 사용
sub_data = np_data[1:,21]
print(sub_data)
# ['N' 'N' 'N' ... 'N' 'N' 'N']
set2 = set(sub_data)
print(set2)
# {' ', 'Y', 'N'}
for i in set2 :
filter2 = sub_data == i
print(i, len(sub_data[filter2]))
# Out
# 3981
# Y 155
# N 22974
‖ np.unique 사용
val, cnt = np.unique(np_data[1:,21],return_counts=True)
print(val, cnt)
# [' ' 'N' 'Y'] [ 3981 22974 155]
.
.
홈페이지 주소의 index는 20 이다.
sub_data = np_data[ :,20]
# print(sub_data)
sub_data = sub_data.astype('str')
‖ astype( ) : type 변경
데이터의 유형을 바꾸고 싶을때, astype(원하는 유형) 을 넣어주면 된다.
filter = sub_data == ' '
print(len(sub_data[filter])) # 0
홈페이지 주소가 없는 것은 0 개다.