Python数据清洗(选择特征中数据类型为数值型的特征)

当我们拿到一个数据的时候,首先要看下它的大小是什么?数据类型有什么?

import pandas as pd
path = "xxx.csv"
data = pd.read_csv(path)
print(data.shape)
print(data.dtypes)

然后我们把这个数据的名字及对应的特征放到了一个单独的文件里面

pd.DataFrame(data.dtypes).to_csv("fea_type.csv")

然后添加每列名字和类型索引为 “name”和“type”

feature_path = "fea_type.csv"
all_features = pd.read_csv(feature_path)
print(all_features.head())
names = list(all_features["name"])
types = list(all_features["type"])
type_label = set(types)
print(type_label)  # three types data: float64-int64-object
int_fea = []
float_fea = []
object_fea = []
for key, value in data_dict:
    if "float64" == value:
        float_fea.append(key)
    elif "int64" == value:
        int_fea.append(key)
    else:
        object_fea.append(key)
# 先把int和float的数据留下,在对object类型的数据进行筛选
res = []
res.extend(int_fea)
res.extend(float_fea)

对于我用的数据集,发现其中只有三种数据类型 float64-int64-object
接下来重点对object类型进行筛选,挑选出非日期和非字符类型的数据

data[object_fea].to_csv("object.csv", index=None)
object_data = pd.read_csv("object.csv")
# print(object_data.isnull().sum().sort_values(ascending=False))
print("test:")
useful_fea = []
for key in object_fea:
    temp = list(object_data[key])
    mark = False
    temp = [str(x) for x in temp]
    for word in temp:
    	#主要是通过这个函数来判断是否为数值,有一个是数值型我们就认为这个特征对应所有值类型都是是数值
        if word.isdigit():
            useful_fea.append(key)
            mark = True
            # print(word)
            break
    # if mark:
    #     print(temp)
#print(useful_fea)
#print(len(useful_fea))
res.extend(useful_fea)

这样就可以得到res 这里面就是所有数值类型的特征

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值