<주피터 노트북 단축키>
- shift + Enter : 현재 셀 실행 및 다음 셀 생성
- esc 키 : 실행 셀 타이핑 모드 빠져나가기
- m 키 : 현재 코드 셀을 마크다운 셀로 변경
- a 키 : 이전 셀 추가
import pandas as pd
import numpy as np
pd.Series([1, 2, 3, 4], dtype=np.float64)
# 출력
# 0 1.0
# 1 2.0
# 2 3.0
# 3 4.0
# dtype: float64
pd.Series(np.array([1, 2, 3]))
# 출력
# 0 1
# 1 2
# 2 3
# dtype: int32
pd.Series({'Key':'Value'})
# 출력
# Key Value
# dtype: object
dates = pd.date_range("20210101", periods=6)
dates
# 출력
# DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04',
# '2021-01-05', '2021-01-06'],
# dtype='datetime64[ns]', freq='D')
# 표준 정규분호에서 샘플링한 난수 생성 : np.random.randn(행, 열)
datas = np.random.randn(6, 4)
df = pd.DataFrame(datas, index=dates, columns=['A', 'B', 'C', 'D'])
df
# 한개 컬럼 선택
df['A']
# 이 선택 방법은 컬럼명이 문자열일 경우에만 불러올 수 있음( ex. 컬럼명: 3, '3' 둘다 오류남)
df.A
# 두개 이상 컬럼 선택
#df['A', 'B'] -> Error
df[['A', 'B']]
# 인덱스 0 ~ 2 행까지 출력
df[0:3]
# 1일부터 4일까지 모두 출력
df['20210101':'20210104']
## loc[행, 열]
# (:) 전체 행, (['A', 'B']) A, B 컬럼 출력
df.loc[:, ['A', 'B']]
# 1일부터 4일 행, (["A", "D"]) A, D 컬럼 출력
df.loc["20210102":"20210104", ["A", "D"]]
# 1일부터 4일 행, ("A":"D") A ~ D 컬럼 출력
df.loc["20210102":"20210104", "A":"D"]
# 2일 행, (["A", "B"]) A, B 컬럼 출력
df.loc["20210102", ["A","B"]]
# 행 인덱스가 3인 데이터('2021-01-04')의 모든값 출력(시리즈 형태로 반환)
df.iloc[3]
# df.iloc[행, 열]
df.iloc[3, 2]
# 인덱스 : 3~4행, 0~1 컬럼
df.iloc[3:5, 0:2]
# 인덱스 : 1,2,4 행, 0,2 컬럼
df.iloc[[1, 2, 4], [0, 2]]
# 전체행, 인덱스 : 1~2 컬럼
df.iloc[:, 1:3]
df['E'] = ['one', 'one', 'two', 'three', 'four', 'six']
df
# E 컬럼에 'two', 'six' 값이 있는지 확인
df['E'].isin(['two', 'six'])
# 출력
# 2021-01-01 False
# 2021-01-02 False
# 2021-01-03 True
# 2021-01-04 False
# 2021-01-05 False
# 2021-01-06 True
# Freq: D, Name: E, dtype: bool
df[df['E'].isin(['two', 'six'])]
del df['E']
df
# axis : 0은 행(default), 1은 열
df.drop(['D'], axis=1) # 열 삭제
df.drop(['20210104']) # 행 삭제
df['A'].apply('sum') # 3.955685591404973
df['A'].apply("mean") # 0.6592809319008288
df['A'].apply("min"), df['A'].apply("max") # (-0.04249566107799036, 1.3038916847394042)
df[['A', 'D']].apply("sum")
# 출력
# A 3.955686
# D -1.658560
# dtype: float64
df['A'].apply(np.sum)
# 출력
# 2021-01-01 0.959249
# 2021-01-02 0.833553
# 2021-01-03 0.392247
# 2021-01-04 -0.042496
# 2021-01-05 1.303892
# 2021-01-06 0.509241
# Freq: D, Name: A, dtype: float64
df.apply(np.sum)
# 출력
# A 1.247785
# B 0.211866
# C 5.830115
# D 2.304984
# dtype: float64
import pandas as pd
CCTV_Seoul = pd.read_csv("../data/01. Seoul_CCTV.csv", encoding='utf-8')
# head() : 기본값 5
CCTV_Seoul.head()
CCTV_Seoul.columns
# 출력
# Index(['기관명', '소계', '2013년도 이전', '2014년', '2015년', '2016년'], dtype='object')
# usecols와 같은 모든 옵션 설정은 pandas 공식문서 참조
# pandas.read_excel documentation 검색
# "https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html"
pop_Seoul = pd.read_excel(
"../data/01. Seoul_Population.xls", header = 2, usecols="B, D, G, J, N"
)
pop_Seoul.head()
CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0]: "구별"}, inplace=True)
# inplace=True : 원본 데이터에 자동으로 반영하는 옵션
CCTV_Seoul.head()
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
)
pop_Seoul.head()
"이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다."