출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] '분류 전체보기' 카테고리의 글 목록 (21 Page) :: 하나둘셋넷
728x90

https://www.senbigdata.com/

 

서울교육 데이터 활용 아이디어 공모전

home keyboard_arrow_right 공고안내 description 공고안내 서울특별시교육청에서는 서울교육 데이터 활용 아이디어 발굴을 통해 공공데이터 활용을 촉진하고, 시민 누구나 교육정책에 참여하는 기회 제

www.senbigdata.com

 

공공데이터 사이트

 

공공데이터포털 데이터셋

https://www.data.go.kr/

 

서울열린데이터광장

https://data.seoul.go.kr/

 

나이스교육정보개방

https://open.neis.go.kr/portal/mainPage.do

 

나이스 교육정보 개방 포털

OPEN API 활용신청 제공되는 데이터를 활용하기 위해 인증키를 발급 받으세요. 교육정보개방 소개 <!-- 2017.10.25 kty 정부3.0제거 교육부 정부 3.0 - 교육정보 개방 포털은 어떤 시스템인지 알아보세요.

open.neis.go.kr

교육통계서비스

https://kess.kedi.re.kr/index

 

 

유치원알리미

https://e-childschoolinfo.moe.go.kr/

 

유치원 알리미

유아 · 교직원 현황, 유치원 회계 현황, 환경위생 및 안전관리 사항 등 유치원의 주요 정보

e-childschoolinfo.moe.go.kr

학교알리미

https://www.schoolinfo.go.kr/Main.do

728x90
728x90

기본 준비

import numpy as np
import pandas as pd
import os

print(os.getcwd())
print(os.listdir(os.getcwd()))
print(os.listdir('./csv'))

 

 

csv 파일들은 편의를 위해 csv 폴더에 따로 모아두기

 

 

자료

 

https://www.data.go.kr/index.do

 

https://www.data.go.kr/data/15080794/fileData.do

 

 

전체출력

import csv
f = open('./csv/school in seoul.csv')
data = csv.reader(f)

for row in data:
    print(row)

 

카테고리 확인

import csv
f = open('./csv/school in seoul.csv')
data = csv.reader(f)

for row in data:
    a=0
    print(f"* 첫째 행 구성요소 : {row}")
    print(f"* 행 길이 : {len(row)}")
    for i in row:
        print(f"{a}번째 값 : {i}")
        a+=1
    break

 

 

Pandas를 활용하여 간단하게

import csv
import pandas as pd

f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
df

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)

cp949 : 한글 표현하기 위함

index_col = 0 : 불필요한 인덱스 제거 역할


index_col = 0 입력

 

 

index_col  생략

 

원하는 정보(초, 중, 고 중에서 선택)만 골라서 출력

 

df.index.str.contains() 함수를 통해 데이터 프레임의 인덱스 문자열에 원하는 문자열이 포함된 행을 찾기

import csv
import pandas as pd

f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)

name = input('초등학교, 중학교, 고등학교 중에서 선택')

a = df.index.str.contains(name)

df2 = df[a]

df2

 

df.index.str.contains(name)에는 True, False 값이 배열 형태로 저장

 

"초등학교" 입력 결과

 

초, 중, 고 갯수 확인

import csv
import pandas as pd

f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)

df_cho = df[df.index.str.contains("초등학교")]
df_jung = df[df.index.str.contains("중학교")]
df_go = df[df.index.str.contains("고등학교")]

print(f"전체 학교 수 : {df.shape[0]}")
print(f"초등학교 수 : {df_cho.shape[0]}")
print(f"중학교 수 : {df_jung.shape[0]}")
print(f"고등학교 수 : {df_go.shape[0]}")

 

 

행 개수, 열 개수 확인

import csv
import pandas as pd

f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
df

print(f"행 개수 : {df.shape[0]} 열 개수 : {df.shape[1]}")

 

학교 종류 확인(리스트 타입)

import csv
import pandas as pd

f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)

index_info = list(set(df.index.to_list()))
print(index_info)

 

학교 종류별 갯수 

import csv
import pandas as pd

f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)

index_info = list(set(df.index.to_list()))

print(f" index_info {index_info}\n\n")

a=[]

for i in index_info:
    # 정확한 일치 개수를 세는 방식으로 변경
    count = (df.index==i).sum()
    print(f"{i}: {count}")
    a.append(count)

print('\n\n',a,'\n\n')

print(sum(a),'\n\n')

 

 

(df.index==i).sum() 코드 이해

 

시각화

import matplotlib.pyplot as plt

print(index_info)

print(a)

plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False

plt.bar(index_info,a)
plt.xticks(rotation=90)
plt.tick_params(axis='x', direction='in', length=3, pad=6, labelsize=8, labelcolor='black')
plt.show()

 

 

 

한글 깨짐 방지 코드

plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False

 

한 번에 끝내기

import numpy as np
import pandas as pd
import os
import csv
import matplotlib.pyplot as plt


f = open('./csv/school in seoul.csv')
data = csv.reader(f)

df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)

kind = list(set(df.index.to_list()))
print(f"학교 종류 확인\n {kind}\n")


numbers =[]

for i in kind:
    count = (df.index==i).sum()
    print(f"{i}: {count}")
    numbers.append(count)
#     print(df)
    

print(f"\n갯수 : {numbers}")
print("총 합계 :",sum(numbers),"\n")

plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False

plt.bar(kind,numbers)
plt.xticks(rotation=90)
plt.tick_params(axis='x', direction='in', length=3, pad=6, labelsize=8, labelcolor='black')
plt.show()

 

728x90
728x90

인구 구조 시각화_행정안전부 인구 데이터

라이브러리 import & 현재 파일 경로 확인은 항상 기본적으로 하기!!

import numpy as np
import pandas as pd
import os

print(os.getcwd())
print(os.listdir(os.getcwd()))

 

csv 파일은 'age.csv' 이름으로 저장, 파일 내용 확인

import csv
f = open('age.csv')
data = csv.reader(f)

for row in data:
    print(row)

 

특정 데이터만 확인

import csv
f = open('age.csv')
data = csv.reader(f)
for row in data:
    if '신도림' in row[0]:
        print(row)

 

728x90

+ Recent posts