empty_columns = data.columns[data.isnull().all()] empty_columns
时间: 2024-06-16 18:04:56 浏览: 178
根据提供的引用内容,报错信息显示"column(date) values is null while columns is not nullable",意味着在列"date"中存在空值,但该列被定义为不可为空。根据这个错误信息,可以推断出你想要找到所有值都为空的列。
在给定的代码中,`data.columns`返回了数据框中的所有列名,`data.isnull().all()`返回一个布尔值的数据框,其中为True的位置表示该列的所有值都为空。因此,`data.columns[data.isnull().all()]`将返回所有值都为空的列的列名。
以下是一个示例代码,演示如何找到所有值都为空的列:
```python
empty_columns = data.columns[data.isnull().all()]
print(empty_columns)
```
请注意,这只是一个示例代码,你需要将其适应你的具体数据框和列名。如果你提供更多的上下文信息,我可以给出更具体的答案。
相关问题
将这段代码变为伪代码形式target_col = ["Outcome"] cat_cols = data.nunique()[data.nunique() < 12].keys().tolist() cat_cols = [x for x in cat_cols ] #numerical columns num_cols = [x for x in data.columns if x not in cat_cols + target_col] #Binary columns with 2 values bin_cols = data.nunique()[data.nunique() == 2].keys().tolist() #Columns more than 2 values multi_cols = [i for i in cat_cols if i not in bin_cols] #Label encoding Binary columns le = LabelEncoder() for i in bin_cols :median_target('BMI') data.loc[(data['Outcome'] == 0 ) & (data['BMI'].isnull()), 'BMI'] = 30.1 data.loc[(data['Outcome'] == 1 ) & (data['BMI'].isnull()), 'BMI'] = 34.3 data[i] = le.fit_transform(data[i]) #Duplicating columns for multi value columns data = pd.get_dummies(data = data,columns = multi_cols ) #Scaling Numerical columns std = StandardScaler() scaled = std.fit_transform(data[num_cols]) scaled = pd.DataFrame(scaled,columns=num_cols) #dropping original values merging scaled values for numerical columns df_data_og = data.copy() data = data.drop(columns = num_cols,axis = 1) data = data.merge(scaled,left_index=True,right_index=True,how = "left")
```
设置目标列为"Outcome"
将唯一值少于12个的列作为分类变量列,并存储在cat_cols列表中
从数据集中选择数值列,不包括分类变量和目标列,存储在num_cols列表中
将只有两个唯一值的列存储在bin_cols列表中
将多于两个唯一值的分类变量列存储在multi_cols列表中
对二元分类变量进行标签编码
对于缺失值的'BMI'列,使用中位数进行填充
将二元分类变量转换为数值列
对于有多个唯一值的分类变量列,将其转换为虚拟变量列
对于数值列,进行标准化处理
将标准化后的数值列与虚拟变量列合并,并在数据集中删除原始数值列
将数据集的副本存储在df_data_og中
```
def median_target(var): temp = data[data[var].notnull()] temp = temp[[var, 'Outcome']].groupby(['Outcome'])[[var]].median().reset_index() return temp data.loc[(data['Outcome'] == 0 ) & (data['Insulin'].isnull()), 'Insulin'] = 102.5 data.loc[(data['Outcome'] == 1 ) & (data['Insulin'].isnull()), 'Insulin'] = 169.5 data.loc[(data['Outcome'] == 0 ) & (data['Glucose'].isnull()), 'Glucose'] = 107 data.loc[(data['Outcome'] == 1 ) & (data['Glucose'].isnull()), 'Glucose'] = 1 data.loc[(data['Outcome'] == 0 ) & (data['SkinThickness'].isnull()), 'SkinThickness'] = 27 data.loc[(data['Outcome'] == 1 ) & (data['SkinThickness'].isnull()), 'SkinThickness'] = 32 data.loc[(data['Outcome'] == 0 ) & (data['BloodPressure'].isnull()), 'BloodPressure'] = 70 data.loc[(data['Outcome'] == 1 ) & (data['BloodPressure'].isnull()), 'BloodPressure'] = 74.5 data.loc[(data['Outcome'] == 0 ) & (data['BMI'].isnull()), 'BMI'] = 30.1 data.loc[(data['Outcome'] == 1 ) & (data['BMI'].isnull()), 'BMI'] = 34.3 target_col = ["Outcome"] cat_cols = data.nunique()[data.nunique() < 12].keys().tolist() cat_cols = [x for x in cat_cols ] #numerical columns num_cols = [x for x in data.columns if x not in cat_cols + target_col] #Binary columns with 2 values bin_cols = data.nunique()[data.nunique() == 2].keys().tolist() #Columns more than 2 values multi_cols = [i for i in cat_cols if i not in bin_cols] #Label encoding Binary columns le = LabelEncoder() for i in bin_cols : data[i] = le.fit_transform(data[i]) #Duplicating columns for multi value columns data = pd.get_dummies(data = data,columns = multi_cols ) #Scaling Numerical columns std = StandardScaler() scaled = std.fit_transform(data[num_cols]) scaled = pd.DataFrame(scaled,columns=num_cols) #dropping original values merging scaled values for numerical columns df_data_og = data.copy() data = data.drop(columns = num_cols,axis = 1) data = data.merge(scaled,left_index=True,right_index=True,how = "left") # Def X and Y X = data.drop('Outcome', axis=1) y = data['Outcome'] X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, shuffle=True, random_state=1) y_train = to_categorical(y_train) y_test = to_categorical(y_test)
这段代码看起来是在进行数据预处理,首先定义了一个函数`median_target`,用于计算每个类别中某个特征的中位数。然后根据不同的`Outcome`值,对缺失值进行填充。接着将数据集中的分类特征进行编码,将二元特征进行二元编码,将多元特征进行独热编码。最后,对数值特征进行标准化处理,并将处理后的数据集进行拆分为训练集和测试集。
阅读全文