本文主要是介绍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 = Falsetemp = [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 这里面就是所有数值类型的特征
这篇关于Python数据清洗(选择特征中数据类型为数值型的特征)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!