import pandas as pd
import numpy as np
import random
import io
econdata = pd.read_csv('/work/econdata.csv')
econdata.head(5)
aleat_8 = econdata.sample(n = 8)
aleat_8
aleat_8_2 = econdata.sample(n=8)
aleat_8_2
prop_25 = econdata.sample(frac = .25)
prop_25.head()
def systematic_sampling(econdata,step):
indexes = np.arange(0,len(econdata),step=step)
systematic_sample = econdata.iloc[indexes]
return systematic_sample
systematic_sample = systematic_sampling(econdata,3)
systematic_sample
econdata['estratificado'] = econdata['delegacion'] + "," + econdata['tipo']
(econdata['estratificado'].value_counts()/len(econdata)).sort_values(ascending = False)
def data_estratificada(econdata, nombres_columnas_estrat, valores_estrat, prop_estrat, random_state=None):
df_estrat = pd.DataFrame(columns = econdata.columns) # Creamos un data frame vacío con los nombres de las columnas de econdata
pos = -1
for i in range(len(valores_estrat)): # iteración sobre los valores estratificados
pos += 1
if pos == len(valores_estrat) - 1:
ratio_len = len(econdata) - len(df_estrat) # si es la iteración final calcula el número de valores de salida tenga el mismo número de filas que de entrada
else:
ratio_len = int(len(econdata) * prop_estrat[i]) # calcula el número de filas según la proporción deseada
df_filtrado = econdata[econdata[nombres_columnas_estrat] ==valores_estrat[i]] # filtra los datos de origen según los valores seleccionados en la estratificación de datos
df_temp = df_filtrado.sample(replace=True, n=ratio_len, random_state=random_state) # haz un sample de los datos filtrados usando la ratio que hemos calculado
df_estrat = pd.concat([df_estrat, df_temp]) # junta las tablas de sample con la estratificada para producir el resultado final
return df_estrat # Return the stratified, re-sampled data
valores_estrat = ['Cuautémoc,Hotel', 'Cuautémoc,Museo', 'Venustiano Carranza,Hotel', 'Cuauhtémoc,Mercado','Venustiano Carranza,Mercado']
prop_estrat = [0.5, 0.2, 0.1, 0.1,0.1]
df_estrat = data_estratificada(econdata, 'estratificado', valores_estrat, prop_estrat, random_state=42)
df_estrat