No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

隆Se acaba el precio especial! Aprende Ingl茅s, AI, programaci贸n y m谩s.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

1 D铆as
8 Hrs
25 Min
19 Seg

Conociendo datasets para manejo de datos faltantes

3/21
Recursos
https://nrvis.com/data/mldata/pima-indians-diabetes.csv

names=[
        "pregnancies",
        "glucose",
        "blood_pressure",
        "skin_thickness",
        "insulin",
        "bmi",
        "diabetes_pedigree_function",
        "age",
        "outcome",
    ]

Aportes 30

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Si depronto alguien lo esta haciendo en jupyter notebook y le sale que no reconoce al comando wget, la libreria urllb puede hacer lo mismo que wget
Primer paso crea la carpeta data
2.

import urllib.request
url = pima_indians_diabetes_url
filename = "./data/pima-indians-diabetes.csv"
urllib.request.urlretrieve(url, filename)

Conociendo nuestro datasets para manejo de datos faltantes

Descarga de archivos mediante una URL en el Notebooks

  • Guardar la url en una variable
nombre_variable = "URL"
  • Utiliza la linea de comandos desde el notebooks para descargar los datos
!wget -O ./data/pima-indians-diabetes.csv { nombre_variable } -q
#!linea de comandos
# wget-comando para descargar datos
# -O 
# ruta para almacenar los datos + nombre
# {URL} 
# -q para que no muestre la descarga

Descarga de varios archivos desde una URL

  • Crea unidades de informacion de los conjuntos de Datos
#Guarda la URL en una variable
base_url = "https://github.com/njtierney/naniar/raw/master/data/"
#Guarda los nombres de los archivos a descargar en una lista 
datasets_names = ("oceanbuoys", "pedestrian", "riskfactors")
#Guarda la extension de los archivos en una variable
extension = ".rda"
  • Descarga y carga los conjuntos de datos en un dataset
datasets_dfs = {} # diccionario para almacenar lor archivos

for dataset_name in datasets_names:

    dataset_file = f"{ dataset_name }{ extension }"
    dataset_output_file = f"./data/{ dataset_file }"
    dataset_url = f"{ base_url }{ dataset_file }"
    
    !wget -q -O { dataset_output_file } { dataset_url } #linea de comando para descargar

    datasets_dfs[f"{ dataset_name }_df"] = pyreadr.read_r(dataset_output_file).get(dataset_name)

datasets_dfs.keys()
  • Incluir el conjunto de datos en nuestro ambiente local
locals().update(**datasets_dfs)
del datasets_dfs
  • Verificar que hayan cargado
oceanbuoys_df.shape, pedestrian_df.shape, riskfactors_df.shape, diabetes_df.shape

No son buenos los cursos que utilizan deepnote, la herramienta no es tan escalable en un ambiene laboral y el manejo es complejo.

Copien y peguen

base_url = "https://github.com/njtierney/naniar/raw/master/data/"
datasets_names = ("oceanbuoys", "pedestrian", "riskfactors")
extension = ".rda"

Comparto como hice para descargar los datasets tanto .csv y .rda desde la url usando el m贸dulo requests:

  • Instalar el modulo requests:
pip install requests
  • C贸digo:
import requests
pima_indians_diabetes_url = "https://nrvis.com/data/mldata/pima-indians-diabetes.csv"
response = requests.get(pima_indians_diabetes_url)
if response.status_code == 200:
    with open(f"./data/{pima_indians_diabetes_url.split('/')[-1]}", "wb") as file:
        file.write(response.content)

Para descargar los dem谩s datasets:

  • Creando unidades de informacio贸n de los conjuntos de datos:
base_url = "https://github.com/njtierney/naniar/raw/master/data/"
datasets_names = ("oceanbuoys", "pedestrian", "riskfactors")
extension = ".rda"
  • Funci贸n para descargar los datasets .rda:

    • Funcion que descarga un dataset dado la url (dataset_url) y ruta relativa del archivo donde se va guardar
    def download_data(dataset_url, dataset_output_file ):
    response = requests.get(dataset_url)
    if response.status_code == 200:
        with open(f"{dataset_output_file}", "wb") as file:
            file.write(response.content)
    print(f"{dataset_url.split('/')[-1]} descargado en {dataset_output_file}")
    
    • Funcion que descarga todos los datasets
    datasets_dfs = {}
    for dataset_name in datasets_names:
     dataset_file = f"{ dataset_name }{ extension }"
    	dataset_output_file = f"./data/{ dataset_file }"
    	dataset_url = f"{ base_url }{ dataset_file }"
    	# !wget -q -O { dataset_output_file } { dataset_url }
    	download_data(dataset_url, dataset_output_file )
    	datasets_dfs[f"{ dataset_name }_df"] = pyreadr.read_r(dataset_output_file).get(dataset_name)
    datasets_dfs.keys()
    

Nota: Para descargar el archivo pima-indians-diabetes.csv con la funcion:

pima_indians_diabetes_url = "https://nrvis.com/data/mldata/pima-indians-diabetes.csv"
download_data(pima_indians_diabetes_url, f"./data/{pima_indians_diabetes_url.split('/')[-1]}")

Me encantan los cursos de Jes煤s, siempre nos ense帽a herramientas nuevas en sus cursos. Presenta el contenido del curso y siempre aporta un valor adicional.

Usar variables entre diferentes Notebooks

%store {variable}


Tengo diferentes Notebooks para mantener el orden. No sabia como importar los dataframes entre cada Notebook sin tener que llamarlos cada que empezaba un cuaderno nuevo. Esa fue la solucion que encontre.

Ejemplo:

%store diabetes_df

y ahora solo llamo a la variable en el otro notebook y listo.
Tambien ejecuto este comando a inicio de cada notebook para asegurarme de que las variables se carguen correctamente.

%store -r

Es para refrescar la lista de variables guardadas

Para descargar y cargar varios conjuntos de datos con wget en un bucle for:

datasets_dfs = {}

for dataset_name in datasets_names:

    dataset_file = f"{ dataset_name }{ extension }"
    dataset_output_file = f"./data/{ dataset_file }"
    dataset_url = f"{ base_url }{ dataset_file }"
    
    wget.download(dataset_url, dataset_output_file )
    ##!wget -q -O { dataset_output_file } { dataset_url }

    datasets_dfs[f"{ dataset_name }_df"] = pyreadr.read_r(dataset_output_file).get(dataset_name)

datasets_dfs.keys()
**12 de Marzo 2024 (Cargar datasets en Collab)** Despues de casi rendirme y cargar los archivos de una manera muy poco digna de este mundo del c贸digo, al final de leer los comentarios y probar varias cosas d铆 con la soluci贸n. Cabe resaltar que no soy un experto y utilizo Collab por lo practico que se me hace la herramienta a diferencia de DeepNote. ```python import urllib.request import requests base_url = "https://github.com/njtierney/naniar/blob/master/data/" datasets_names = ("oceanbuoys", "pedestrian", "riskfactors") extension = ".rda" ```Utilzando urllib.*request* ```python datasets_dfs = {} for data in datasets_names: url = f'{base_url}{data}{extension}?raw=true' filename = f'./{data}{extension}' urllib.request.urlretrieve(url, filename) datasets_dfs[f"{data}_df"] = pyreadr.read_r(f'/content/{filename}').get(data) ```Utilizando requests ```python def download_data(dataset_url, dataset_output_file ): response = requests.get(dataset_url) if response.status_code == 200: with open(f"{dataset_output_file}", "wb") as file: file.write(response.content) print(f"{dataset_url.split('/')[-1]} descargado en {dataset_output_file}") datasets_dfs = {} for dataset_name in datasets_names: dataset_file = f"{ dataset_name }{ extension }" dataset_output_file = f"{ dataset_file }" dataset_url = f"{ base_url }{ dataset_file }?raw=true" #!wget -q -O { dataset_output_file } { dataset_url } download_data(dataset_url, dataset_output_file ) datasets_dfs[f"{dataset_name}_df"] = pyreadr.read_r(f'/content/{dataset_output_file}').get(dataset_name) datasets_dfs.keys() ```Son dos soluciones, al final pueden consultar el diccionario de dataframes y veran que ya tienen los datasets, les adjunto las imagenes. ![](https://static.platzi.com/media/user_upload/image-32a4ad6b-5dde-4bbf-9cd4-d336d637ac3e.jpg) ![](https://static.platzi.com/media/user_upload/image-146751ea-accf-4281-b072-1b9e74b5e4c7.jpg) Saludos.
Revisen que funcione el repositorio de donde se origina el data: "https://raw.githubusercontent.com/npradaschnor/Pima-Indians-Diabetes-Dataset/master/diabetes.csv" Adicionalmente, si est谩n en Google Colab !wget -O ./sample\_data/pima-indians-diabetes.csv { pima\_indians\_diabetes\_url } -q Revisen que la ruta donde la van a obtener este bien escrita, correspondiente a la de sample data de Google Colab

Tengo un error o al parecer la base de datos ya no existe:

hice el duplicate en deepnote pero ya todas las lineas de comando estaban hechas

Mucho m谩s facil para traer el dataset: recorten la url hasta data y luego usan el m茅todo read\_csv() de pandas. As铆: ```js pima_indians_diabetes_url = "https://nrvis.com/data" df = pd.read_csv(pima_indians_diabetes_url) df.head(10) ```pima\_indians\_diabetes\_url = "https://nrvis.com/data"
```python datasets_dfs = {} for dataset_name in datasets_names: dataset_file = f"{ dataset_name }{ extension }" dataset_output_file = f"./data/{ dataset_file }" dataset_url = f"{ base_url }{ dataset_file }" #!wget -q -O { dataset_output_file } { dataset_url } dataset_output_file = wget.download(dataset_url,out=dataset_output_file) datasets_dfs[f"{ dataset_name }_df"] = pyreadr.read_r(dataset_output_file).get(dataset_name) datasets_dfs.keys() ````pip install wget==3.2`
```js pip install wget==3.2 ``````js import wget pima_indians_diabetes_url="https://raw.githubusercontent.com/npradaschnor/Pima-Indians-Diabetes-Dataset/master/diabetes.csv" filename = wget.download(pima_indians_diabetes_url,out='./data/pima-indians-diabetespepe.csv') ``````js diabetes_df = pd.read_csv( filepath_or_buffer=filename, # or pima_indians_diabetes_url # sep=",", # names=[ # "pregnancies", # "glucose", # "blood_pressure", # "skin_thickness", # "insulin", # "bmi", # "diabetes_pedigree_function", # "age", # "outcome", #] ) diabetes_df.head(2) ```
Tambien pueden abrir directamente la base de datos desde un URL con la misma funcion pd.read\_csv ```js pima_indians_diabetes_url="https://raw.githubusercontent.com/npradaschnor/Pima-Indians-Diabetes-Dataset/master/diabetes.csv" pd.read_csv(pima_indians_diabetes_url) ```
Actualmente la base de datos Pima Indias Diabetes no se encuentra en el URL mostrado en el video, pero se puede encontrar aqu铆: La base de datos ya no se encuentra en el URL mostrado en el video, pero la puedes encontrar aqu铆: ```python pima_imdians_diabetes_url = "https://raw.githubusercontent.com/npradaschnor/Pima-Indians-Diabetes-Dataset/master/diabetes.csv" ``` ```python pima_imdians_diabetes_url = "https://raw.githubusercontent.com/npradaschnor/Pima-Indians-Diabetes-Dataset/master/diabetes.csv" ```

como para ver que va sucediendo鈥

en mi caso:

import pandas as pd

# Carga el conjunto de datos
file_path = "pima-indians-diabetes.csv"
df = pd.read_csv(file_path)

# Identificaci贸n de valores faltantes
missing_values = df.isnull().sum()
print("Valores faltantes por columna:")
print(missing_values)

# Porcentaje de valores faltantes por columna
missing_percentage = (missing_values / len(df)) * 100
print("Porcentaje de valores faltantes por columna:")
print(missing_percentage)

# Tratamiento de valores faltantes (ejemplo: imputaci贸n por la media solo en columnas num茅ricas)
numeric_columns = df.select_dtypes(include='number')  # Filtra solo columnas num茅ricas
df[numeric_columns.columns] = df[numeric_columns.columns].fillna(df[numeric_columns.columns].mean())

# Muestra las primeras filas del DataFrame con valores faltantes imputados
print("Con valores faltantes imputados por la media:")
print(df.head())

Si alguien tiene problemas al descargar los archivos puede que tengan el mismo problema que tuve yo:

Tuve un problema respecto a la URL de los archivos .rda,
en el video muestra este link:

base_url = "https://github.com/njtierney/naniar/raw/master/data/"

pero a la fecha de hoy 09-06-2023, ahora es

base_url = "https://github.com/njtierney/naniar/blob/master/data/"

cambio el 鈥/raw/鈥 por 鈥/blob/鈥

ademas tuve que agregar al final del URL ?raw=true
dentro del for que realiza la descarga de la siguiente manera:

dataset_url = f"{ base_url }{ datasets_file }?raw=true"

-q

significa 鈥渜uiet mode鈥

Desmenuzando datasets_dfs[f'{dataset_name}_df'] = pyreadr.read_r(dataset_output_file).get(dataset_name):

The given code seems to be loading a dataset from an R data file using the pyreadr library and storing it in a pandas DataFrame.

Let鈥檚 break down the code:

  1. datasets_dfs[f'{dataset_name}_df']: This creates a new key-value pair in the datasets_dfs dictionary, where the key is constructed by appending _df to the dataset_name variable. This suggests that datasets_dfs is a dictionary that stores multiple DataFrames, each associated with a specific dataset.

  2. pyreadr.read_r(dataset_output_file): This reads the R data file specified by dataset_output_file using the read_r function from the pyreadr library. The function reads the data file and returns a dictionary-like object containing the data.

  3. .get(dataset_name): This retrieves the value associated with the dataset_name key from the dictionary-like object returned by pyreadr.read_r. It retrieves the specific dataset from the dictionary-like object.

  4. The resulting DataFrame is then assigned to the key in the datasets_dfs dictionary, creating an entry that associates the dataset name with the corresponding DataFrame.

Overall, this code reads an R data file using pyreadr, extracts a specific dataset from the file, and stores it as a pandas DataFrame in the datasets_dfs dictionary under a key named after the dataset.

Tuve problemas en descargar y cargar los datos,para ello use elsiguinete codigo: import wget
import pyreadr

Definir la URL base, los nombres de los datasets y la extensi贸n de los archivos

base_url = "https://github.com/njtierney/naniar/raw/master/data/"
datasets_names = [鈥渙ceanbuoys鈥, 鈥減edestrian鈥, 鈥渞iskfactors鈥漖
extension = 鈥.rda鈥

Definir la carpeta de destino en tu computadora

folder_name = 鈥渕y_data_folder鈥

Descargar los datasets y guardarlos en la carpeta de destino

for dataset in datasets_names:
url = base_url + dataset + extension
file_name = f鈥檣dataset}{extension}鈥
wget.download(url, f鈥./{folder_name}/{file_name}鈥)

Cargar los datasets en dataframes de pandas

datasets_dfs = {}
for dataset_name in datasets_names:
dataset_file = f"{dataset_name}{extension}鈥
dataset_output_file = f鈥./{folder_name}/鈥
datasets_dfs[f鈥漿 dataset_name }_df"] = pyreadr.read_r(f"{dataset_output_file}/{dataset_file}").get(dataset_name)

Verificar que se hayan cargado los datasets correctamente

datasets_dfs.keys() ,cual fue mi error, que antes deb铆a crear la arpeta my_folder en el terminal wsl d linux de la siguinete manera: mkdir -p /home/鈥渢u_nombre鈥/my_data_folder

Si est谩n trabajando en colab pueden instalar los paquetes usando !pip por ejemplo !pip install 鈥

tuve que poner la clase en 0.5x va mas rapido que el mismo toreto en rapido y furioso 10

Otra alternativa para descargar el archivo de la web ser铆a:

# !pip install wget

import wget 

pima_indians_diabetes_url = "https://nrvis.com/data/mldata/pima-indians-diabetes.csv"
destination = './data/pima-indians-diabetes.csv'

url = wget.download(pima_indians_diabetes_url, destination )

Me esta gustando mucho este curso, pocos de ellos hablan de datos faltantes, que bueno que hicieron uno especializado.

datasets_dfs = {}

for dataset_name in datasets_names:
    dataset_file = f"{ dataset_name }{ extension }"
    dataset_output_file = f"./data/{ dataset_file }"
    dataset_url = f"{ base_url }{ dataset_file }"
    
    !wget -q -O {dataset_output_file} {dataset_url}
    
    datasets_dfs[f"{dataset_name}_df"] = pyreadr.read_r(dataset_output_file).get(dataset_name)
datasets_dfs.keys()