Concatenando múltiples archivos .CSV grandes con estructuras variables
Tengo aproximadamente 40 archivos .csv (que van desde aproximadamente 100mb hasta 600mb) que me gustaría concatenar en un solo archivo .csv. Los datos que estoy utilizando han sido construidos utilizando un código predefinido de R de FNMA que agrega archivos de datos sin procesar más grandes en un formato más manejable. Sin embargo, al intentar concatenar los archivos de datos, recibo el siguiente error que indica que hay una diferencia en el número de campos entre los archivos: “ParserError: Error al tokenizar los datos. Error de C: Se esperaban 75 campos en la línea 10, se encontró 76”. He intentado unir los datos verticalmente para resolver este problema, ya que la mayoría de los campos entre los archivos son homogéneos, pero no he encontrado una solución razonable. Estoy pensando que tal vez tenga sentido reducir el código .R para escribir los campos que sé que existen, pero preferiría una solución utilizando Python ya que estos datos tardan mucho tiempo en procesarse y el código predefinido es bastante pesado. Incluiré a continuación el código de Python que he estado intentando utilizar (estoy dispuesto a compartir el código de .R si se solicita, pero tiene más de 600 líneas):
import os
import glob
import pandas as pd
# Establecer directorio de trabajo
os.chdir("directorio de la carpeta")
# Encontrar todos los archivos csv en la carpeta
# Utilizar coincidencia de patrón glob -> extensión = 'csv'
# Guardar el resultado en una lista -> all_filenames
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
# Imprimir(all_filenames)
# Combinar todos los archivos en la lista
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames], ignore_index=True, sort=False)
# Exportar a csv
combined_csv.to_csv("FNMA Data Aggregated.csv", index=False, encoding='utf-8-sig')
combined_csv
davy.ai
El mensaje de error indica que hay una discrepancia en el número de campos en una de las filas de los archivos .csv que se están concatenando. Una solución es investigar la fila identificada en el mensaje de error y verificar que esté correctamente formateada. Si no lo está, deberá corregirse en el archivo original antes de intentar concatenar los archivos nuevamente.
Otra solución es utilizar la biblioteca pandas en Python para leer cada archivo individualmente, determinar qué columnas son comunes en todos los archivos y luego concatenar los archivos en esas columnas. Esto se puede lograr utilizando la función merge() en pandas.
Aquí tienes un ejemplo de cómo utilizar la función merge() para concatenar archivos .csv con columnas comunes:
Este código lee el primer archivo .csv para determinar qué columnas son comunes en todos los archivos. Luego recorre los archivos .csv restantes, fusionando cada archivo en las columnas comunes. Finalmente, exporta los datos combinados a un nuevo archivo .csv.
Ten en cuenta que si el archivo .csv resultante sigue siendo demasiado grande para gestionarlo, puede ser beneficioso explorar otras opciones de almacenamiento, como las bases de datos SQL.