Panda Python - Dati categoriali
Spesso in tempo reale, i dati includono le colonne di testo, che sono ripetitive. Funzionalità come sesso, paese e codici sono sempre ripetitive. Questi sono gli esempi per i dati categoriali.
Le variabili categoriali possono assumere solo un numero limitato e solitamente fisso di valori possibili. Oltre alla lunghezza fissa, i dati categoriali potrebbero avere un ordine ma non possono eseguire operazioni numeriche. Le categorie sono un tipo di dati Panda.
Il tipo di dati categoriale è utile nei seguenti casi:
Una variabile stringa composta solo da pochi valori diversi. La conversione di una tale variabile di stringa in una variabile categoriale farà risparmiare un po 'di memoria.
L'ordine lessicale di una variabile non è lo stesso dell'ordine logico ("uno", "due", "tre"). Convertendo in un categoriale e specificando un ordine sulle categorie, l'ordinamento e min / max utilizzeranno l'ordine logico anziché l'ordine lessicale.
Come segnale ad altre librerie python che questa colonna dovrebbe essere trattata come una variabile categoriale (ad esempio per utilizzare metodi statistici o tipi di grafici adatti).
Creazione di oggetti
L'oggetto categoriale può essere creato in più modi. I diversi modi sono stati descritti di seguito:
categoria
Specificando il dtype come "categoria" nella creazione di oggetti panda.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print s
Suo output è il seguente -
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a, b, c]
Il numero di elementi passati all'oggetto serie è quattro, ma le categorie sono solo tre. Osserva lo stesso nelle categorie di output.
pd.Categorical
Utilizzando il costruttore categorico panda standard, possiamo creare un oggetto categoria.
pandas.Categorical(values, categories, ordered)
Facciamo un esempio:
import pandas as pd
cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
print cat
Suo output è il seguente -
[a, b, c, a, b, c]
Categories (3, object): [a, b, c]
Facciamo un altro esempio:
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
print cat
Suo output è il seguente -
[a, b, c, a, b, c, NaN]
Categories (3, object): [c, b, a]
Qui, il secondo argomento indica le categorie. Pertanto, qualsiasi valore che non è presente nelle categorie verrà trattato comeNaN.
Ora, dai un'occhiata al seguente esempio:
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'],ordered=True)
print cat
Suo output è il seguente -
[a, b, c, a, b, c, NaN]
Categories (3, object): [c < b < a]
Logicamente, l'ordine significa che, a è più grande di b e b è più grande di c.
Descrizione
Usando il .describe() comando sui dati categoriali, otteniamo un output simile a un file Series o DataFrame del type corda.
import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})
print df.describe()
print df["cat"].describe()
Suo output è il seguente -
cat s
count 3 3
unique 2 2
top c c
freq 2 2
count 3
unique 2
top c
freq 2
Name: cat, dtype: object
Ottieni le proprietà della categoria
obj.cat.categories comando viene utilizzato per ottenere il file categories of the object.
import pandas as pd
import numpy as np
s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print s.categories
Suo output è il seguente -
Index([u'b', u'a', u'c'], dtype='object')
obj.ordered comando viene utilizzato per ottenere l'ordine dell'oggetto.
import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print cat.ordered
Suo output è il seguente -
False
La funzione è stata restituita false perché non abbiamo specificato alcun ordine.
Rinominare le categorie
La ridenominazione delle categorie viene eseguita assegnando nuovi valori al file series.cat.categoriesproprietà series.cat.categories.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
s.cat.categories = ["Group %s" % g for g in s.cat.categories]
print s.cat.categories
Suo output è il seguente -
Index([u'Group a', u'Group b', u'Group c'], dtype='object')
Categorie iniziali [a,b,c] vengono aggiornati da s.cat.categories proprietà dell'oggetto.
Aggiunta di nuove categorie
Utilizzando il metodo Categorical.add.categories (), è possibile aggiungere nuove categorie.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
s = s.cat.add_categories([4])
print s.cat.categories
Suo output è il seguente -
Index([u'a', u'b', u'c', 4], dtype='object')
Rimozione di categorie
Usando il Categorical.remove_categories() metodo, le categorie indesiderate possono essere rimosse.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print ("Original object:")
print s
print ("After removal:")
print s.cat.remove_categories("a")
Suo output è il seguente -
Original object:
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a, b, c]
After removal:
0 NaN
1 b
2 c
3 NaN
dtype: category
Categories (2, object): [b, c]
Confronto di dati categoriali
Il confronto dei dati categoriali con altri oggetti è possibile in tre casi:
confrontando l'uguaglianza (== e! =) con un oggetto tipo lista (lista, serie, matrice, ...) della stessa lunghezza dei dati categoriali.
tutti i confronti (==,! =,>,> =, <e <=) di dati categoriali con un'altra Serie categoriale, se ordinati == True e le categorie sono le stesse.
tutti i confronti di un dato categoriale con uno scalare.
Dai un'occhiata al seguente esempio:
import pandas as pd
cat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)
cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)
print cat>cat1
Suo output è il seguente -
0 False
1 False
2 True
dtype: bool