티스토리 뷰
Random seed 고정
- 0 이상 10 미만의 정수형 난수를 균등분포로 추출해서 6행 4열짜리 DataFrame 생성
- index와 column은 따로 지정하지 않는다.
결측치 NaN
-
일반적으로 NaN은 결측치 취급한다.
-
결측치 처리 법 중 하나: 결측치가 들어가 있는 행 삭제
-
편하고 좋지만, 다른 열에 존재하는 데이터까지 날아가게 된다.
-
만약, 결측치가 몇개 안된다면 삭제하는게 좋을 수 있다.
-
그러나 일반적으로는 결측치를 다른 값으로 대체해서 사용한다.
-
평균값, max, min 등등 다른 값으로 대체
결측치 제거
import numpy as np
import pandas as pd
from datetime import date, datetime, timedelta
# column과 index를 설정한다.
# column : 'A', 'B', 'C', 'D'
# index : 날짜 이용, 2020-01-01부터 1일씩 증가
# NaN값을 포함하는 새로운 column 'E' 추가
# 'E' column : [7, np.nan, 4, np.nan, 2, np.nan]
np.random.seed(0)
arr = np.random.randint(0, 10, (6, 4))
# start_day = datetime(2020, 1, 1)
df = pd.DataFrame(arr)
# columns = ['A', 'B', 'C', 'D'])
# index = [start_day + timedelta(days=x) for x in range(6)])
# df.index = pd.date_range('20200101', periods=6)
df.index = pd.date_range('20200101', '20200106')
df.columns = ['A', 'B', 'C', 'D']
df['E'] = [7, np.nan, 4, np.nan, 2, np.nan]
display(df)
###################################################3
# 결측치 제거
new_df = df.dropna(how='any', inplace=False) # dropna(how='any') => NaN이 하나라도 행에 포함되어 있으면 행 자체를 삭제
# dropna(how='all') => 행의 모든 열이 NaN인 경우 행을 삭제
# inplace=True : 원본 삭제, default는 False
display(new_df)
결측치 대체
# 결측치를 다른 값으로 대체
new_df = df.fillna(value=0)
display(new_df)
'E' column의 값이 NaN인 행들을 찾아서, 해당 행의 모든 column을 출력한다.
# 'E' column의 값이 NaN인 행들을 찾아서, 해당 행의 모든 column을 출력한다.
my_mask = df['E'].isnull() # boolean mask
print(my_mask)
display(df.loc[my_mask,:])
중복행 처리
# 중복행 처리
import numpy as np
import pandas as pd
df = pd.DataFrame({'k1': ['one']*3 + ['two']*4,
'k2': [1, 1, 2, 3, 3, 4, 4]})
display(df)
#################3
# DataFrme에서 중복행에 대한 boolean mask를 추출
print(df.duplicated()) # 중복행에 대한 boolean mask 추출
# one 1 => False
# one 1 => True
# 중복행 추출
display(df.loc[df.duplicated(),:])
display(df.drop_duplicates()) # 중복행이 없다.
display(df.drop_duplicates()) # 중복행이 없다
display(df.drop_duplicates(['k1'])) # 중복행 기준 k1
display(df.drop_duplicates(['k1', 'k2']))
replace()
# replace() => 대치
df = pd.DataFrame(np.random.randint(0, 10, (6, 4)),
columns = ['A', 'B', 'C', 'D'])
df['E'] = [7, np.nan, 4, np.nan, 2, np.nan]
display(df)
#####################
result = df.replace(8, -100)
display(result)
'멀티캠퍼스 AI과정 > 04 Pandas' 카테고리의 다른 글
Pandas 04 - DataFrame Grouping (0) | 2020.09.15 |
---|---|
Pandas 04 - DataFrame 결합 Mearge (Join) (0) | 2020.09.15 |
Pandas 03 - DataFrame 집계함수, 통계기반 함수, 정렬, apply와 lambda (0) | 2020.09.15 |
Pandas 02 - DataFrame describe(), indexing, 행/칼럼 추가, 삭제 (0) | 2020.09.11 |
Pandas 02 - DataFrame (2차원) (0) | 2020.09.09 |
댓글