Как читать файлы .data в Python?

При вводе и сборе данных для учебных моделей мы сталкиваемся с файлами .data. Такое расширение используется некоторыми программами. Одним из примеров является Analysis Studio, специализирующаяся на статистическом анализе и добыче данных.

Работа с расширением файла .data довольно проста и сводится к определению способа сортировки данных с последующим использованием команд Python для доступа к файлу соответствующим образом.

Что собой представляют файлы .data?

Файлы .data были разработаны как средство хранения данных. Чаще всего данные в этом формате размещаются в формате значений, разделенных запятыми или табуляцией. Наряду с этим файл может быть в текстовом формате или в двоичном. Режимы доступа для этих двух случаев будут разными.

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

Идентификация данных в файлах .data

Файлы .data могут быть либо в виде текста, либо в двоичном виде. Чтобы выяснить, к какому из видов относится файл, нам нужно загрузить его и проверить.

Давайте начнем!

1. Тестирование: текстовый файл

Файлы .data в основном существуют в виде текстовых файлов. Доступ к файлам в Python довольно прост, для этого есть встроенный функционал. То есть вам не придется что-либо импортировать.

Открытие, чтение и запись в файл в Python выглядят следующим образом:

# Открытие файла для чтения
file = open("biscuits.data", "r")
# Чтение файла
file.read()
# Закрытие файла
file.close()
 
# Открытие файла для записи
file = open("biscuits.data", "w")
# Запись файла
file.write("Chocolate Chip")
# Закрытие файла
file.close()

2. Тестирование: бинарный файл

Файлы .data могут быть также в виде двоичных файлов. При открытии таких файлов нужно поменять режим доступа. Для чтения это будет режим rb (расшифровывается как read binary) , а для записи – wb (write binary).

# Открытие и чтение бинарного файла
file = open("biscuits.data", "rb")
file.read()
file.close()
 
# Открытие и запись бинарного файла
file = open("biscuits.data", "wb")
file.write("Oreos")
file.close()

Файловые операции в Python относительно просты. Попробуйте разные режимы на практике, чтобы увидеть разницу между ними.

Какой-нибудь из этих подходов должен сработать и предоставить вам метод получения информации о содержимом, хранящемся в файле .data.

Теперь, когда мы знаем, в каком формате представлен файл, мы можем поработать с pandas, чтобы создать DataFrame для файла.

3. Использование Pandas для чтения файлов .data

Простым методом извлечения информации из этих файлов после проверки типа содержимого будет использование функции read_csv(), предоставляемой Pandas.

Примечание редакции: “csv” расшифровывается как “значения, разделенные запятыми”, а “tsv”, соответственно, “значения, разделенные табуляцией”.

import pandas as pd
# Чтение csv-файла
data =  pd.read_csv('file.data', sep=",")
print(data)
 
# Чтение tsv-файла
data = pd.read_csv('otherfile.data', sep="\t")
print(data)

Этот метод также автоматически преобразует данные в датафрейм.

Ниже используется пример файла csv, который был переформатирован в файл .data. Доступ к нему осуществляется с помощью того же кода, который приведен выше.

   Series reference                                        Description   Period  Previously published  Revised
0    PPIQ.SQU900000                 PPI output index - All industries   2020.06                  1183     1184
1    PPIQ.SQU900001         PPI output index - All industries excl OOD  2020.06                  1180     1181
2    PPIQ.SQUC76745  PPI published output commodity - Transport sup...  2020.06                  1400     1603
3    PPIQ.SQUCC3100  PPI output index level 3 - Wood product manufa...  2020.06                  1169     1170
4    PPIQ.SQUCC3110  PPI output index level 4 - Wood product manufa...  2020.06                  1169     1170
..              ...                                                ...      ...                   ...      ...
73   PPIQ.SQNMN2100  PPI input index level 3 - Administrative and s...  2020.06                  1194     1195
74   PPIQ.SQNRS211X     PPI input index level 4 - Repair & maintenance  2020.06                  1126     1127
75       FPIQ.SEC14  Farm expenses price index - Dairy farms - Freight  2020.06                  1102     1120
76       FPIQ.SEC99  Farm expenses price index - Dairy farms - All ...  2020.06                  1067     1068
77       FPIQ.SEH14    Farm expenses price index - All farms - Freight  2020.06                  1102     1110
 
[78 rows x 5 columns]

Как видите, это действительно дало нам DataFrame в качестве вывода.

Какие еще есть форматы для хранения данных?

Иногда стандартный метод хранения данных просто не подходит. Итак, каковы альтернативы работе с файловым хранилищем?

1. Файлы JSON

Как метод хранения информации, JSON – замечательная структура данных, а огромная поддержка модуля JSON в Python очень облегчает работу с этим форматом.

Однако, чтобы работать с JSON в Python, вам нужно будет импортировать модуль json.

import json

После построения JSON-совместимой структуры ее сохранение – это простая файловая операция с json-дампами.

# Дамп структуры в форме объекта JSON в файл
with open("file.json", "w") as f:
    json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}], f)
# С помощью этого модуля также можно отсортировать ключи и организовать красивый вывод
with open("file.json", "w") as f:
    json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}], f, indent=4,  sort_keys=True)

Обратите внимание, что мы делаем сброс в файл с помощью переменной f.

Эквивалентная функция для получения информации из файла JSON называется load.

with open('file.json') as f:
    data = json.load(f)

Это предоставляет нам структуру и информацию об объекте JSON внутри файла.

2. Pickle

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

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

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

Для того чтобы воспользоваться этим, нам нужно импортировать модуль pickle. Устанавливать его не нужно, так как он является частью стандартной библиотеки Python.

import pickle

Давайте создадим словарь для работы со всеми нашими файловыми операциями.

apple = {"name": "Apple", "price": 40}
banana = {"name": "Banana", "price": 60}
orange = {"name": "Orange", "price": 30}
 
fruitShop = {}
fruitShop["apple"] = apple
fruitShop["banana"] = banana
fruitShop["orange"] = orange

Работать с модулем pickle так же просто, как и с JSON.

file = open('fruitPickles', 'ab') 
# Режим 'ab' позволяет открывать 
# для дозаписи файл в бинарном формате
 
# Метод dump добавляет данные в файл
# в безопасном сериализованном формате.
pickle.dump(fruitShop, file)                      
file.close()
 
file = open('fruitPickles', 'rb')
# Теперь мы можем читать из файла при помощи функции load.
fruitShop = pickle.load(file)
file.close()

Заключение

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

Перевод статьи «How to read .data files in Python?».

Оставьте комментарий

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