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])