In [28]:
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:90% !important;}</style>"))
Pandas¶
- 데이터 분석을 위해 널리 사용되는 파이썬 라이브러리 패키지
- 수치 테이블 및 시계열을 조작하기 위한 데이터 구조 및 연산을 제공
In [1]:
import pandas as pd
1. 데이터 불러오기¶
- csv: pd.read_csv('')
excel: pd.read_excel('')
encoding : 'utf-8', 'cp949', 'ISO-8859-1'
In [2]:
# csv 파일 불러오기
df = pd.read_csv('./01. CCTV_in_Seoul.csv', encoding='utf-8')
# head(), tail()
df.head()
Out[2]:
2. 데이터 조작¶
In [3]:
# Column의 이름 반환
df.columns
Out[3]:
In [4]:
# Column Rename
df.rename(columns={df.columns[0]:'구별'}, inplace=True)
df.head()
Out[4]:
In [5]:
# DataFrame 값 확인
df.values
Out[5]:
In [6]:
# 컬럼 Unique
df['구별'].unique()
Out[6]:
In [7]:
#sort_values(): by로 지정된 컬럼 기준 정렬, ascending 옵션으로 내림차순이나 오름차순 정렬
df = df.sort_values(by='2014년', ascending=False)
df.head()
Out[7]:
In [8]:
# 행 Slicing
df[0:3]
Out[8]:
Drop, Del¶
- 컬럼 삭제
In [9]:
# 컬럼 삭제 drop or del
# axis, 1: column, 0: row
df.drop('2013년도 이전', axis=1, inplace=True)
del df['소계']
df
Out[9]:
인덱스 초기화¶
In [10]:
df = df.reset_index()
df
Out[10]:
중복제거¶
- duplicated() : 중복되는 행이 있을 때, True
- drop_duplicates() : 중복된 행들이 제거되고 unique한 행들만 얻을 수 있음
In [11]:
df.duplicated()
Out[11]:
In [12]:
df = df.drop_duplicates()
df
Out[12]:
loc, iloc¶
In [13]:
# 특정 행 찾기
df.loc[df['2014년']==341]
Out[13]:
In [14]:
# df.iloc[행, 열]
df.iloc[0:3, 0:2]
Out[14]:
DataFrame 병합하기¶
In [15]:
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7']},
index=[4, 5, 6, 7])
Concat¶
- 옵션(명시 않을시 default)
- axis, 0: 세로로 합치기, 1: 가로로 합치기 default: 0
- join, outer: 합집합, inner: 교집합 default: outer
- ignore_index, False: 기존 index 유지, True: 기존 index 무시, 열 기준으로 병합
In [16]:
result = pd.concat([df1, df2], axis=0, join='outer')
result
Out[16]:
Merge¶
- 옵션
- on, 명시된 컬럼을 기준으로 병합
- how: 특정 DataFrame을 기준으로 병합
- left, right, outer, inner
In [17]:
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']})
In [18]:
pd.merge(left, right, how='left', on='key')
Out[18]:
In [19]:
pd.merge(left, right, how='right', on='key')
Out[19]:
In [21]:
# 교집합
pd.merge(left, right, how='inner', on='key')
Out[21]:
In [22]:
#합집합 형태로 병합, 공통된 요소가 아닌 곳은 NaN 처리
df = pd.merge(left, right, how='outer', on='key')
df
Out[22]:
NaN 데이터 처리¶
- dropna : NaN 데이터가 있는 축(행, 열) 제외
- fillna : NaN 데이터를 대신 할 값을 채움
- isnull : NaN 값인지 True, False 반환
- notnull : NaN이 아닌지 True, False 반환
In [23]:
df.isnull()
Out[23]:
In [24]:
df.notnull()
Out[24]:
In [25]:
df.dropna()
Out[25]:
In [26]:
df.fillna(1)
Out[26]:
통계관련¶
- count: Nan 값을 제외한 값의 수를 반환
- describe: 각 열에 대한 요약 통계
- min, max: 최소, 최대
- argmin, argmax: 최소, 최대 값을 가진 색인 위치 반환
- idxmin, idxmanx: 최소 최대값을 갖고 있는 색인의 값 반환
- sum: 합
- cumsum: 누적합
- cummin, cummax: 누적 최소, 최대 값
- mean: 평균
- median: 중위 값
- mad: 평균값에서 절대 평균편차
- std: 표본 정규분산
- skew: 표본 비대칭도
- kurt: 표본 첨도
- diff: 1차 산술차
상관관계, 공분산¶
- df.corr(): 모든 변수 간 상관관계를 계산 후 반환
- df.col1.corr(df.col2): col1과 col2의 상관관계 계산 후 반환
- df.cov(): 모든 변수 간 공분산을 계산 후 반환
- df.corrwith(df.col): 하나의 변수와 나무지 변수 간의 상관관계 계산
In [ ]: