Saltar al contenido principal

3 publicaciones etiquetados con "pandas"

Ver Todas las Etiquetas

· Lectura de un minuto

pivot

Alt text

df.pivot(index='foo', columns='bar', values='baz')
df.pivot_table(index='foo', columns='bar', values='baz', aggfunc='sum')

melt

Alt text

df3.melt(id_vars=['first', 'last'], var_name='variable', 
value_name='value')
df3.melt(id_vars=['first', 'last'], var_name='variable',
value_name='value', value_vars=['height', 'weight'])

Wide to long

Alt text

pd.wide_to_long(df, stubnames=['age', 'weight'], i=['name'], 
j='year')
# format age_2019
pd.wide_to_long(df, stubnames=['age', 'weight'], i=['name'],
j='year', sep='_', suffix='\w+')

· 2 min de lectura
Darvin Cotrina
import numpy as np
import pandas as pd
from scipy import stats

Muestreo aleatorio

np.random.random(10)
np.random.randint(0, 100, 10)
colors = ['red', 'blue', 'green']
np.random.choice(colors, 10)

Con reemplazo

np.random.choice(colors, 10, replace=True)

Distribucion normal

parametros: μ\mu media, σ\sigma desviacion estandar y nn tamaño de la muestra

np.random.normal(0, 1, 10)
stats.norm.rvs(0, 1, 10)

Distribucion uniforme

parametros: aa minimo, bb maximo y nn tamaño de la muestra

np.random.uniform(0, 1, 10)
stats.uniform.rvs(0, 1, 10)

Distribucion binomial

parametros: nn numero de ensayos, pp probabilidad de exito y nn tamaño de la muestra

np.random.binomial(10, 0.5, 10)
stats.binom.rvs(10, 0.5, 10)

Distribucion poisson

parametros: λ\lambda tasa de ocurrencia y nn tamaño de la muestra

np.random.poisson(10, 10)
stats.poisson.rvs(10, 10)

Distribucion exponencial

parametros: λ\lambda tasa de ocurrencia y nn tamaño de la muestra

np.random.exponential(10, 10)
stats.expon.rvs(10, 10)

Muestreo estratificado

df = pd.DataFrame({
'sexo': np.random.choice(['M', 'F'], 100),
'edad': np.random.randint(18, 65, 100),
'estado_civil': np.random.choice(['S', 'C', 'D', 'V'], 100),
'ingreso': np.random.randint(1000, 10000, 100)
})

df.groupby('sexo').apply(lambda x: x.sample(10))

Muestreo sistematico

df = pd.DataFrame({
'sexo': np.random.choice(['M', 'F'], 100),
'edad': np.random.randint(18, 65, 100),
'estado_civil': np.random.choice(['S', 'C', 'D', 'V'], 100),
'ingreso': np.random.randint(1000, 10000, 100)
})

df.iloc[::10] # selecciona cada 10 filas

· 2 min de lectura
Darvin Cotrina

Flat files

CSV

import pandas as pd
# puede ser un file o una url
pd.read_csv('file.csv')
pd.read_csv('file.txt', sep='\t')

Excel

import pandas as pd
# puede ser un file o una url
# en caso de que sheetname, no este asignado, se lee la primera hoja
xls = pd.ExcelFile('file.xlsx', sheetname=None) # Leer todas las hojas
xls.keys() # Nombre de las hojas
xls['sheet'] # Leer hoja

SAS

from sas7bdat import SAS7BDAT
with SAS7BDAT('file.sas7bdat') as file:
df_sas = file.to_data_frame()

Stata

import pandas as pd
# puede ser un file o una url
df = pd.read_stata('file.dta')

HDF5

Los archivos HDF5 son una buena opción para guardar grandes cantidades de datos. Se pueden leer con la librería h5py

import h5py
data = h5py.File('file.hdf5', 'r')
data.keys() # Nombre de los grupos

group = data['group'] # Leer grupo
group.keys() # Nombre de los datasets

dataset = group['dataset'] # Leer dataset
dataset.shape # Dimensiones
dataset.value # Valores

Matlab

import scipy.io
mat = scipy.io.loadmat('file.mat')

Pickled files

Los archivos pickled son archivos binarios de Python. Se pueden leer con la librería pickle

import pickle
with open('file.pkl', 'rb') as file:
data = pickle.load(file)

SQL

from sqlalchemy import create_engine
engine = create_engine('sqlite:///file.sqlite')
table_names = engine.table_names() # Nombre de las tablas

with engine.connect() as con:
rs = con.execute('SELECT * FROM table')
df = pd.DataFrame(rs.fetchall())
df.columns = rs.keys()

Con Pandas

import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('sqlite:///file.sqlite')

df = pd.read_sql_query('SELECT * FROM table', engine)