Indexado y manejo de archivos CSV

4/28
Recursos

Aportes 58

Preguntas 29

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Cuando David usa el operador % en la celda 2 este hace referencia a una magic command, hice este peque帽o articulo/tutorial que espero ayude a agregar mas herramientas a sus cinturones de batman.

https://platzi.com/tutoriales/1794-pandas/6960-ipython-magics-commands/

Solo como agregado. Si les marca error al hacer el directorio, recuerden que en el chunck anterior, nos movimos hacia la carpeta de Colab Notebooks, por lo que basta con hacer el

!mkdir db
para que quede.

La libreria de google

from google.colab import drive
drive.mount('/content/drive')

Crear nuevo directorio

dir_pandas = '/content/drive/My Drive/db/{}'.format('test.csv')

El data frame de la anterior clase,no se olviden importar numpy


dict_data = {
    'edad': [10,9,13,14,12,11,12],
    'cm': [115,110,130,155,125,120,125],
    'pais':['co','mx','co','mx','mx','ch','ch'],
    'genero':['M','F','F','M','M','M','F'],
    'Q1':[5,10,8,np.nan,7,8,3],
    'Q2':[7,9,9,8,8,8,9]
}
dict_data = {
    'edad': [10,9,13,14,12,11,12],
    'cm': [115,110,130,155,125,120,125],
    'pais':['co','mx','co','mx','mx','ch','ch'],
    'genero':['M','F','F','M','M','M','F'],
    'Q1':[5,10,8,np.nan,7,8,3],
    'Q2':[7,9,9,8,8,8,9]
}

Para los compa帽eros, que trabajan con Jupiter, les comparto este tutorial, de 30 minutos, que me ha servido mucho.https://www.youtube.com/watch?v=8ASjvOIyyl8

Por si a alguien le sirve :

La creaci贸n del directorio la pueden hacer directamente desde Python. Un ejemplo de esto ser铆a:

import os

dir_pandas = './db'


try:
    os.mkdir(dir_pandas)
except FileExistsError:
    print('Directory already exists')


df.to_csv(f'{dir_pandas}/test.csv')

Hola, a mi no me deja crear la carperta db como lo muestran en el video pero solo le agregue unas comitas y ya me dejo

<!mkdir  '/content/drive/MyDrive/Colab Notebooks'/db > 

Me gustar铆a que sacaran este curso pero con ambiente de Deepnote 馃槮

Para revisar en que ruta se esta posicionado, se puede ejecutar
!pwd

Si estan haciendo este curso en el 2022 como yo, para crear la carpeta de bd en el directorio la ruta la pasamos asi

!mkdir /content/drive/MyDrive/Colab\Notebooks/ db

Estuve rato intentando hasta que encontre la forma correcta, separamos db del / y solo le pasamos \ a colab \ notebooks.
Espero los ayude.

Indexado y manejo de archivos

  • from google.colab import drive
    drive.mount(鈥/content/drive鈥)
    le da acceso al notebook a Drive
  • luego ya podemos utilizar %cd para movernos entre carpetasy !ls para ver el contenido
  • Usar texto permite agregar m谩s texto con la funci贸n .format. Ej: 鈥 Mi texto es {}鈥.format(鈥榤i texto鈥)
  • !mkdir permite crear una nueva carpeta o directorio
  • Si generamos una nueva carpeta cuyo nombre tiene espacios, deberemos utilizar un backslash. Ej: !mkdir content/drive/Mi \nueva \carpeta

Guardar y leer archivos .csv

  • pandas.Dataframe.to_csv(ruta del nuevo archivo) genera un nuevo archivo (debe contener toda la ruta, el nombre y la extensi贸n) Ej: df.to_csv(鈥/content/drive/file.csv鈥)
  • Se puede usar el .to_csv(ruta, index=False) para que no guarde el Index
  • .read_csv(archivo .csv) permite leer un archivo .csv
  • .to_csv(archivo.csv sep=鈥欌) permite elegir dentro de las comillas cu谩l es el separador si queremos usar uno distinto de la coma
  • Lo mismo ocurre con .read_csv si necesitamos que identifique otro caracter como un separador

Un Peque帽o Hack para los que tengan un Path LARGO y mam贸n!
Guarden el Path en una variable usando !pwd

As铆

dirPath= !pwd
dir_pandas = dirPath[0]+"/db/{}".format("text.csv")
dir_pandas

que lindo hubiera sido saber lo de especificar el separador antes jajajaja

Que sencillo se hace exportar hacia csv en python a partir de un dataframe mediante la sentence to_csv , incluyendo el separados , si se quiere o no indices , ext.

Hasta el momento un excelente curso 馃槂

Excelente explicaci贸n!

Mal铆simo este curso, es abrumador, la mitad de cosas ni las explica

Por favor alguien me ayuda con este error

Si est谩n en Deepnote la ruta queda asi:

dir_pandas = '/work/db/{}'.format('test.csv')

Si les marca error al poner
!ls /content/drive/My Drive/Colab Notebooks/db

solo pongan ls o !ls porque recuerden que ya estan en la carpeta db

Eliminar el indice de tu Dataframe en el csv

Guardar DataFrame

Hola compa帽eros, espero se encuentren muy bien, les comparto el diccionario para hacerlo de una forma din谩mica, espero les ayude.

n_records = 20
dict_data = {"age": np.random.randint(10,16,n_records),
            "cm" : np.random.randint(100,161,n_records),
            "country": np.random.choice(["col","arg","mex","ch"],n_records),
            "gender": np.random.choice(["F","M"],n_records),
            "Q1": np.random.randint(1,11,n_records).astype(float),
            "Q2": np.random.randint(1,11,n_records).astype(float) }

dict_data["Q1"][np.random.randint(0,19,2)] = np.nan
df = pd.DataFrame(dict_data)

Convert铆 las columnas 鈥淨1鈥 y 鈥淨2鈥 a flotantes en caso de que queramos introducir NaNs arbitrariamente.

Saludos!!

import os
import pandas as pd
import numpy as np

dir_pandas = './db'
dict_data = {
    'edad': [10,9,13,14,12,11,12],
    'cm': [115,110,130,155,125,120,125],
    'pais':['co','mx','co','mx','mx','ch','ch'],
    'genero':['M','F','F','M','M','M','F'],
    'Q1':[5,10,8,np.nan,7,8,3],
    'Q2':[7,9,9,8,8,8,9]
}

try:
    os.mkdir(dir_pandas)
except FileExistsError:
    print('Directory already exists')

df = pd.DataFrame(dict_data)
df.to_csv(f'{dir_pandas}/test.csv')

No se porqu茅 pero ahora no me pidi贸 la clave de verificaci贸n, solo apareci贸 la ventana para elegir la cuenta Google y listo.

Un poco engorroso estar poniendo a cada rato la URL jajajaja pero buen curso me est谩 encantando!

Si alguien esta trabajando en Visual Studio Code las direcciones se pueden manejar algo asi
dir_pandas2=鈥楨:\RICARDO\Documents\curso de manipulacion y analisis de datos con pandas y python\db\{}鈥.format(鈥榯est.csv鈥)
dir_pandas2
df.to_csv(dir_pandas2,index=False)

Para ir a la carpeta db alcanza solo con el siguiente c贸digo:

%cd db

lo que no me gusta de google colab es que se crashea de vez en cuendo y tienes que estar buscando siempre una solucion, es lo habitual

Para los que quieran practicar y tener un sencillo DataFrame que crear para aprender, pueden hacer esto:

import pandas as pd

numbers = {"even":list(range(0,200,2)),"odd":list(range(1,200,2))}

# Creaci贸n de un dataFrame en pandas
df=pd.DataFrame(numbers)
df

En mi caso hice un contenedor de docker con una imagen de notebook, lo abr铆 localhost por el puerto 8080, le hice un volumen al container con una carpeta que est谩 enlazada con google drive. Al final es lo mismo que hizo el profe pero sin falta de usar google colab pero si drive鈥

ventajas:

  • cada vez que guarda un archivo se guarda local, pero queda en drive para poder usarlo en otras aplicaciones鈥

  • evita configurar entornos, se pueden hacer contenedores de prueba.

  • google colab va m谩s lento que mi portatil, se gana en agilidad para ejecutar el notebook

desventajas:

  • hay algunas cosas que tendras que instalar aparte en el container.
  • requiere saber de docker y algo de linux.

Para quienes trabajan en Deepnote

Utilic茅 la Terminal que viene en la interfaz del programa. El directorio de carpetas que ocupamos es el siguiente:

'~/work/'

A partir de ah铆 pueden crear las carpetas y archivos del curso con los comandos que se muestran en la clase

Tambien me salio este error: ImportError: Pandas requires version 鈥3.5.1鈥 or newer of 鈥榯ables鈥 (version 鈥3.4.4鈥 currently installed).

Lo solucione: !pip install --upgrade tables

Me salio este error: ImportError: Pandas requires version 鈥3.0.0鈥 or newer of 鈥榦penpyxl鈥 (version 鈥2.5.9鈥 currently installed).

Lo solucione ejecutando !pip install --upgrade openpyxl

Para los path evitar problemas con rutas

import os

ruta_archivo = os.path.join('/content/drive/MyDrive/Colab Notebooks/db', 'ruta.archivo.csv')

sino forma simplificada de format poner una f antes de las comillas del string

archivo = 'test.csv'
dir_pandas = f"'/content/drive/MyDrive/Colab Notebooks/db'/{archivo}"

Me parece mucho m谩s c贸modo y legible el uso del 鈥渇 string鈥 en vez de usar .format. Cuesti贸n de gustos 馃槃.

Entendido y funcional. Lo realic茅 en mi carpeta local

import pandas as pd
pd.__version__
import numpy as np
dict_data = {
    'edad' :     [ 10, 9, 13, 14, 12, 11, 12],
    'cm' : [ 115, 110, 130, 155, 125, 120, 125],
    'pais' :    [ 'co', 'mx', 'co', 'mx', 'mx', 'ch', 'ch'],
    'genero' :  [ 'M', 'F', 'F', 'M', 'M', 'M', 'F'],
    'Q1' : [ 5, 10, 8, np.nan, 7, 8, 3],
    'Q2' : [ 7, 9, 9, 8, 8, 8, 9.]
}
dict_data
df = pd.DataFrame(dict_data)
df
!pwd
dir = "/home/dbz/Estudio/pandasYPython/test/test.csv"
df.to_csv(dir, index = False)
df_read = pd.read_csv('/home/dbz/Estudio/pandasYPython/test/test.csv', sep = '|')
df_read

Para importar datos desde los archivos de tu computador:

from google.colab import files
files.upload()

#Seleccionamos el archivo y luego:

nombrearchivo = pd.read_csv("nombrearchivo.csv")

Les comparto el Notebook que hice explicando paso a paso lo visto en clase. Espero que les sea de alguna utilidad:

https://colab.research.google.com/github/bl00p1ng/Curso-analisis-de-datos-con-Pandas-y-Python/blob/main/save_and_load.ipynb

Para guardar en JUPITER con Windows seria:

dir_pandas='E:\Programas\python\Pandas\{}'.format('prueba.csv')
df.to_csv (dir_pandas)

o

df.to_csv (r鈥橢:\Programas\python\Pandas\prueba.csv鈥)

o cuando se desea guardar en la misma carpeta del Notebook

df.to_csv('example.csv')

Buenas noches compa帽eritos, para los que est茅n usando jupyter , y quieran guardar el archivo CSV de forma local, la manera es la siguiente :

df.to_csv(r鈥/home/user/Documentos/Python/Pandas/test.csv鈥)

despues de r鈥 se debe espeficar la ruta,cerrando con la comilla al final de la ruta '.

de igual manera si queremos eliminar el index:

df.to_csv(r鈥/home/user/Documentos/Python/Pandas/test.csv鈥, index=False)

Pd. Yo uso Linux, para las personas que usan windows la ruta debe ser algo como :

df.to_csv (r鈥機:\Users鈥︹)

from google.colab import drive

drive.mount(鈥/content/drive鈥

%cd 鈥/content/drive/My Drive/Colab Notebooks鈥

!ls

!mkdir /content/drive/My\ Drive/Colab\ Notebooks/db

df.to_csv(<file_path>, sep=鈥檤鈥, index=False) 鈬 the default value to sep is 鈥,鈥

pd.read_csv(<file_path>, sep=鈥檤鈥)

Excelente clase y excelente profesor, que buena herramienta es pandas, yo ando trabajando en jupyter notebooks y solo cree un nuevo directorio en mi pc

Que gran curso, cada paso explicado a detalle.

Muy vacano no sabia que existia esta maravilla de ayuda que nos brinda google colaboratory ya que cuando trabajaba por VS Code se demora mucho en ejecutar cada acci贸n.

Crear un directorio (folder, carpeta) con espacios en el nombre

Guardar CSVs en distintos formatos

Leer un csv con un separador distinto a una coma

Leer CSV como dataframe

馃槷 Interesante. No sab铆a que usar {} permit铆a reemplazar elementos, lo aprend铆 aqu铆 馃

"Hola {}".format("bla bla bla bla") 

Esto reemplaza el 鈥渰}鈥 con 鈥渂la bla bla鈥

La verdad que me parece de los mejores cursos de platzi hasta el momentos, brindan mucho tips y trucos

Tambien pueden usar la funciona .format() de esta forma.

dir_pandas = f"/content/drive/My Drive/Pandas/db/{'test.csv'}"

Tengo a帽os usando R y me negaba a usar Python y pandas para datos. Pero con este curso estoy fascinado!

Me encanta este curso

interesante