import pandas as pd
CCTV_Seoul = pd.read_csv('파일 경로', encoding='utf-8')
CCTV_Seoul.head()
CCTV_Seoul.columns # column 전체를 list형태로 반환
CCTV_Seoul.columns[0] # column 0번째
CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0]:'구별'}, inplace=True)
pop_Seoul = pd.read_excel('파일 경로', header=2, usecols = 'B,D,G,J,N')
pop_Seoul.rename(
columns={
pop_Seoul.columns[0]:'구별',
pop_Seoul.columns[1]:'인구수',
pop_Seoul.columns[2]:'한국인',
pop_Seoul.columns[3]:'외국인',
pop_Seoul.columns[4]:'고령자'
},
inplace=True
)
import pandas as pd
import numpy as np
s = pd.Series([1,3,5,np.nan,6,8])
# 딕셔너리
pd.Series({"Key":"Value"})
dates = pd.date_range('20130101', periods=6) # 6일
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A','B','C','D'])
df.index
df.columns
df. values
df.info()
df.describe()
df.sort_values(by='B',ascending=False)
ascending = True : 오름차순
ascending = False : 내림차순
df[0:3] # 0부터 3까지
df['20130102':'20130104'] # 인텍스 이름으로 설정 가능(끝 포함)
# loc['행','열']
df.loc[:,['A','B']]
df.loc['20130102':'20130104',['A','B']]
df.iloc[3] # 인덱스 3에 해당하는 행의 데이터들
df.iloc[3:5, 0:2] # 행 3~4, 열 0~1 에 해당하는 데이터들
df.iloc[[1,2,4],[0,2]] # 행 1,2,4 열 0, 2 에 해당하는 데이터들
df.iloc[:,1:3] # 모든 행에 1~2열에 해당하는 데이터들
df[df['A'] > 0] # df에서 df의 A행중 0보다 큰 값이 포함된 행만 반환
df[df > 0] # 전체적으로 0보다 큰 값만 반환 0보다 작으면 Nan처리
df['E'].isin(['two','four']) # df의 E에 있으면 True, 없으면 False
df[df['E'].isin(['two','four'])] # True인 행 데이터를 반환
del df['E']
df.apply(np.cumsum) # np.cumsum은 누적합
CCTV_Seoul.sort_values(by='소계',ascending=True).head()
CCTV_Seoul.sort_values(by='소계',ascending=False).head()
CCTV_Seoul['최근 증가율'] = (CCTV_Seoul['2016년'] + CCTV_Seoul['2015년'] + CCTV_Seoul['2014년']) / CCTV_Seoul['2013년도 이전'] * 100
CCTV_Seoul.sort_values(by='최근 증가율', ascending=False).head()
pop_Seoul.head()
pop_Seoul.drop([0],axis=0,inplace=True)
pop_Seoul['구별'].unique()
pop_Seoul['외국인비율'] = pop_Seoul['외국인'] / pop_Seoul['인구수'] * 100
pop_Seoul['고령자비율'] = pop_Seoul['고령자'] / pop_Seoul['인구수'] * 100
pop_Seoul.sort_values(['인구수'],ascending=False).head()
pop_Seoul.sort_values(['외국인'],ascending=False).head()
pop_Seoul.sort_values(by='고령자',ascending=False).head()
pop_Seoul.sort_values(by='고령자비율',ascending=False).head()
left = pd.DataFrame(
{
'key': ['K0','K4','K2','K3'],
'A': ['A0','A1','A2','A3'],
'B': ['B0','B1','B2','B3'],
}
)
right = pd.DataFrame(
{
'key': ['k0','K1','K2','K3'],
'C': ['C0','C1','C2','C3'],
'D': ['D0','D1','D2,'D3'],
}
)
data_result = pd.merge(CCTV_Seoul, pop_Seoul, on='구별')
data_result.drop(['2013년도 이전','2014년','2015년','2016년'], axis=1,inplace=True)
data_result.set_index('구별', inplace=True)
인덱스 변경
data_result.corr()
data_result['CCTV비율'] = data_result['소계'] / data_result['인구수'] * 100
data_result.sort_values(by='CCTV비율',ascending=False).head()