Более простой способ импортировать, переупорядочивать, объединять и индексировать данные из нескольких текстовых файлов вместе с экспортом объединенных данных.

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

Импортировать данные в Python можно двумя способами:

Импорт вручную: в случае JupyterLab можно просто импортировать данные, перейдя в браузер файлов (Ctrl + Shift + F) и щелкнув файл, который нам нужно импортировать. Это просто, правда…!
Но что, если нам нужны данные из более чем одного файла?

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

Импорт данных из одного файла

Данные, которые мы собираемся импортировать в наш скрипт, сформируют фрейм данных (часто сокращенно df). Когда мы импортируем один файл с помощью простой и прямой команды из библиотеки pandas.

Результат для приведенного выше кода будет таким

Во-первых, давайте разберемся с терминами в использованной выше команде. Команда read_csv () предоставляет дополнительные аргументы, которые мы можем использовать в соответствии с нашими потребностями.

Укажите разделитель: сеп или разделитель

Разделителем по умолчанию для read_csv () является простая запятая. Однако, если в нашем CSV-файле используется другой разделитель (например, точка с запятой или пробел), мы просто укажем его. Конечно, для максимальной ясности вы также можете указать запятую как символ, разделяющий значения. Мы также можем использовать «разделитель» вместо «сеп».

df = pd.read_csv(r'C:\User\path\file.csv', sep = ' ')
df = pd.read_csv(r'C:\User\path\file.csv', sep = ';')
df = pd.read_csv(r'C:\User\path\file.csv', delimiter = ' ')
df = pd.read_csv(r'C:\User\path\file.csv', delimiter = ';')

Укажите строку заголовка: header

По умолчанию команда resd_csv () считает первую строку наших данных заголовком. Нам нужно указать, не является ли наша первая строка нашим заголовком, как в нашем случае.

df = pd.read_csv(r'C:\User\path\file.csv', sep = ';', header = None)

Если нам нужна вторая строка файла .csv в качестве заголовка, нам нужно использовать следующий код

df = pd.read_csv(r'C:\User\path\file.csv', sep = ';', header = 1)

Импорт данных из нескольких файлов

Теперь давайте посмотрим, как мы можем импортировать данные из нескольких файлов из определенного каталога. Есть много способов сделать это, но я лично считаю, что это более простой и понятный способ использования, особенно для начинающих.

1) Во-первых, мы собираемся импортировать ОС и библиотеки glob. Нам нужно, чтобы они перемещались по разным рабочим каталогам и получали свои пути.

import os
import glob

2) Нам также необходимо импортировать библиотеку pandas, поскольку нам нужно работать с фреймами данных.

import pandas as pd

3) Давайте сменим наш рабочий каталог на каталог, в котором находятся все файлы данных.

os.chdir(r"C:\Users\HARISH\Path_for_our_files")

4) Теперь нам нужно создать цикл for, который перебирает весь файл .csv в текущем рабочем каталоге.

filenames = [i for i in glob.glob("*.csv")]

мы получаем список имен файлов следующим образом

5) Теперь со всеми доступными именами файлов мы можем создать еще один цикл for для итерации по этим полученным именам файлов.

df = [pd.read_csv(file, sep = ",", header=None,) 
      for file in filenames]

Это создает список фреймов данных, каждый из которых представляет данные из каждого файла.

Весь код вместе выглядит примерно так, что дает тот же результат, что и выше.

Как переставить данные?

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

  • Во-первых, нам нужно транспонировать датаграммы, чтобы мы могли объединить все фреймы данных по вертикали.
df_Trans = df[0].T

Что дает нам вывод следующего фрейма данных

  • Теперь мы видим, что наша первая строка будет одинаковой для всех файлов, поэтому мы можем сделать ее нашим заголовком и удалить как столбец с помощью следующего кода.
df_Trans.columns = df_Trans.iloc[0] # Creating first row as Header
df_Trans = df_Trans.drop(0)         # removing first row

Окончательная форма фрейма данных будет такой

  • Мы можем создать цикл for, чтобы выполнять одни и те же операции для всех фреймов данных, а затем объединить их для создания единого фрейма данных. Весь код выглядит так.

Окончательный фрейм данных с данными, импортированными из всех файлов, будет таким.

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

Например, мы можем получить данные о плотности и давлении с помощью этой простой команды

Density  = All_data['Density/AVE (kg/m^3)']
Pressure = All_data['Pressure/AVE (Pa)']

Экспорт данных в текстовый файл

Мы можем сохранить этот объединенный фрейм данных как один текстовый файл перед работой с ним, чтобы мы могли импортировать в каталог один текстовый файл для дальнейшего использования. Мы собираемся создать файл .txt с заголовком и без индекса.
Экспортированный текстовый файл будет выглядеть следующим образом.

Если вам не нужен заголовок, вы можете ввести [header = False], а [sep = ‘\ t’] - указать, что нам нужна «Tab» в качестве разделителя. Надеюсь, вы узнали что-то полезное сегодня, и спасибо за чтение.

Вы можете подписаться на меня в Twitter и LinkedIn, чтобы узнать больше о разных темах. Если вы хотите узнать обо мне больше, посетите мой Сайт.

Спасибо и до скорой встречи…!

Чао.