Я попытался применить фильтр для удаления столбцов со слишком большим количеством NA в моем фрейме данных dask:
df.dropna(axis=1, how='all', thresh=round(len(df) * .8))
К сожалению, похоже, что API dask dropna
немного отличается от API панд и делаетне принимать ни axis
, ни threshold
.Один частичный способ обойти это - перебирать столбец за столбцом и удалять постоянные (независимо от того, заполнены они NA или нет, так как я не против избавиться от констант):
for col in df.columns:
if len(df[col].unique()) == 1:
new_df = df.drop(col, axis = 1)
Ноэто не позволяет мне применить порог.Я мог бы вычислить порог вручную, добавив:
elif sum(df[col].isnull().compute()) / len(df[col]) > 0.8:
new_df = df.drop(col, axis = 1)
Но я не уверен, что вызовы compute
и len
в этот момент были бы оптимальными, и мне было бы интересно узнать, есть ли какие-либо лучшеспособы пойти об этом?