Programa Python para convertir Dict de lista a CSV
En un diccionario, las claves deben ser únicas e inmutables, mientras que los valores pueden ser de cualquier tipo y pueden tener una lista de valores. En el caso de un diccionario de listas, cada clave apunta a una lista que puede contener múltiples elementos.
Aquí hay un ejemplo de un diccionario de listas:
data = {'numbers':[1, 2, 3, 4, 5, 6],
'states':['UP', 'Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'],
'cities':['Agra', 'Chennai', 'Hyderabad', 'Surat', 'Lucknow', 'Coimbatore']})
En el diccionario anterior, cada clave se asigna a una lista de valores. Por ejemplo, la clave 'estados' se asigna a la lista ['UP', 'Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'].
Por otro lado, un archivo CSV (valores separados por comas) es un archivo de texto sin formato que almacena datos tabulares en un formato simple, separados por comas. Cada línea del archivo normalmente representa una fila de datos y los valores dentro de cada fila están separados por comas. La primera línea suele servir como fila de encabezado y contiene los nombres de las columnas.
A continuación se muestra un ejemplo de un archivo CSV que representa los datos del diccionario de listas mencionado anteriormente:
numbers,states,cities
1,UP,Agra
2,Tamil Nadu,Chennai
3,Telangana,Hyderabad
4,Gujarat,Surat
5,UP,Lucknow
6,Tamil Nadu,Coimbatore
Al convertir un diccionario de listas en un archivo CSV, el enfoque general implica iterar sobre las claves y valores del diccionario para escribirlos en el archivo CSV. Hay algunos enfoques diferentes que discutiremos en este artículo.
Usando el módulo csv
El módulo csv en Python proporciona varios métodos para escribir datos en un archivo CSV. Estos métodos son parte de la clase csv.writer y nos permiten escribir filas individuales o varias filas de datos en el archivo CSV.
writerow(row): este método escribe una sola fila de datos en el archivo CSV.
writerows(rows): este método escribe varias filas de datos en el archivo CSV.
Además, podemos usar la función zip() para iterar sobre los valores del diccionario de listas fila por fila.
La función zip() toma múltiples iterables (en este caso, las listas de valores) y devuelve un iterador que agrega elementos de cada iterable. Lo que puede transponer eficazmente los datos de una representación basada en columnas a una representación basada en filas.
Ejemplo
Aquí hay un ejemplo para convertir el diccionario de listas a un archivo CSV usando el módulo csv de Python y sus métodos.
import csv
# define the function
def dict_to_csv(dictionary, filename):
keys = list(dictionary.keys())
values = list(dictionary.values())
with open(filename, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(keys)
writer.writerows(zip(*values))
# create a dictionary of lits
data = {'numbers':[1, 2, 3, 4, 5, 6],
'colors':['red','green', 'yellow', 'blue', 'brown'],
'fruits':['apples','Avocados', 'Pineapples', 'Blueberries', 'Dates']}
print('Input Dictionary of lits:', data)
print()
# Convert dictionary to CSV
dict_to_csv(data, 'Output\output2.csv')
print('Output:')
print('The converted CSV file is created successfully in our working directory.')
Producción
Input Dictionary of lits: {'numbers': [1, 2, 3, 4, 5, 6], 'colors': ['red', 'green', 'yellow', 'blue', 'brown'], 'fruits': ['apples', 'Avocados', 'Pineapples', 'Blueberries', 'Dates']}
Output:
The converted CSV file is created successfully in our working directory.
La siguiente imagen muestra el archivo csv convertido creado en el directorio de trabajo.
Usando la biblioteca pandas
La biblioteca pandas proporciona muchas funcionalidades adicionales para manejar y manipular datos, como filtrado, agregación, clasificación y más. Admite la escritura de archivos CSV desde un DataFrame usando la función to_csv().
Ejemplo
En este enfoque, inicialmente creamos un DataFrame de pandas a partir del diccionario de listas y luego usaremos el método to_csv() para crear un archivo CSV a partir del Dataframe.
Veamos un ejemplo usando la biblioteca pandas para convertir el diccionario de lista a un archivo CSV.
import pandas as pd
def dict_to_csv(dictionary, filename):
df = pd.DataFrame(dictionary)
df.to_csv(filename, index=False)
# create a dictionary of lits
data = {'nums':[1, 2, 3, 4, 5, 6],
'states':['UP','Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'],
'cities':['Agra','Chennai', 'Hyderabad', 'Surat', 'Lucknow', 'Coimbatore']}
print('Input Dictionary of lits:', data)
print()
# Convert dictionary to CSV
dict_to_csv(data, 'Output\output.csv')
print('Output:')
print('The converted CSV file is created successfully in our working directory.')
Producción
Input Dictionary of lits: {'nums': [1, 2, 3, 4, 5, 6], 'states': ['UP', 'Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'], 'cities': ['Agra', 'Chennai', 'Hyderabad', 'Surat', 'Lucknow', 'Coimbatore']}
Output:
The converted CSV file is created successfully in our working directory.
La siguiente imagen muestra el archivo csv convertido creado en el directorio de trabajo.
Los dos ejemplos anteriores demuestran los diferentes enfoques para convertir un diccionario de listas en un archivo CSV utilizando la programación Python.