python数据预处理

Posted nunca

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据预处理相关的知识,希望对你有一定的参考价值。

一、属性规约

在进行数据预处理的过程中,如果数据的某一列都是一样的或者属性是一样的,那么这一列对我们的预测没有帮助,应该将这一列去掉,pandas中如果某一列属性值相同,但是此列中有缺失值(NaN),pandas会默认其有两个属性,我们在进行此操作的过程中应该首先去掉缺失值,然后检查唯一性。代码如下;

orig_columns = loans_2007.columns
drop_columns = []
for col in orig_columns:
    col_series = loans_2007[col].dropna().unique()
    if len(col_series) == 1:
        drop_columns.append(col)
loans_2007 = loans_2007.drop(drop_columns, axis=1)

二、缺失值

用下面的代码进行缺失值查看数据中每一列的缺失值情况,对于缺失值比较多的列,可以直接删除,对于缺失值比较少的列可以删除其样本,或者填充其他值代替。

null_counts = loans.isnull().sum()

三、字符转化

print(loans.dtypes.value_counts())
object_columns_df = loans.select_dtypes(include=["object"]) #选择字符型的属性

用上面的代码看每一列的属性,sklearn不能处理字符型的,只能接受数值型的。对于字符型的可以进行如下处理:

mapping_dict = {
    "emp_length": {
        "10+ years": 10,
        "9 years": 9,
        "8 years": 8,
        "7 years": 7,
        "6 years": 6,
        "5 years": 5,
        "4 years": 4,
        "3 years": 3,
        "2 years": 2,
        "1 year": 1,
        "< 1 year": 0,
        "n/a": 0
    }
}
loans = loans.replace(mapping_dict)
loans = loans.drop(["last_credit_pull_d", "earliest_cr_line", "addr_state", "title"], axis=1)
loans["int_rate"] = loans["int_rate"].str.rstrip("%").astype("float")

 对于能枚举的可以做一个字典,然后对数据做一个replace,对于有“%”的列,可以直接去掉百分号就好了。

 四、样本不均衡问题

1、数据增强

2、加权重项

(1)(lr = LogisticRegression(class_weight="balanced"))

(2)自己设置,传到class_weight中如下:

penalty = {
    0: 5,
    1: 1
}
lr = LogisticRegression(class_weight=penalty)

3、多个模型融合

 


以上是关于python数据预处理的主要内容,如果未能解决你的问题,请参考以下文章

你如何在 python 中处理 graphql 查询和片段?

15种Python片段去优化你的数据科学管道

常用python日期日志获取内容循环的代码片段

python+spark程序代码片段

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段