Prática recomendada para limpar colunas de dataframe do Pandas

Sep 29 2020

Estou limpando colunas str em um dataframe do Pandas (veja um exemplo abaixo) e tenho me perguntado se há maneiras mais concisas ou métodos locais adicionais de fazer isso. Quais são as práticas recomendadas gerais para a limpeza de colunas no Pandas?

import pandas as pd
df = pd.DataFrame.from_dict({"col1": [0, 1, 2, 3], "col2": ["abcd efg", ".%ues", "t12 ^&3", "yupe"]})

df["col2"] = df["col2"].str.lower()
df["col2"] = df["col2"].str.strip()
df["col2"].replace(to_replace="[^a-zA-Z ]", value="", regex=True, inplace=True)

Respostas

2 MaartenFabré Sep 29 2020 at 18:19

Isso não é tão ruim. É uma boa coisa você usar argumentos de palavra-chave para oreplace method

Sempre tento manter meus dados originais em seu estado original e continuo com o dataframe limpo.

estilo fluente

Isso se presta muito bem a um tipo de estilo fluente como neste exemplo . Eu usá-lo também, e usar um monte de df.assign, df.pipe, df.query...

Neste exemplo, eu faria algo como

df_cleaned = df.assign(
    col2=(
        df["col2"]
        .str.lower()
        .str.strip()
        .replace(to_replace="[^a-zA-Z ]", value="", regex=True)
    )
)

Definitivamente, sem inplacesubstituições