Cómo combinar archivos CSV en Python

Como Combinar Archivos Csv En Python



A veces, el conjunto de datos dado no está en un solo archivo CSV. Todos están en diferentes hojas de Excel. Ya sabe que es preferible realizar todas las actividades computacionales o de preprocesamiento en un solo conjunto de datos en lugar de varios conjuntos de datos. Reduce o ahorra el tiempo que necesitamos dedicar a las tareas de preprocesamiento. Además, como analista de datos o científico de datos, es posible que con frecuencia se encuentre sobrecargado con numerosos archivos CSV que deben combinarse antes de comenzar su análisis o examen de los datos disponibles. Por otro lado, no siempre es posible que todos los archivos se obtengan de la misma o única fuente de datos y tengan los mismos nombres de columnas/variables y estructura de datos. Esta publicación le enseñará a combinar dos o más archivos CSV con una estructura de columnas similar o diferente.

¿Por qué combinar archivos CSV?

Un conjunto de datos puede ser una colección o un grupo de valores o números relacionados con un tema específico. Por ejemplo, los resultados de las pruebas de cada estudiante en una determinada clase son un ejemplo de un conjunto de datos. Debido al tamaño de los grandes conjuntos de datos, a menudo se almacenan en archivos CSV separados para diferentes categorías. Por ejemplo, si debemos examinar a un paciente por una enfermedad específica, debemos considerar todos los componentes, incluido su sexo, historial médico, edad, gravedad de la enfermedad, etc. En consecuencia, se requiere combinar datos CSV para examinar varios predictores que influyen aspectos. Además, es mejor trabajar y administrar un solo conjunto de datos en lugar de varios conjuntos de datos mientras se realizan las tareas de cálculo o preprocesamiento. Ahorra memoria y otros recursos computacionales.







¿Cómo combinar archivos CSV en Python?

Existen varias formas y métodos para combinar dos o más archivos CSV en Python. En la siguiente sección, usaremos las funciones append(), concat() y merge(), etc., para combinar archivos CSV en el marco de datos de pandas y luego los marcos de datos se convertirán en un solo archivo CSV. Enseñaremos cómo combinar varios archivos CSV con una estructura de columnas similar o variable.



Método n.º 1: combinar CSV con estructuras o columnas similares

Nuestro directorio de trabajo actual tiene dos archivos CSV, 'test1' y 'test2'.



Ejemplo # 1: Uso de la función append()

Ambos archivos CSV tienen la misma estructura. La función glob() se usará en este método para enumerar solo los archivos CSV en el directorio de trabajo. Luego usaremos “pandas.DataFrame.append()” para leer nuestros archivos CSV (con una estructura de tabla común).





Producción:



Con la función de agregar, agregamos o agregamos cada fila de datos de test2.csv debajo de las filas de datos de test1.csv, ya que se puede ver que todas las filas de datos del archivo se combinaron. Para convertir este marco de datos a CSV, podemos usar la función to_csv().

Esto creará un archivo CSV combinado de archivos CSV de 'test1' y 'test2' en nuestro directorio de trabajo con el nombre especificado, es decir, merged.csv.

Ejemplo # 2: Uso de la función concat()

Primero importaremos el módulo pandas. El método map leerá cada archivo CSV que hayamos pasado usando pd.read_csv(). Estos archivos mapeados (archivos CSV) se combinarán a lo largo del eje de la fila de forma predeterminada mediante la función pd.concat(). Si queremos combinar archivos CSV horizontalmente, podemos pasar axis=1. Especificar el índice de ignorar = True también crea valores de índice continuos para el marco de datos combinado.

El pd.read_csv() se pasa dentro de la función concat() para leer los archivos CSV en el marco de datos de pandas después de la concatenación.

Hemos obtenido un marco de datos con datos combinados de todos los archivos CSV en el directorio de trabajo. Ahora, vamos a convertirlo en un archivo CSV.

Nuestro CSV combinado se crea en el directorio actual.

Método n.º 2: combinar CSV con diferentes estructuras o columnas

Hablamos de combinar archivos CSV con las mismas columnas y estructura en el primer método. En este método, combinaremos archivos CSV con diferentes columnas y estructuras.

Ejemplo # 1: Uso de la función merge()

La función 'pandas.merge()' en el módulo pandas puede combinar dos archivos CSV. Fusionar simplemente se refiere a combinar dos conjuntos de datos en un solo conjunto de datos basado en columnas o atributos compartidos.

Podemos fusionar marcos de datos en cuatro formas diferentes de unión:

  • Interno
  • Derecha
  • Izquierda
  • Exterior

Para realizar este tipo de fusiones, utilizaremos dos archivos CSV.

Tenga en cuenta que al menos un atributo o columna debe ser compartido por ambos archivos CSV. Como se observa, la columna “Nombre” y algunos de sus atributos son compartidos por ambos archivos CSV.

Fusionar usando unión interna

Especificar el parámetro how='inner' en la función merge() combinará los dos marcos de datos de acuerdo con la columna especificada y luego proporcionará un nuevo marco de datos que solo contiene las filas con valores idénticos/iguales en ambos marcos de datos originales.

Como se puede ver, la función fusionó ambos archivos CSV y devolvió las filas según los atributos comunes de la columna 'Nombre'.

Fusionar usando la combinación externa derecha

Cuando se especifica el parámetro how='right', ambos marcos de datos se combinarán en función de la columna que especificamos para el parámetro 'on'. Y se devolverá un nuevo marco de datos que contiene todas las filas del marco de datos derecho, incluidas las filas para las que el marco de datos izquierdo no contiene valores, con el valor de la columna del marco de datos izquierdo establecido en NAN.

Fusionar mediante combinación externa izquierda

Cuando la forma en que el parámetro se especifica como 'izquierda', los dos marcos de datos se combinarán en función de la columna especificada usando el parámetro 'on', devolviendo un nuevo marco de datos que tiene todas las filas del marco de datos izquierdo, así como cualquier fila que tenga NAN o valores nulos en el marco de datos derecho y establece el valor de la columna del marco de datos derecho en NAN.

Fusionar mediante combinación externa completa

Cuando se especifica how='outer', los dos marcos de datos se combinarán según la columna especificada para el parámetro 'on', devolviendo un nuevo marco de datos que contiene las filas de los marcos de datos df1 y df2 y configurando NAN como el valor para cualquier fila. para los cuales los datos están ausentes en uno de los marcos de datos.

Ejemplo n.º 2: combinación de todos los archivos CSV en el directorio de trabajo

En este método, usaremos el módulo glob para combinar todos los archivos .csv en un marco de datos de pandas. Todas las bibliotecas tenían que ser importadas primero. A continuación, estableceremos una ruta para cada archivo CSV que queramos combinar. La ruta del archivo es el primer argumento para la función os.path.join() en el ejemplo a continuación, y el segundo argumento son los componentes de la ruta o los archivos .csv que se unirán. Aquí, la expresión '*.csv' encontrará y devolverá cada archivo en el directorio de trabajo que termine con la extensión de archivo .csv. La función glob.glob(archivos unidos) acepta una lista de los nombres de los archivos fusionados como entrada y genera una lista de todos los archivos fusionados/combinados.

Este script devolverá un marco de datos con datos combinados de todos los archivos CSV en nuestro directorio de trabajo.

Este marco de datos se transformará en un archivo CSV y la función to_csv() se utilizará para esta conversión. Este nuevo archivo CSV serán los archivos CSV combinados creados a partir de todos los archivos CSV almacenados en el directorio de trabajo actual.

Conclusión

En esta publicación, discutimos por qué necesitamos combinar archivos CSV. Discutimos cómo se pueden combinar dos o más archivos CSV en Python. Dividimos este tutorial en dos secciones. En la primera sección, explicamos cómo usar las funciones append() y concat() para combinar archivos CSV de la misma estructura o nombres de columna. En la segunda sección, usamos el método merge(), os.path.join() y el método glob para combinar archivos CSV de diferentes columnas y estructuras.