当我们拿到一个数据的时候,首先要看下它的大小是什么?数据类型有什么?
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 这里面就是所有数值类型的特征