get_dummies consente di convertire una variabile categoriale in variabili fittizie. Oltre al fatto che è banale ricostruire la variabile categoriale, c'è un modo preferito/veloce per farlo?Ricostruisci una variabile categoriale dai manichini nei panda
9
A
risposta
6
In [46]: s = Series(list('aaabbbccddefgh')).astype('category')
In [47]: s
Out[47]:
0 a
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 e
11 f
12 g
13 h
dtype: category
Categories (8, object): [a < b < c < d < e < f < g < h]
In [48]: df = pd.get_dummies(s)
In [49]: df
Out[49]:
a b c d e f g h
0 1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0
3 0 1 0 0 0 0 0 0
4 0 1 0 0 0 0 0 0
5 0 1 0 0 0 0 0 0
6 0 0 1 0 0 0 0 0
7 0 0 1 0 0 0 0 0
8 0 0 0 1 0 0 0 0
9 0 0 0 1 0 0 0 0
10 0 0 0 0 1 0 0 0
11 0 0 0 0 0 1 0 0
12 0 0 0 0 0 0 1 0
13 0 0 0 0 0 0 0 1
In [50]: x = df.stack()
# I don't think you actually need to specify ALL of the categories here, as by definition
# they are in the dummy matrix to start (and hence the column index)
In [51]: Series(pd.Categorical(x[x!=0].index.get_level_values(1)))
Out[51]:
0 a
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 e
11 f
12 g
13 h
Name: level_1, dtype: category
Categories (8, object): [a < b < c < d < e < f < g < h]
Quindi penso che abbiamo bisogno di una funzione per 'fare' questo come sembra essere un'operazione naturale. Forse get_categories()
, vedi here
6
Sono passati alcuni anni, quindi questo potrebbe non essere stata in pandas
toolkit indietro quando questa domanda è stato originariamente chiesto, ma questo approccio sembra un po 'più facile per me. idxmax
restituirà l'indice corrispondente all'elemento più grande (ad esempio quello con 1
). Facciamo axis=1
perché vogliamo il nome della colonna dove si verifica lo 1
.
EDIT: Non mi sono preoccupato di renderlo categorico invece di una semplice stringa, ma lo si può fare allo stesso modo di @Jeff spostandolo con pd.Categorical
(e pd.Series
, se lo si desidera).
In [1]: import pandas as pd
In [2]: s = pd.Series(['a', 'b', 'a', 'c'])
In [3]: s
Out[3]:
0 a
1 b
2 a
3 c
dtype: object
In [4]: dummies = pd.get_dummies(s)
In [5]: dummies
Out[5]:
a b c
0 1 0 0
1 0 1 0
2 1 0 0
3 0 0 1
In [6]: s2 = dummies.idxmax(axis=1)
In [7]: s2
Out[7]:
0 a
1 b
2 a
3 c
dtype: object
In [8]: (s2 == s).all()
Out[8]: True
Problemi correlati
- 1. Panda - Trova manichini solo per determinati valori
- 2. lasciando cadere valori infiniti dai dataframes nei panda?
- 3. come tracciare gli istogrammi dai dataframes nei panda
- 4. Appiattimento di una matrice nei panda
- 5. Sostituzione condizionale nei panda
- 6. variabili dummy per singola variabile categoriale (fattore) in R
- 7. Rimozione della colonna dell'indice nei panda
- 8. R: creazione di una variabile categoriale da una variabile numerica e intervalli personalizzati/aperti/a valore singolo
- 9. incremento una variabile nei modelli di Django
- 10. Come rappresentare un predatore rtor categoriale?
- 11. Python - Velocizza la conversione di una variabile categoriale nel suo indice numerico
- 12. Come trasformare una variabile categoriale in Spark in un insieme di colonne codificate come {0,1}?
- 13. Come selezionare tutte le colonne, tranne una colonna nei panda?
- 14. Quadrato di ogni elemento di una colonna nei panda
- 15. Dividere una serie su intervalli di tempo nei panda?
- 16. Come mappare una funzione utilizzando più colonne nei panda?
- 17. Come convertire colonne in una colonna datetime nei panda?
- 18. spiegazione Minimax "per i manichini"
- 19. Visual Studio "Ricostruisci tutto fallito"
- 20. Boxplot in serie temporali nei panda
- 21. Utilizzo memoria elevata per manichini
- 22. Espansione variabile nei commenti
- 23. In loop su un MultiIndex nei panda
- 24. Righe concatenate di due dataframes nei panda
- 25. Panda: rimuovere il gruppo dai dati quando un valore nel gruppo soddisfa una condizione richiesta
- 26. Applicare la funzione con args nei panda
- 27. Ricerca contenuto, Ricostruisci indice Errore
- 28. Media riga di riga nei panda
- 29. Creazione di bucket percentili nei panda
- 30. Come ottenere un valore variabile dai file Ambiente in Phoenix?