in

RAW to XLS: как создать таблицу из данных с помощью Python

Структурируем сырые данные в Excel’e

Иногда они возвращаются — просьбы помочь. «Тыжпрограммист» и другие ярлыки, которые так любят клеить твои коллеги, совсем не те ачивки, которые ты хотел получать на службе. Но разве мы откажем нашим офисным друзьям в небольшой просьбе?

Покой нам только снится

Итак, у нас есть некие сырые данные. Либо это парсинг чего-либо, либо просто набор каких-то символов, цифр, etc. Возможно, это выгрузка это будет выгрузка CSV, но в любом случае нам нужно сделать из этого нормальную таблицу в Excel — со столбцами и строками. Исходник:

Как мы будем это делать? Вне зависимости от того, в каком виде к вам попали эти данные — скопируйте их в текстовый документ, в блокнот или notepad++ (да, при большом объеме данных придётся подождать)

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

Код

Будем работать с библиотекой Pandas, для работы с датафреймами. В переменную Excel записываем наш текстовый файл (если не писать путь до него, то он должен находится в одной папке со скриптом).

Далее вызываем метод чтения данных CSV с параметрами, где sep — это разделитель.

Зачем мы добавляем error_bad_lines=False в параметры? Если наш парсер не сможет обработать какие-то строки, то выдаст ошибку pandas.errors.ParserError: Error tokenizing data и выполнение скрипта прекратится. Чтобы этого избежать мы даём команду игнорировать ошибки при обработке.

Записываем в переменную список всех имён столбцов (column_indexes). Сбрасываем индексы (df.reset_index), удаляем первый столбец df.drop (если вам нужен дополнительный столбец ID, который идёт первым, то можете этого не делать, если нужны только оригинальные данные — оставляем код)

После чего подставляем (переименовываем) названия столбцов и записываем результат в Excel.

Полный код:

import pandas as pd

excel = 'raw_data2.txt'

df = pd.read_csv(excel, sep=',', error_bad_lines=False)

column_indexes = list(df.columns)

df.reset_index(inplace=True)
df.drop(columns=df.columns[0], inplace=True)

column_indexes = dict(zip(list(df.columns), column_indexes))

df.rename(columns=column_indexes, inplace=True)
df.to_excel('output_2.xlsx', 'Sheet1', index=False)

Можно ли это сделать с помощью Excel?

Теоретически — можно, если Power Query сможет разобрать, что написано в вашем файле. Делается это просто: в Excel переходим во вкладку «Данные» и блок  «Получить и преобразовать данные«. Нажимаем на «Из текстового/CSV-файла«.

Выбираем текстовый документ с данными и механизм выдаст нам уже подготовленные данные:

Нажимаем «Преобразовать данные» и получаем готовую таблицу (если всё ок просто нажмите «Загрузить и закрыть» в левом верхнем углу)

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

Ваш адрес email не будет опубликован.