Перейти к содержимому

Как объединить csv файлы в один python

  • автор:

Как объединить несколько CSV файлов в один?

Есть несколько CSV файлов, которые я хочу объединить в один. Изначально воспользовался ответом, который предлагает следующее:

import fileinput import glob file_list = glob.glob("*.csv") with open('result.csv', 'w') as file: input_lines = fileinput.input(file_list) file.writelines(input_lines) 

Проблема оказалась в том, что при объединении не добавляется перенос строки после очередного файла (т.е. первая строка второго файла оказывается совмещена с последней строкой первого файла). Кроме того, каждый CSV файл имеет заголовок (одинаковый для всех), который хорошо бы убрать у всех фалов, кроме первого. Сейчас объединяю вручную:

with open(target_filename, 'w') as target_file: file_counter = 0 for file_ in files: line_counter = 0 for line in open(file_, 'r'): if line_counter == 0 and file_counter > 0: target_file.write('\r\n') else: target_file.write(line) line_counter += 1 file_counter += 1 

Каким образом сделать объединение эффективнее?

Зачем это нужно?

Копипаст вручную — это, может, и не самый плохой вариант для небольшого количества файлов.

Но представьте, что вам нужно объединить 100+ файлов… готовы ли вы сделать все вручную? Эта затея весьма утомительна и чревата ошибками.

Для файлов с одинаковой структурой таблицы (те же заголовки и количество столбцов) можно воспользоваться скриптом на Python.

Шаг 1: Импортируйте пакеты и задайте рабочую директорию

Измените “/mydir” на нужную вам директорию.

import os
import glob
import pandas as pd
os.chdir("/mydir")

Шаг 2: Воспользуйтесь glob для сопоставления с шаблоном ‘csv’

Сопоставьте шаблон (‘csv’) и сохраните список имен файлов в переменной ‘all_filenames’. Здесь можно почитать о сопоставлении регулярных выражений.

extension = 'csv'
all_filenames = [i for i in glob.glob('*.<>'.format(extension))]

Шаг 3: Объедините файлы в список и экспортируйте в CSV

Воспользуйтесь pandas для объединения файлов в список и экспорта в CSV. На выходе получится файл “combined_csv.csv”. Найти его можно в рабочей директории.

Для экспорта «неанглийских» языков добавляется encoding = ‘utf-8-sig’.

#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')

Как объединить несколько CSV-файлов в один DataFrame с помощью pandas

Одной из распространенных задач в обработке данных является чтение данных из нескольких файлов и их объединение в один DataFrame для дальнейшего анализа.

Multiple CSV files merging into a single DataFrame.

Алексей Кодов
Автор статьи
7 июля 2023 в 18:01

Одной из распространенных задач в обработке данных является чтение данных из нескольких файлов и их объединение в один DataFrame для дальнейшего анализа. В этой статье будет рассмотрен пример объединения нескольких CSV-файлов в один DataFrame с помощью библиотеки pandas.

Сначала импортируем необходимые библиотеки — pandas и glob. Последняя используется для работы с путями к файлам.

import glob import pandas as pd

Для чтения всех CSV-файлов из определенного каталога можно использовать функцию glob, которая возвращает список всех файлов, соответствующих заданному шаблону.

path = 'путь/к/каталогу' filenames = glob.glob(path + "/*.csv")

Создаем пустой список dfs, в который будут добавляться DataFrame’ы, полученные в результате чтения каждого из CSV-файлов.

Далее с помощью цикла for проходим по всем именам файлов из списка filenames, читаем содержимое каждого файла с помощью функции pd.read_csv и добавляем полученный DataFrame в список dfs.

for filename in filenames: dfs.append(pd.read_csv(filename))

После того, как все данные прочитаны и DataFrame’ы добавлены в список, можно объединить их в один DataFrame с помощью функции pd.concat. Аргумент ignore_index=True говорит о том, что индексы исходных DataFrame’ов должны быть проигнорированы, и для нового DataFrame’а должны быть созданы новые индексы.

big_frame = pd.concat(dfs, ignore_index=True)

Таким образом, в результате выполнения данного кода все CSV-файлы из указанного каталога будут прочитаны и объединены в один DataFrame big_frame, который затем может быть использован для дальнейшего анализа данных.

Python Практический. Объединить множество CSV

Создадим список всех файлов для объединения. Все они в данном примере находятся в той же папке, что и книга.

files = glob.glob('*.csv')

Прочитаем все файлы из списка, создадим датафрейм, в который запишем все данные.

# Объединяем combined = pd.DataFrame() for file in files: data = pd.read_csv(file) data['filename'] = file combined = pd.concat([combined, data])
Примененные функции
  • glob.glob
  • pandas.DataFrame
  • pandas.read_csv
  • pandas.concat
  • pandas.DataFrame.to_csv
Курс Python Практический
Номер урока Урок Описание
1 Python Практический. Скачиваем котировки В этом уроке мы научимся скачивать котировки с помощью модуля pandas_datareader.
2 Python Практический. Объединить книги Excel В этом уроке мы объединим много Excel файлов в один CSV файл с помощью Python
3 Python Практический. Объединить книги Excel Дополним урок по объединению большого количества XLSX файлов в один CSV при помощи Python. Добавим Progress Bar и вывод времени начала обработки каждого файла.
4 Python Практический. Создать Progress Bar В этом уроке мы научимся создавать Progress Bar в Python. Для этого воспользуемся модулем tqdm.
5 Python Практический. Объединить листы книги Excel Объединим множество листов одной книги Excel по вертикали.
6 Python Практический. Объединить книги Excel и листы в них Как объединить книги Excel и все листы в них в одну таблицу.
7 Python Практический. Объединить множество CSV Объединим множество CSV файлов по вертикали в один CSV файл.
8 Python Практический. Таблицы из множества интернет-страниц Извлечем таблицу из множества веб-страниц и объединим по вертикали.
9 Python Практический. Многостраничное извлечение таблиц с Requests и BS4 В этом уроке мы с помощью Python модулей Requests и BS4 извлечем таблицу из множества web-страниц, потом все эти таблицы объединим по вертикали в одну и запишем результат в Excel файл.
10 Python Практический. Скрапинг/Парсинг сайтов с Selenium и BS4 В этом уроке мы будем скрапить/парсить веб сайт с Python модулями Selenium и BF4.
11 Python Практический. Автоматизация браузера Python Selenium, Скрапинг, скачивание выписок ЕГРЮЛ В этом уроке мы познакомимся с модулем Selenium для Python. Он позволяет автоматизировать работу браузера, например, открывать веб-страницы, заполнять формы, получать содержимое блоков и скачивать файлы. Мы изучим основы Selenium на примере получения данных ЕГРЮЛ по ИНН и автоматическому скачиванию выписок ЕГРЮЛ.
12 Python Практический. Множественная замена текста с Pandas В этом уроке мы выполним множественную замена текста с помощью модуля Pandas

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *