【发布时间】:2022-12-04 10:29:12
【问题描述】:
通过通用;我的意思是说我不知道在拉入文件之前需要删除的列的名称。我找到的例子;假设您知道要删除的列的名称。熟悉 PlayTennis 数据集的人可能已经习惯看到:
my_df = pd.DataFrame({"Outlook": [Sunny,Cloudy,Rainy], "Temp":[Hot,Cold],
"Humidity":[high,low]...})
然而,在我的课堂上,我们得到第一列“天数”,例如:
my_df = pd.DataFrame({"Days":[D1,D2,...,D14],"Outlook": [Sunny,Cloudy,Rainy], "Temp":[Hot,Cold],"Humidity":[high,low]...})
显然,看着这个我想删除“天数”列:
df.drop(columns=['Days'], inplace=True)
问题是 playtennis 只是一个示例数据集,在实际数据集中,出于与“天数”相同的原因,我可能需要删除的列不会被称为天数。我需要一种方法来通过某种方法删除无用的列,该方法可以看到列中唯一值的数量并理解它太多而无用(编辑:意味着它过度拟合,如果我有 30 个实例和 30 天,模型将尝试根据今天是哪一天来预测结果,因此对可预测性没有用);在我将其读入我的机器学习算法之前。
import pandas as pd
import numpy as np
df_train = pd.read_csv("assets\playtennis.csv") # read in data
df_train.head() # see first 5
# get a list of attribute excluding the class label (e.g.,PlayTennis)
def attributes (df,label):
return df.columns.drop(label).values.tolist()
def trash(df,attr,label):
# Do something to trash useless columns
df.drop(columns=[x],inplace=True)
class_label = df_train.columns[-1] # class label in the last column
attr = attributes(df_train,class_label)
trash(df_train,attr,class_label)
我只有大约 6 周的时间使用 python,所以请原谅(并指出)语法错误。
【问题讨论】:
-
有什么问题?识别列名称,或将该名称作为变量传递给
drop?