我刚刚开始学习Python,因此对任何帮助都非常感谢。
因此,此处的总体目的是用于数据探索 数据清洁。
我写下面的功能输出了一个数据框,该数据框显示每个列中缺少值的百分比。
def missing_values_table(df):
missing_vals = df.isnull().sum()
# Boolean check of all value to True for all null values, then sums for total count.
percent_conversion = 100 * df.isnull().sum()/len(df)
# Percent conversion.
combined_table = pd.concat([missing_vals, percent_conversion], axis=1)
# Merging dataframes.
table_renamed = combined_table.rename(columns =
{0:'Missing Values', 1:'Percentage'})
# Giving column labels.
table_renamed.sort_values(['Percentage'], ascending=False, inplace=True)
# Sort descending.
return table_renamed
有问题的输出(这是缺少索引,它将向我显示它们在原始数据框中的位置...庞大):
Missing Values Percentage
Engine_Horsepower 375906 93.712932
Pushblock 375906 93.712932
Enclosure_Type 375906 93.712932
Blade_Width 375906 93.712932
[...]
所需的输出:
Missing Values Percentage
32 Engine_Horsepower 375906 93.712932
15 Pushblock 375906 93.712932
3 Enclosure_Type 375906 93.712932
17 Blade_Width 375906 93.712932
[...]
数字对应于原始dataframe的列号,预先分类。
仅在单独研究这些列可以删除这些列后,我将根据阈值删除列(50% null值,删除)。
以保持列的整数位置,使列Multiiindex
df.columns = pd.MultiIndex.from_arrays([range(len(df.columns)), df.columns])
,然后滤波的过滤和摘要将保持位置
threshold = .4
df[df.columns[df.isnull().mean() < threshold]]
这将执行您功能的第一部分
df_null_summary = pd.concat([df.isnull().sum(), df.isnull().mean()], axis=1, keys=['Missing Values', 'Percentage'])