Basic steps API reference for the libraries - nachoperassi/machineLearningDocs GitHub Wiki

Si este documento resulta insuficiente, puedes consultar: Pandas: ejemplos prácticos. Pandas: data structures.

Imports básicos:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Mostrar plots en el notebook:

%matplotlib inline

Pandas Data Structures:

DataFrame -> collection of Series Series -> collection of scalars (básicamente, un array)

Preparación del dataset.

Leer csv en un DataFrame:

df = pd.read_csv('dataset.csv')

Renombrar columnas para un mejor uso:

BETTER_COLUMN_NAMES = {
    'NombreUno': 'nombre_uno',
    'Nombre_2': 'nombre_dos',
    'Nombre-Tres': 'nombre_tres',
}

df.rename(columns=BETTER_COLUMN_NAMES, inplace=True)

Elegir la columna/serie que será el id:

df.set_index('column_name', inplace=True)

Rellenar los nulos de una columna con el promedio de dicha columna

df['column_name'].fillna(df.column_name.mean(), inplace=True)

Rellenar los nulos de una columna con un valor específico

df['column_name'].fillna('valor', inplace=True)

Descartar las filas donde haya algun nulo

df.dropna(how='any')

ordenar los datos según una columna:

df.sort_values(by= 'column_name')

copiar df

df2 = df.copy()

Descripcion general de los datos

Ver los tipos de dato de cada columna

df.dtypes

Cantidad de filas y columnas

df.shape

Primeras y ultimas filas

df.head(n)
df.tail(n)

Ver los diferentes valores existentes en una columna con su cantidad de ocurrencias:

df.column_name.value_counts()

Ver la cantidad de valores diferentes que existen en una columna (numero de valores diferentes):

df.column_name.nunique()

Ver la lista de dichos valores:

df.column_name.unique()

Indices:

df.index

Columnas:

df.columns

Pequeña estadistica de los datos:

df.describe()

Media de cada columna/serie

df.mean()

Cantidad de nulos en cada columna:

df.isnull().sum()

Seleccionar data:

Seleccionar una unica columna (es decir, obtener una serie)

df.column_name o df['column_name']

Seleccionar filtrando por una condicion sobre una columna

df[df.column_name == 'algo'] df[df.column_name > numero]

df[df.column_name.isin(['value1', 'value2'])]

Setear data:

Setear valor en donde se cumpla condicion

df[df > 0] = 'valor'

Setear valor en una columna segun se cumpla una condicion en otra columna

df.loc[df.column1 == 'valor, 'column2'] = 'valor2'

df['new_col'] = df.existing_col == 'value'

Ploteando cosas:

Plotear en un grafico de torta los diferentes valores que posee una columna (util para observar los porcentajes de cada valor)

df.column_name.value_counts().plot.pie(autopct='%1.0f%%', figsize=(x,y))

Plotear tantos gráficos como valores diferentes haya en una columna:

fig, axes = plt.subplots(nrows=1, ncols= df.column_name.nunique(), figsize=(x,y))

Plotear los diferentes valores que toma una columna (y sus porcentajes) habiendo filtrado previamente por otra columna

for c, i in zip(np.sort(df.column_name.unique()), range(3)):
    df[df.column_name == c].column_name2.value_counts().sort_index().plot.pie(autopct='%1.0f%%', ax=axes[i])
    axes[i].set_title(c)

Plotear en un grafico de barras los diferentes valores de una columna y su numero de ocurrencias:

f, ax = plt.subplots(1, 3, figsize = (x,y))

ax[0].set_title('titulo')

df.column_name.value_counts().sort_index().plot.bar(ax=ax[0])

Plotear, para cada valor de una columna, el porcentaje que aplica a una condicion de otra columna:

Ej: porcentaje de mujeres de mas de 30 años, porcentaje de hombres de mas de 30 años

ax[2].set_title('titulo')

(df[df.column1 == 'value'].column2.value_counts().sort_index() / df.column2.value_counts().sort_index()).plot.bar(ax=ax[2])