簡體   English   中英

根據空值的百分比刪除pandas數據幀中的列

[英]Drop columns in a pandas dataframe based on the % of null values

我有一個大約60列和200萬行的數據幀。 有些列大多是空的。 我使用此函數計算了每列中的空值百分比。

def missing_values_table(df): 
    mis_val = df.isnull().sum()
    mis_val_percent = 100 * df.isnull().sum()/len(df)
    mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
    mis_val_table_ren_columns = mis_val_table.rename(
    columns = {0 : 'Missing Values', 1 : '% of Total Values'})
    return mis_val_table_ren_columns

現在我想刪除缺少80%以上(例如)值的列。 我嘗試了以下代碼但它似乎沒有工作。

df = df.drop(df.columns[df.apply(lambda col: col.isnull().sum()/len(df) > 0.80)], axis=1)

先感謝您。 希望我不會遺漏一些非常基本的東西

我收到此錯誤

TypeError :(“'generator'對象不可調用”,u'Ccurred在索引Unique_Key')

您可以使用帶有閾值參數的dropna()

thresh = len(df) * .2
df.dropna(thresh = thresh, axis = 1, inplace = True)
def missing_values(df, percentage):

    columns = df.columns
    percent_missing = df.isnull().sum() * 100 / len(df)
    missing_value_df = pd.DataFrame({'column_name': columns,
                                 'percent_missing': percent_missing})

    missing_drop = list(missing_value_df[missing_value_df.percent_missing>percentage].column_name)
    df = df.drop(missing_drop, axis=1)
    return df

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM