Olá, tudo bem?
Gostaria de saber como retornar um df sem ser binário, fazendo um get_dummies reverso, como seria isso?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, tudo bem?
Gostaria de saber como retornar um df sem ser binário, fazendo um get_dummies reverso, como seria isso?
Oi, Matheus! Tudo bem com você?
Tem uma solução possível para fazer o get_dummies reverso, mas ela tem algumas limitações. A primeira é que em caso de utilizar o parâmetro drop_first=True não é possível encontrar a partir do dataframe dummyzado qual a primeira variável que foi removida, então o dataframe reverso será apenas baseado nas categorias que existem.
A outra limitação, é que, em caso de um dataframe com valores NaN e não declarado o parâmetro dummy_na=True, que irá criar um coluna com valores NaN, não será possível também recuperar os valores NaN que existam nos dados originais.
Sabendo disso, vamos à solução. Tendo um dataframe df dado por:
| 0 | |
|---|---|
| 0 | a |
| 1 | b |
| 2 | a |
| 3 | c |
| 4 | c |
| 5 | b |
Foi feito o tratamento de categorização dos dados com get_dummies:
df_dummy = pd.get_dummies(df)
df_dummy| a | b | c | |
|---|---|---|---|
| 0 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 2 | 1 | 0 | 0 |
| 3 | 0 | 0 | 1 |
| 4 | 0 | 0 | 1 |
| 5 | 0 | 1 | 0 |
O dataframe reverso df_reverso com o método idxmax especificando o parâmetro axis=1 da seguinte forma:
df_reverso = df_dummy.idxmax(axis=1)
df_reversoO resultado que obtemos é idêntico ao dataframe original (df):
| 0 | |
|---|---|
| 0 | a |
| 1 | b |
| 2 | a |
| 3 | c |
| 4 | c |
| 5 | b |
Espero ter te ajudado. Bons estudos!
Não estou conseguindo, retorna este erro: "reduction operation 'argmax' not allowed for this dtype". Não sei qual dtype usar.
Obrigado!
Oi, Matheus!
Você pode me enviar o print do seu código? Ou mesmo o seu código, por favor.
Consegui resolver, muito obrigado!!