오늘은 새로운 강사님으로 바뀌고 첫 시간이었다. 게임산업쪽에서 일하시다 오셨다고 하셔서 물어보고 싶은것이 많았지만 참았다.
판다스에 관해서 어디까지 알고있는지 테스트도 하셨고 현업에서 많이쓰는 기법들에 관해서 하나씩 알려주셨는데 너무 유익했다. 이 강사님과 함께 4주동안했으면 정말 많이 늘었을텐데 조금 아쉽다.
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()
#결측값 랜덤으로 처리하기
df['이론'] = random.randint(60,101, size=len(df))
df['실기'] = random.randint(60,101, size=len(df))
df
df.head(3)
# 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)
df['학과'].unique()
def uniqu(s):
a = []
for i in s:
if i not in a:
a.append(i)
a.sort()
return a
#데이터 전달할때는 정렬까지 해서 줘라
uniqu(df['학과'])
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()
# 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)
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()
#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
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()
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()