关于value_count
value_counts将会对于指定列的数据进行group,然后统计出各个出现的值的数量,并且按照从高到低的顺序进行排序
1 train_data = load_titanic_data("train.csv") 2 train_data["Pclass"].value_counts()
输出:
3 491
1 216
2 184
Name: Pclass, dtype: int64
代表Pclass这个字段共有三种值:1,2,3;出现的次数分别为216,184以及491,上面的列表就是按照出现“值”的数量从高到低排列以及数量进行排列;
原则即使:在对于NaN值处理常规的一种方案就是对于数字型取“中位数”,对于Category的(文字型)填充则取出现频率最高的;下面就是实现对于文字型填充Null值;
1 from sklearn.pipeline import Pipeline 2 from sklearn.preprocessing import Imputer 3 4 num_pipeline = Pipeline([ 5 ("select_numeric", DataFrameSelector(["Age", "SibSp", "Parch", "Fare"])), 6 ("imputer", Imputer(strategy="median")), 7 ]) 8 9 class MostFrequentImputer(BaseEstimator, TransformerMixin): 10 def fit(self, X, y=None): 11 self.most_frequent_ = pd.Series([X[c].value_counts().index[0] for c in X], 12 index=X.columns) 13 return self 14 def transform(self, X, y=None): 15 return X.fillna(self.most_frequent_) 16 17 from future_encoders import OneHotEncoder 18 cat_pipeline = Pipeline([ 19 ("select_cat", DataFrameSelector(["Pclass", "Sex", "Embarked"])), 20 ("imputer", MostFrequentImputer()), 21 ("cat_encoder", OneHotEncoder(sparse=False)), 22 ]) 23 24 cat_pipeline.fit_transform(train_data)
参考:
posted on 2018-08-12 22:43 张叫兽的技术研究院 阅读(1831) 评论(0) 编辑 收藏 举报