Ho bisogno di convertire una colonna di variabili categoriali in un frame di dati di Pandas in un valore numerico che corrisponde all'indice in una matrice delle variabili categoriali univoche nella colonna (! lunga storia) ed ecco un frammento di codice che riesce a far questo:Python - Velocizza la conversione di una variabile categoriale nel suo indice numerico
import pandas as pd
import numpy as np
d = {'col': ["baked","beans","baked","baked","beans"]}
df = pd.DataFrame(data=d)
uniq_lab = np.unique(df['col'])
for lab in uniq_lab:
df['col'].replace(lab,np.where(uniq_lab == lab)[0][0].astype(float),inplace=True)
che converte il frame di dati:
col
0 baked
1 beans
2 baked
3 baked
4 beans
nella cornice di dati:
col
0 0.0
1 1.0
2 0.0
3 0.0
4 1.0
come desiderato. Ma il mio problema è che il mio stupido loop per il ciclo (l'unico modo in cui ho pensato di farlo) è lento come melassa quando provo a eseguire un codice simile su file di big data. Ero solo curioso di sapere se qualcuno avesse qualche idea sul fatto che ci fossero dei modi per farlo in modo più efficiente. Grazie in anticipo per ogni pensiero.
Se avessi saputo panda di più, avrei apprezzato più forse, ma anche questo funziona! Forse fare qualcosa come 'idx, _ = pd.factorize (df.col)' e forse potrebbe essere un po 'più veloce? Ancora una volta, è una sensazione istintiva :) – Divakar
Spero di iniziare una volta a imparare "numpy" - c'è una funzione molto bella ed è più veloce. Grazie. Sì, esattamente, farò dei test. – jezrael
Hmmm, interessante, in grandi 'df'' pandas' è più veloce come 'numpy'. – jezrael