В этой статье я собираюсь объяснить процесс объединения нескольких файлов CSV с Python Pandas. Я хочу изучить различные способы решения проблем, с которыми я столкнулся в организациях, не ориентированных на технологии, и я уверен, что многие сталкивались с этим (включая меня), каким бы элементарным он ни казался некоторым.
Файлы
На приведенном ниже снимке экрана представлены три файла, которые я хочу объединить:
Как видите, у меня есть общие случаи COVID-19 для 3 отдельных городов по дате публикации, и я хотел бы объединить их все в один набор данных.
Чтение одного файла
Чтобы упростить эту задачу, сначала будет полезно просто прочитать один CSV-файл, чтобы понять, какие типы данных, значения и столбцы у нас есть. Для этого мы можем прочитать один из CSV-файлов в Pandas DataFrame следующим образом:
import pandas as pd df = pd.read_csv(‘Kettering Cases by Publish Date.csv’)
Это должно показать нам данные только по одному городу. Мы можем просмотреть первые пять строк этих данных со следующим синтаксисом:
df.head()
Мы также можем проверить наши типы данных, используя следующее:
df.dtypes
Теперь, когда мы знаем, как выглядят наши данные, а также наши типы данных, как теперь нам взять наши три CSV-файла и объединить их в один?
Импорт ОС и доступ к каталогу
Нам нужно получить доступ к каталогу (папке), в котором хранятся наши файлы CSV, чтобы мы могли использовать их в нашем коде. Для этого нам нужно будет импортировать ОС вот так.
import os
Затем мы можем проверить, где находится наш текущий каталог, используя синтаксис:
os.listdir()
Если мы не в папке, где находятся наши файлы, то мы можем изменить каталог, используя:
os.chdir(‘Combining CSV Files’)
Теперь, когда мы перечислим наш каталог, мы должны увидеть их здесь:
В зависимости от вашей операционной системы и местоположения файла этот процесс может отличаться, но это должно быть легко исправить Google.
Добавление наших файлов в переменную
Теперь мы хотим добавить эти файлы в наш каталог в переменную, и мы можем сделать это следующим образом:
files = [file for file in os.listdir()]
Теперь это будет отображаться точно так же, как наш os.listdir(), но этот список файлов будет назначен переменной, которую мы теперь можем использовать для объединения в один DataFrame.
Конкат
Теперь мы можем использовать Python map() для применения функции, которая будет считывать данные в DataFrame, и итерируемого объекта, который будет нашей файловой переменной. Это впоследствии прочитает все эти файлы в один DataFrame.
df = pd.concat(map(pd.read_csv, files), ignore_index=True)
Вызов df теперь объединит все наши файлы CSV в один. Мы можем сохранить наш df в файл CSV, используя:
df.to_csv(‘filename.csv’)
Это просто один из способов решения этой задачи, и существует множество различных способов объединения файлов CSV с помощью Pandas.