실습에 사용할 데이터 확인¶
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:90% !important;}</style>"))
In [3]:
import pandas as pd
df = pd.DataFrame([['a','a','b','a','b'],[1,1,1,2,2],[1,1,2,2,2]],index=['c1','c2','c3']).T
df
Out[3]:
데이터 정보 확인¶
In [46]:
# 데이터프레임 크기
print(df.shape)
print()
# 데이터프레임 정보
df.info()
특정 column을 index로 설정¶
In [5]:
df.set_index('c3') # == df.set_index(['c3'])
Out[5]:
기존의 DataFrame에서 index(행) 새롭게 넣기¶
In [9]:
new_index = [0,1,2,3,4,5,6]
df.reindex(new_index)
Out[9]:
In [13]:
# 값 채우기
df.reindex(new_index,fill_value='hello')
Out[13]:
In [12]:
# 새롭게 인덱스 생성
df.reset_index()
Out[12]:
결측치¶
In [153]:
new_index = [0,1,2,3,4,5,6]
df2 = df.reindex(new_index)
df2
Out[153]:
In [92]:
# 결측치를 제외하고 함수 적용 (default)
print(df2.sum(axis=0,skipna=True))
# 결측치를 제외하지 않고 함수 적용
df2.sum(axis=0,skipna=False)
Out[92]:
In [58]:
# 결측치(NaN) 확인 True: NaN / False : 결측치 x
df2.isna()
df2.isnull()
Out[58]:
In [17]:
# 결측치(NaN) 채우기
df2.fillna(0)
Out[17]:
In [95]:
# NaN 직전 행의 값으로 채우기
df2.fillna(method='ffill')
Out[95]:
In [135]:
df3 = df2
# 행 추가
df3.loc[7] = [3,5,1]
# NaN 직후 행의 값으로 채우기
df3.fillna(method='bfill')
Out[135]:
In [18]:
# 결측치(NaN) 제거
df2.dropna()
Out[18]:
In [160]:
# 특정 위치 데이터 바꾸기
df2.iloc[[5],[0]] = 1
df2.loc[[6],['c1']] = 2
# NaN이 있는 column 삭제
df2.dropna(axis=1)
Out[160]:
In [126]:
# column(axis=1)에 있는 데이터의 NaN 값이 3개 이상(thresh=3)이면 열 삭제
df2.dropna(axis=1,thresh=3)
Out[126]:
중복 데이터¶
In [105]:
# 중복된 데이터면 True, 아니면 False
print(df.duplicated())
print()
# 중복된 데이터 개수
print(df.duplicated().sum())
print()
# 중복된 데이터 처리
df4 = df.drop_duplicates()
df4
Out[105]:
데이터 개수 확인¶
In [56]:
# 각 컬럼별 데이터 개수 확인
df.count()
Out[56]:
In [55]:
# 각 컬럼의 고유값 개수
df.c1.value_counts()
# df.value_counts() 는 오류남
Out[55]:
통계 함수 적용¶
In [60]:
import seaborn as sns
tat = sns.load_dataset('titanic')
tat
Out[60]:
In [62]:
# 합계
tat.age.sum()
tat['age'].sum()
Out[62]:
In [63]:
# 평균
tat.age.mean()
tat['age'].mean()
Out[63]:
In [64]:
# 중간값
tat.age.median()
tat['age'].median()
Out[64]:
In [69]:
# 최빈값
tat.age.mode()
tat['age'].mode()
Out[69]:
In [65]:
# 최소값
tat.age.min()
tat['age'].min()
Out[65]:
In [68]:
# 최대값
tat.age.max()
tat['age'].max()
Out[68]:
In [72]:
# 표준편차
tat.age.std()
tat['age'].std()
Out[72]:
In [74]:
# 상관계수
tat.corr()
Out[74]:
In [71]:
# 각 컬럼별 통계수치 확인
tat.mean()
Out[71]:
데이터 종류 확인¶
In [76]:
# 값의 종류
tat.age.unique()
Out[76]:
In [78]:
# 값의 종류의 개수
tat.age.nunique()
Out[78]:
In [79]:
# 종류별 개수
tat.age.value_counts()
Out[79]:
pivot¶
In [84]:
tat.pivot_table(index='sex',columns='class',aggfunc='size')
Out[84]:
'코딩 > Python' 카테고리의 다른 글
판다스 이해하기 - 분할, 더미변수, 문자형 날짜형 변환 (0) | 2020.07.16 |
---|---|
판다스 이해하기 - 조건문, concat, append, 그룹화, 함수적용, join (0) | 2020.07.16 |
판다스 이해하기 - 시리즈, 데이터프레임 이해, 생성, loc, iloc (0) | 2020.07.15 |
판다스 이해하기 - 참고 사이트 모음 (1) | 2020.07.15 |
파일 읽고 쓰기 (0) | 2020.06.15 |