K-디지털트레이닝(빅데이터) 29일차

유현민·2021년 9월 6일
0

오늘은 새로운 강사님으로 바뀌고 첫 시간이었다. 게임산업쪽에서 일하시다 오셨다고 하셔서 물어보고 싶은것이 많았지만 참았다.
판다스에 관해서 어디까지 알고있는지 테스트도 하셨고 현업에서 많이쓰는 기법들에 관해서 하나씩 알려주셨는데 너무 유익했다. 이 강사님과 함께 4주동안했으면 정말 많이 늘었을텐데 조금 아쉽다.

  1. 성적표 파일을 판다스로 활용하여 오픈
import pandas as pd
import numpy as np
from numpy import random
df = pd.read_csv('data/성적표.csv',encoding='cp949')
# EUC-KR, CP949, 인코딩을 지정해주면 한글도 잘 나온다.

df.head()
  1. 이론과 실기점수를 랜덤으로 입력하기. 각 점수는 60~100점 사이
#결측값 랜덤으로 처리하기
df['이론'] = random.randint(60,101, size=len(df))
df['실기'] = random.randint(60,101, size=len(df))

df

df.head(3)
  1. 남/여 값을 이용하여 남=1, 여=2 로 변환해서 성별 코드 컬럼을 새로 생성하여 남/여 와 학년 사이에 위치하도록 수정
# df['성별'] = [1 if i =='남자' else 2 for i in df['남/여']]
# df1 = df.iloc[:,[0,1,2,3,7,5,6]]
df['성별'] =df['남/여'].apply(lambda x : 1 if x == '남자' else 2)
df = df[['순번','이름','학과','남/여','성별','학년','이론','실기']]

df.head(3)
  1. 학과의 고유값을 목록으로 추출
df['학과'].unique()

def uniqu(s):
    a = []
    for i in s:
        if i not in a:
            a.append(i)
    a.sort()
    return a
#데이터 전달할때는 정렬까지 해서 줘라

uniqu(df['학과'])

  1. 서울시 인구현황_구.txt 파일 불러오기
import pandas as pd
#파일이름은 영어로 하는게 좋음
#1행을 컬럼으로 하겠다
df = pd.read_csv('data/서울시 인구현황_구.txt',sep='\t',header=1) # EUC-KR, CP949

df.head()

df.drop(0, inplace=True) #맨윗줄 삭제

df.head()
  1. 세대 컬럼을 삭제
# df1 = df.iloc[:, [0,1,3,4,5,6,7,8,9,10,11,-1]] ,마지막
df1 = df.drop(['세대'], axis=1)

df1.head(3)
df1 = df.drop(['인구밀도','인구밀도.1','세대당인구','65세이상고령자'],axis=1)
df1.head(3)
  1. 년도, 자치구, 총인구, 총인구(남) , 총인구(여) , 내국인, 내국인(남), 내국인(여) , 외국인, 외국인(남), 외국인(여), 65세이상 으로 컬럼명을 변경하세요.
df1.columns
# ['년도','자치구','총인구','총인구(남)','총인구(여)','내국인','내국인(남)','내국인(여)','외국인','외국인(남)','외국인(여)','65세이상']

# df1 = df1.rename(columns={'합계':'총인구', '한국인' : '내국인'})
col = ['년도','자치구','총인구','총인구(남)','총인구(여)','내국인','내국인(남)','내국인(여)','외국인','외국인(남)','외국인(여)','65세이상']

for i in range(len(col)):
    df1.rename(columns={df1.columns[i] : col[i]}, inplace=True)

df1.info()
  1. 년도별 총인구(남)/총인구(여)값을 그래프로 작성
#object = 문자열
# pd.astype({'컬럼명':dtype})
# df2 = df1.loc[:,'년도':'총인구(여)']
df2 = df1.iloc[:, 0:5]


df2 = df2.replace(',','')
df2

df2 = df2.astype({'년도':'int64'})


df2.info()

df2['총인구'] = df2['총인구'].str.replace(',','')
df2['총인구(남)'] = df2['총인구(남)'].str.replace(',','')
df2['총인구(여)'] = df2['총인구(여)'].str.replace(',','')
df2

df2 = df2.astype({'년도':int,'총인구':int,'총인구(남)':int,'총인구(여)':int})

df2.dtypes
  1. 그리기 임포트
import matplotlib.pyplot as plt
%matplotlib inline

import matplotlib.pyplot as plt

gu=input('조회할 구 이름을 입력(예:종로구):')

df3= df2[ df2['자치구']==gu]
plt.plot(df3['년도'],df3['총인구'])
plt.xlabel('year')
plt.ylabel('populatino')
plt.show()

plt.plot(df3['년도'],df3['총인구(남)'])
plt.plot(df3['년도'],df3['총인구(여)'])
plt.show()

1. csv파일 불러오기 ``` import pandas as pd import matplotlib.pyplot as plt from matplotlib import font_manager, rc

import matplotlib
import platform
if platform.system() == 'Windows':
matplotlib.rc('font', family='Malgun Gothic')

%matplotlib inline

df = pd.read_csv('data/서울시공공와이파이.csv',encoding='cp949')

df

df.info()

2. 각 구별 공공 데이터 설치 갯수를 파악

wifidata = df.groupby(df['자치구']).count().관리번호

wifidata

wifidict = {}

for temp in df['자치구']:
if temp in wifidict :
wifidict[temp] += 1
else:
wifidict[temp] =1
wifidict

wifidata = df.value_counts(df['자치구'])
wdf = pd.DataFrame(wifidata)
wdf = wdf.rename(columns={0:'설치현황'})

wdf.plot(kind='bar', label = '구',legend=True, title='서울시 구별 와이파이 통계')

import seaborn as sns

plt.figure(figsize=(17,8))
bp = sns.barplot(x=wdf.index, y=0,data=wdf)
bp.set_title('서울시 공공wifi 현황',fontsize=30)
bp.set_xlabel('지역명',fontsize=20)
bp.set_ylabel('설치수(개)',fontsize=20)

for temp in bp.patches:
bp.annotate('%d'%temp.get_height(), (temp.get_x()+temp.get_width()/2, temp.get_height()), ha='center',va='bottom')

plt.grid(axis='y',alpha=0.5)
plt.show()

wdf.index

for temp in bp.patches:
print(temp)#막대 하나하나당 데이터를 담고있다.

df.describe()




profile
smilegate megaport infra

0개의 댓글