データ前処理と特徴工学の要約-欠測値(2)

料理のコースに合わせて整理されており、覚えやすく理解しやすい

コードの場所は次のとおりです。

不足している値

データ前処理の非常に重要な部分は、欠落値の処理です

# 处理缺失值impute.SimpleImputer
import pandas as pd
data = pd.read_csv("Narrativedata.csv",index_col = 0)
data.head()

# 我们通过info()可以观察到 Age 和 Embarked的存在缺失值
data.info()

"""
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 0 to 890
Data columns (total 4 columns):
Age         714 non-null float64
Sex         891 non-null object
Embarked    889 non-null object
Survived    891 non-null object
dtypes: float64(1), object(3)
memory usage: 34.8+ KB
"""
复制代码

ここでは、タイタニックから抽出されたデータを使用します。これは、1つの数字、2つの文字の3つの特徴を持ち、ラベルも文字です。ここからは、このデータを例として使用し、sklearnでのデータ前処理のさまざまな方法を徐々に理解できるようにします。

impute.SimpleImputer

クラスsklearn.impute.SimpleImputer(missing_values= nan、strategy='mean'、fill_value= None、verbose = 0、copy = True)

パラメータ
パラメータ 意味と入力
missing_values SimpleImputerに、データに欠落している値がどのように見えるかを伝えます。デフォルトはnull値np.nanです。
ストラテジー 欠測値を代入するための戦略、デフォルトは平均。「mean」と入力して平均値を入力(数値機能でのみ使用可能)「median」と入力して中央値で入力(数値機能でのみ使用可能)「most_frequent」と入力してモードで入力(数値機能と文字機能の両方で使用可能)「constant」と入力「は、パラメータ「fill_value」の値を参照してください(数値機能と文字機能の両方で使用可能)を意味します
fill_value パラメータstartegyが「定数」の場合に使用可能で、入力する値を示す文字列または数値を入力できます。通常は0です。
コピー デフォルトはTrueで、これは機能マトリックスのコピーを作成します。それ以外の場合は、欠落している値を元の機能マトリックスに埋めます。
  • 入力データは2次元である必要があり、reshape(-1,1)は次元を増やします
# 在这reshape的目的是因为我们的fit必须是二维的数据
age = data.loc[:,"Age"].values.reshape(-1,1)
age[:20]

"""
array([[22.],
       [38.],
       [26.],
       [35.],
       [35.],
       [nan],
       [54.],
       [ 2.],
       [27.],
       [14.],
       [ 4.],
       [58.],
       [20.],
       [39.],
       [14.],
       [55.],
       [ 2.],
       [nan],
       [31.],
       [nan]])
"""
复制代码
  • 0、中央値、平均値のパディング
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer()   # 默认使用平均值进行填补
imp_median = SimpleImputer(strategy="median")   # 中值填补 
imp_0 = SimpleImputer(strategy="constant",fill_value=0)  # 使用常数0进行填补

imp_mean = imp_mean.fit_transform(age)
imp_median = imp_median.fit_transform(age)
imp_0 = imp_0.fit_transform(age)

imp_mean[:20]
"""
array([[22.        ],
       [38.        ],
       [26.        ],
       [35.        ],
       [35.        ],
       [29.69911765],
       [54.        ],
       [ 2.        ],
       [27.        ],
       [14.        ],
       [ 4.        ],
       [58.        ],
       [20.        ],
       [39.        ],
       [14.        ],
       [55.        ],
       [ 2.        ],
       [29.69911765],
       [31.        ],
       [29.69911765]])
"""
# 数据不进行展示了
imp_median[:20]

imp_0[:20]
复制代码
  • 埋める
# 进行填补
data.loc[:,"Age"] = imp_median
data.info()
复制代码
  • モードで開始された塗りつぶし
# 使用众数填充Embarked
Embarked = data.loc[:,"Embarked"].values.reshape(-1,1)
imp_mode = SimpleImputer(strategy = "most_frequent")
data.loc[:,"Embarked"] = imp_mode.fit_transform(Embarked)
data.info()
复制代码
パンダとナンピーでパディングするのは実際には簡単です
  • 主にfill_naとdrop_naを使用します
# 我们可以使用pandas和numpy对数据进行填充
import pandas as pd
data = pd.read_csv("Narrativedata.csv",index_col = 0)
data.head()

# 使用fillna平均值进行填充Age
data.loc[:,"Age"] = data.loc[:,"Age"].fillna(data.loc[:,"Age"].mean())

#.dropna(axis=0)删除所有有缺失值的行,.dropna(axis=1)删除所有有缺失值的列
data.dropna(axis=0,inplace=True)
data.info()
复制代码

おすすめ

転載: juejin.im/post/7086646220331941896