FUNDAMENTAL | 9. データプリプロセッシング技術
20210917
1.前処理
モデルにデータを入れる前に
2.欠落データ
データを失う
# 전체 데이터 수
len(파일명)
# 컬럼별 결측치 개수
len(파일명) - 파일명.count()
# 결측치가 있는 컬럼 삭제하기
trade = 파일명.drop('결측치가 있는 컬럼명', axis=1)
DataFrame.isnull()
:各データを「真」および「偽」に戻すDataFrame.any(axis=1)
:行ごとに1つのTrueがTrueを表し、そうでなければFalseを返します.dropna
:実測値を削除する方法# 데이터별 결측치 여부 확인
파일명.isnull()
# 행별 True 데이터 추출
파일명.isnull().any(axis=1)
# 각 칼럼의 값이 모두 결측치인 행 삭제하기
# subset: 특정 칼럼 선택
# how = 'all': 선택한 컬럼 전부가 결측치인 행을 삭제하겠다는 의미 ('any': 하나라도 결측치인 경우)
파일명.dropna(how='all', subset=['컬럼1', '컬럼2', '컬럼3', '컬럼4', '컬럼4'], inplace=True)
補足数値データ
指定した値
3.冗長データ
同じ値を持つデータがなく、各ローの値が一意でなければならない場合は、重複データを除去する必要があります.
DataFrame.dulicated()
:重複しないブール値を返します.4.異常値(Outlier)
多くの数値の範囲を超えて、極大または極小の値を表す
いくつかの異常値のため、ほとんどの値の違いは意味がありません.
極端な値がない限り、例外値の除去と分析
異常値処理
z-score method
減算平均は標準偏差計算に分けられる.
zscore=X−μσz score =\cfrac{X−μ}{σ}zscore=σX−μ
zscoreは,特定の基準を超えたデータに対して異常値であると考えられる.
基準が小さいほど異常値と判断されるデータが多くなり、基準が大きいほど異常値データが少なくなる.
zscoreの欠点
# 이상치 데이터의 인덱스를 리턴하는 함수 생성
# df: 데이터 프레임, col: 컬럼, z: 기준
def outlier(df, col, z):
return df[abs(df[col] - np.mean(df[col]))/np.std(df[col])>z].index
# 이상치 확인
파일명.loc[outlier(df, col, z)]
# 이상치가 아닌 데이터를 추출하는 함수
def not_outlier(df, col, z):
return df[abs(df[col] - np.mean(df[col]))/np.std(df[col]) <= z].index
abs(df[col] - np.mean(df[col]))
:データの平均値に絶対値をとるabs(df[col] - np.mean(df[col]))/np.std(df[col])
:上記操作を標準偏差に区分するdf[abs(df[col] - np.mean(df[col]))/np.std(df[col])>z].index
:z値より大きいデータを抽出するインデックス四分位数範囲(IQR)方法
출처 : https://en.wikipedia.org/wiki/Interquartile_range
# 제1사분위수와 제 3사분위수 구하기
Q3, Q1 = np.percentile(data, [75 ,25])
IQR = Q3 - Q1
# 이상치 확인하기
data[(Q1-1.5*IQR > data)|(Q3+1.5*IQR < data)]
5.正規化
通常、カラム間の範囲が広い場合は、前処理中にデータを正規化します.
一般的な標準化方法:標準化、Min-Maxスケール
Standardization
データの平均値を0に変換し、偏差値を1に変換します.
X−μσ\cfrac{X−μ}{σ}σX−μ
# 정규분포를 따라 랜덤하게 데이터 x를 생성.
np.random.seed(2020)
x = pd.DataFrame({'A': np.random.randn(100)*4+4,
'B': np.random.randn(100)-1})
# 데이터 x를 Standardization 기법으로 정규화
x_standardization = (x - x.mean())/x.std()
Min-Max Scaling
データの最大値を0、最大値を1に変換
X−X(min)X(max)−X(min)\cfrac {X−X_(min)} {X_(max)−X_(min)}X(max)−X(min)X−X(min)
# 데이터 x를 min-max scaling 기법으로 정규화.
x_min_max = (x-x.min())/(x.max()-x.min())
6. One-Hot Encoding
各カテゴリのバイナリプロパティを1のみ、残りは0にする方法
機械学習または深さ学習フレームワークがカテゴリをサポートしていない場合は、1対1の符号化になります.
pandas
のget_dummies
関数を使用# get_dummies를 통해 컬럼1 원-핫 인코딩
변수명 = pd.get_dummies(파일명['컬럼1'])
변수명.head()
7.区間化(Binning)
ヒストグラムなどの連続データを解析するパーティション化方法
数値型データをカテゴリ型データに変換
cut
とqcut
はcut
:データと区間を入力し、データを区間別に分割します.value_counts()
:各区間の値を決定bin
オプションに整数を入力すると、データの最高値は平均bin
の数に分けられます.qcut
:データ分布を類似のグループに分割Reference
この問題について(FUNDAMENTAL | 9. データプリプロセッシング技術), 我々は、より多くの情報をここで見つけました https://velog.io/@tjddus0302/FUNDAMENTAL-9.-데이터-전처리-기법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol