gpt4 book ai didi

python - 如何通过在一个函数中包含所有类型的填充来处理缺失值?

转载 作者:行者123 更新时间:2023-12-04 13:31:36 28 4
gpt4 key购买 nike

我对做了一个简单的函数处理缺失值 ,但不幸的是,该功能不起作用。
这是我尝试过的示例:

#Basic libraries
import os
import pandas as pd
import numpy as np

def handle_missing(df,list_columns,handle_type,value):

if handle_type == "bfill":
df = df.loc[:,list_columns].fillna(method='bfill', inplace=True)

elif handle_type == "ffill":
df = df.loc[:,list_columns].fillna(method='bfill')

elif handle_type == "mean":
df = df[list_columns].fillna(df.mean()).round(2)

elif handle_type == "dropna0":
df = df[list_columns].dropna(axis=0, how='any')

elif handle_type == "dropna1":
df = df[list_columns].dropna(axis=1, how='any')

else:
df = df.loc[:,list_columns].fillna(value)

data_dict = {'First':[100, 90, np.nan, 95],
'Second': [30, 45, 56, np.nan],
'Third':[np.nan, 40, 80, 98]}

df1 = pd.DataFrame(data_dict)
list_columns = ['First','Second','Third']
df1 = handle_missing(df1,list_columns,"bfill",0)
df1
这个功能有什么问题需要我集中注意力吗?
如果不推荐使用此功能,请向我推荐一个新功能。

最佳答案

您的函数看起来不错,只是它返回 None ,所以您的 df1实际上是 None .我会像这样重写函数:

def handle_missing(df,list_columns,handle_type,value):

if handle_type == "bfill":
# no inplace
df[list_columns] = df[list_columns].fillna(method='bfill')

elif handle_type == "ffill":
df[list_columns] = df.loc[:,list_columns].fillna(method='bfill')

elif handle_type == "mean":
df[list_columns] = df[list_columns].fillna(df.mean()).round(2)

elif handle_type == "dropna0":
df[list_columns] = df[list_columns].dropna(axis=0, how='any')

elif handle_type == "dropna1":
df[list_columns] = df[list_columns].dropna(axis=1, how='any')

else:
df[list_columns] = df.loc[:,list_columns].fillna(value)
现在该函数将修改数据帧 就地 .所以你只需要:
handle_missing(df1,['Third'],"bfill",999)
print(df1)

关于python - 如何通过在一个函数中包含所有类型的填充来处理缺失值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64792751/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com