Nueva entrada dedicada al **data management con Python** , esta vez con datatable. No voy a justificar el uso de datatableantes quepandas, en un vistazo rápido por la web encontráis numerosas ocasiones en las que datatablees más eficiente quepandasen el manejo de datos conPython. En cuanto a la complejidad en el uso de uno u otro mi opinión no es objetiva porque me cuesta mucho trabajar con Pandas`.
Asumo que habéis instalado datatable en vuestro entorno de Python (siempre por encima de la versión 3.5) y una vez está instalado os propongo obtener un conjunto de datos del repositorio de analisisydecision. Por supuesto la carga de este csv de ejemplo la realizamos con datatable y la función fread:
import datatable as dt
path = 'https://raw.githubusercontent.com/analisisydecision/intro_python_data_science/master/'
dt_df = dt.fread(path + 'index.csv')
dt_df.head()
dt_df.shape
Hemos creado un data frame con datatable, podremos pasarlo a lista o a data frame en pandas con ``.to_pandas(). En la línea de siempre las tareas que vamos a revisar con datatableenPython` son:
- Seleccionar columnas
- Eliminar columnas
- Seleccionar registros
- Crear nuevas variables
- Sumarizar datos
- Renombrar variables
- Ordenar datos
Seleccionar columnas
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
Siempre sugiero usar listas:
seleccionadas =['Occupation','No of dependents']
df2 = dt_df[:, seleccionadas]
df2.head(5)
Eliminar columnas
elimina = ['Creditability','Account Balance']
del dt_df[:, elimina]
dt_df.head()
Seleccionar registros
Primer ejemplo en el que usamos la variable de datatable f que nos permite referenciar elementos del data frame, veamos algunos ejemplos:
df4 = dt_df[dt.f['Duration of Credit (month)'] == 12, :]
df4.view()
df4 = dt_df[dt.f['Duration of Credit (month)'] != 12, :]
df4.head(5)
Empleamos paréntesis para condiciones más complejas:
df5 = dt_df[(dt.f['Duration of Credit (month)'] == 12) & (dt.f['Credit Amount']<=1500), :]
df5.head(5)
Podemos referenciar variables con la notación punto:
df5 = dt_df[(dt.f['Duration of Credit (month)'] != 12) & (dt.f.Occupation == 3), :]
df5.head(5)
df6 = dt_df[(dt.f.Purpose != 0) | (dt.f.Occupation == 3), :]
df6.head(5)
Creación de nuevas variables
media = dt_df['Credit Amount'].`mean()`
dt_df['`dist_media`'] = dt_df[:, dt.f['Credit Amount']/media]
dt_df.head(5)
En datatable disponemos de la función ifelse para crear variables en base a condiciones:
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
0
Sumarizar datos
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
1
Sumarizamos múltiples columnas:
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
2
Renombrar una columna
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
3
Ordenar datos
Orden ascendente:
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
4
Orden descendente:
df2 = dt_df[:,['Occupation','No of dependents']]
df2.head(5)
5
En pocas líneas resumidas las principales tareas con datos con Python datatable. Saludos.