PANDAS

General resources

PANDAS

https://medium.com/dunder-data/minimally-sufficient-pandas-a8e67f2a2428

TL;DR

Gui for Pandas = Bamboolib PARA QUE SE VEAN TODAS LAS FILAS O COLUMNAS pd.options.display.max_columns = 500 pd.options.display.max_rows = 500

BASICS

df.info
df.dtypes = ver tipos de cada columna
df.describe() = te da media, etc de cada columna
df.groupby

df.groupby(by=df['Incident Date'].dt.hour)

len(df) = da el nmero de filas (training samples) df.shape


Para aplicar una funcion a un dataset

def funcion(x):
df['columna'].apply(funcion)

Es lo mismo que

df['columna'].apply(lambda x: 0. if '-' in str(x) else x)


Seleccionar una columna
df['state']

o tambien
df.state

(lo unico que esto solo si no tiene espacios y no es igual que un nombre de un metodo. NO USAR)

Tipos de datos

Seleccionar filas por etiqueta o por localizacion:

NO USAR AT e IAT

.loc
	df.loc[row_selection, column_selection]
	df.loc[['Dean', 'Cornelia'], ['age', 'state', 'score']] 
		# The .loc indexer simultaneously select subsets of rows and columns by the LABEL. 
		INCLUYE EL ULTIMO VALOR (no como un rango de python)
	>>> df.loc['Niko':'Dean'] (incluye de fila Niko hasta Dean)
	>>> df.loc['Niko':'Christina':2] # stepping by 2

No recomendado usar df[inicio:fin] para elegir filas, mejor usar .loc o .iloc

Using .iloc and .loc is explicit and clearly tells the person reading the code what is going to happen. Let’s rewrite the above using .iloc and .loc. » df.iloc[3:6] # More explicit that df[3:6]

Seleccionar varios con doble corchete:

read_csv y read_table es lo mismo, mejor usar read_csv read_csv (sep=, decimal=)

isna-isnull and notna-notnull nos dan un df con valores booleanos.

dropna() nos elimina las filas NA sats = college_idx[[‘satmtmid’, ‘satvrmid’]].dropna()

Copiar un df Por defecto df2 = df1 si modificas algo en uno cambia en el otro hay que hacer df2 = df1.copy()

**map** sirve para hacer transformaciones de datos You first define a dictionary with ‘keys’ being the old values and ‘values’ being the new values. level_map = {1: ‘high’, 2: ‘medium’, 3: ‘low’} df[‘c_level’] = df[‘c’].map(level_map)

**cut** Para crear bins (intervalos discretos) Ej: pd.cut(df[‘Age’], 3, labels=[‘low’,’mid’,’high’])

**pivot_table** crea tablas pivotadas tipo excel

COMBINAR DATASETS Ref

Inner join: solo une lo que esté en los dos Left/right: todo lo del izquierdo y la parte comun del derecho Outer join: todo lo de los dos (aunque falte en el otro).

Modificar df desde jupyter notebook con qgrid https://medium.com/@williams.evanpaul/edit-pandas-dataframes-within-jupyterlab-36f129129496

Panda avanzado: idxmax, idxmin() = devuelve la posicion (index) del minimo-maximo ne(valor) = devuelve True si el valor es el que has puesto, sino False nsmallest, nlargest(numero, ‘columna’) = devuelve los x valores menores-mayores de una columna

A partir de pandas 1, se puede convertir una columna en markdown:

pip install tabulate #requisito
df.to_markdown()

NUMPY

np.where() = devuelve el indice de los elementos que cumplan una condicion: np.where(grades >6)

Tambien se puede usar para cambiar los que cumplen la condicion y los que no np.where(grades>3, 'si', 'no)

argmin, argmax() devuelve los indices con los valores minimos o maximos

argsort() devuelve los indices ordenados de menos a mayor

intersect1d() crea una combinacion de elementos comune sde dos array (no el index sino el valor)

allclose() comprueba si dos arrays son similares según un umbral de tolerancia np.allclose(arr1,arr2,0.1)

ANACONDA

Conda cheatsheet:

JUPYTER

JUPYTER-NOTEBOOK

EXTENSIONES JUPYTER

conda install -c conda-forge jupyter_nbextensions_configurator ipywidgets nodejs jupyterlab

MEJORES EXTENSIONES JUPYTER

No usadas:

https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/ https://medium.com/swlh/some-neat-jupyter-tricks-be0775c3f17

Documentacion facil ?str.replace()

Multicursor = Arrastrar el mouse apretando alt para cambiar multiples cursres

Exportar con otro formato un ipynb con nbconvert jupyter nbconvert –to my_format my_notebook.ipynb

DEBUGGING https://twitter.com/radekosmulski/status/945739571735748609 Tras una excepción, en una nueva celda escribe %debug Esto mostrará un depurador interactivo: • si escribimos help muestra superpoderes • up nos lleva a un nivel más alto podemos integrarlo dentro de una funcion de esta forma:

from IPython.core.debugger import set_trace
def full_speed_ahead_from_script(direction='N'):
    set_trace()
    pass

JUPYTER-LAB

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions.html https://towardsdatascience.com/3-must-have-jupyterlab-2-0-extensions-41024fe455cc

EXTENSIONES JUPYTERLAB

OTRAS

Tambien se puede usar el comando uninstall, update, disable

Basico https://towardsdatascience.com/jupyter-lab-evolution-of-the-jupyter-notebook-5297cacde6b

Aprender en Jupyterlab a abrir varios archivos y compartir variables https://towardsdatascience.com/jupyterlab-a-next-gen-python-data-science-ide-562d216b023d

Usar otro kernel Use kernel from > la otra abierta

UTILIDADES

Data science workflow

VISUALIZATION

MATPLOTLIB

Está en onenote

https://medium.com/@kapil.mathur1987/matplotlib-an-introduction-to-its-object-oriented-interface-a318b1530aed

Cheatsheet matplotlib https://github.com/rougier/matplotlib-cheatsheet

Libro de visualizacion del mismo autor https://github.com/rougier/scientific-visualization-book

SEABORN

https://medium.com/@neuralnets/statistical-data-visualization-series-with-python-and-seaborn-for-data-science-5a73b128851d

Part 1 — Loading Datasets and Controlling Aesthetics Part 2 — More on Aesthetics and comparison with Matplotlib Part 3— Color Palettes Part 4— Regression Plots (LM Plot and Reg Plot) Part 5— Linear Data (Scatter plot and Joint Plots) Part 6— Additional Regression Plots Part 7— Categorical Data Plots https://medium.com/@mukul.mschauhan/data-visualisation-using-seaborn-464b7c0e5122

import seaborn as sns acuerdate que pd.describe() te hace un resumen del dataset (es como summary en R)

sns.set –> lo primero que hay que poner sns.stripplot –> para valores categoricos sns.barplot –> barras sns.pairplot – visualización por pares corr = df.corr() sns.hearmap(corr, mask=, cmmap=, vmax=)

sns.set_style() –> para cambiar el estilo del grafico whitegrid cambia el fondo y lo pone blanco
ticks pone marquitas en el lateral y cierra en una caja sns.despine() deja el grafico solo con barra izquierda y abajo

sns.axes_style()

BOKEH – VISUALIZACION INTERACTIVA https://towardsdatascience.com/data-visualization-with-bokeh-in-python-part-one-getting-started-a11655a467d4 Puedes ir cambiando con deslizadores las herramientas

PLOTLY

Crea graficos sofisticados interactivos (util para visualizar datos cruzados) https://towardsdatascience.com/the-easy-way-to-do-advanced-data-visualisation-for-data-scientists-bbc852e26fb6 https://towardsdatascience.com/its-2019-make-your-data-visualizations-interactive-with-plotly-b361e7d45dc6

ALTAIR

Visualización interactiva mejor que seaborn y matplotlib

IPYVOLUME

Para visualizar volumenes en 3D

PYDOT

Para crear algoritmos y graficos de nodos etc en py

BASHPLOTLIB

Para hacer graficos en la consola

COLORAMA

Colorea la terminal

ORANGE

Visualizacion interactiva basada en interfaz grafica (más potente y compleja). https://towardsdatascience.com/data-science-made-easy-interactive-data-visualization-using-orange-de8d5f6b7f2b