索引未显示在数据框中 - 需要显示相应的索引,然后使用 Pandas 根据阈值删除列
Index not showing in dataframe - need to display corresponding index then delete columns based on threshold using Pandas
我刚开始学习 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
[...]
这些数字对应于原始数据框中的列号,已预先排序。
只有在单独调查这些列以确认可以删除这些列之后,我才会根据阈值(50%+ 空值,删除)删除这些列。
要保留列的整数位置,请将列设为 MultiIndex
df.columns = pd.MultiIndex.from_arrays([range(len(df.columns)), df.columns])
然后null的过滤和汇总会保留位置
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'])
我刚开始学习 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
[...]
这些数字对应于原始数据框中的列号,已预先排序。
只有在单独调查这些列以确认可以删除这些列之后,我才会根据阈值(50%+ 空值,删除)删除这些列。
要保留列的整数位置,请将列设为 MultiIndex
df.columns = pd.MultiIndex.from_arrays([range(len(df.columns)), df.columns])
然后null的过滤和汇总会保留位置
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'])