рекомендации

понедельник, 2 марта 2020 г.

Как, используя Python, читать распространенные форматы файлов, используемые в Data Science


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

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


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

1. Что такое формат файла?

Формат файла - это стандартный способ кодирования информации для хранения в файле. Во-первых, формат файла указывает, является ли файл двоичным или ASCII-файлом. Во-вторых, он показывает, как организована информация. Например, формат файла для значений с разделителями-запятыми (CSV) хранит табличные данные в виде простого текста.

Чтобы определить формат файла, вы обычно можете посмотреть его расширение. Например, файл, сохраненный с именем «Data» в формате «CSV», будет выглядеть как «Data.csv». Заметив расширение «.csv», мы можем четко определить, что это файл «CSV» и данные хранятся в табличном формате.



2. Почему специалист по данным должен понимать различные форматы файлов?

Обычно файлы, с которыми вы столкнетесь, будут зависеть от приложения, которое вы создаете. Например, в системе обработки изображений вам нужны файлы изображений для ввода и вывода. Таким образом, вы в основном увидите файлы в формате jpeg, gif или png.

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

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

Теперь мы рассмотрим следующие форматы файлов и способы их чтения в Python:

    Comma-separated values
    XLSX
    ZIP
    Plain Text (txt)
    JSON
    XML
    HTML
    Images
    Hierarchical Data Format
    PDF
    DOCX
    MP3
    MP4

3. Различные форматы файлов и как их читать в Python

3.1 Разделенные запятыми значения (CSV)

Формат файла значений, разделенных запятыми, подпадает под формат файла электронной таблицы.

Что такое формат файла электронной таблицы?

В файле формата электронной таблицы данные хранятся в ячейках. Ячейки организованы в строки и столбцы. Столбец в файле электронной таблицы может иметь разные типы. Например, столбец может иметь строковый тип, тип даты или целочисленный тип. Некоторые из наиболее популярных форматов файлов электронных таблиц:  Comma Separated Values (CSV), Microsoft Excel Spreadsheet (xls) и Microsoft Excel Open XML Spreadsheet (xlsx).

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

Иногда вы можете встретить файлы, в которых поля разделены не запятой, а табуляцией. Этот формат файла известен как TSV (Tab Separated Values).

На рисунке ниже показан файл CSV, который открыт в блокноте.



Чтение данных из CSV в Python

Давайте посмотрим, как читать CSV-файл в Python. Для загрузки данных вы можете использовать библиотеку «pandas».

import pandas as pd 
df = pd.read_csv(“/home/Loan_Prediction/train.csv”)

Приведенный выше код загрузит файл train.csv в DataFrame df.

3.2 Файлы XLSX

XLSX - это формат файла Microsoft Excel Open XML. Это формат файла на основе XML, созданный для Microsoft Excel. Формат XLSX был представлен в Microsoft Office 2007.

В XLSX данные организованы в ячейки и столбцы на листе. Каждый файл XLSX может содержать один или несколько листов. Таким образом, рабочая тетрадь может содержать несколько листов.

На изображении ниже показан файл «xlsx», который открывается в Microsoft Excel.


На изображении выше вы видите, что в этом файле присутствуют несколько листов (внизу слева): Customers, Employees, Invoice, Order. На рисунке показаны данные только одного листа - «Invoice».

Чтение данных из файла XLSX

Давайте загрузим данные из файла XLSX и определим имя листа. Для загрузки данных в Python вы можете использовать библиотеку Pandas.

import pandas as pd 
df = pd.read_excel(“/home/Loan_Prediction/train.xlsx”, sheetname = “Invoice”)

Приведенный выше код загрузит лист «Invoice» из файла «train.xlsx» в DataFrame df.

3.3 Файлы ZIP

ZIP формат - это формат файла архива.

Что такое файл архива?

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

Существует много популярных компьютерных форматов для создания архивных файлов. Zip, RAR и Tar являются наиболее популярными форматами архивных файлов для сжатия данных.

Таким образом, формат файла ZIP представляет собой формат сжатия без потерь, что означает, что если вы сжимаете несколько файлов с использованием формата ZIP, вы можете полностью восстановить данные после распаковки файла. Формат ZIP использует много алгоритмов сжатия. Вы можете легко определить ZIP-файл по расширению .zip.

Чтение .ZIP файла в Python

Вы можете прочитать zip-файл, импортировав пакет «zipfile». Ниже приведен код Python, который может прочитать файл «train.csv», который находится внутри «T.zip».
import zipfile
archive = zipfile.ZipFile('T.zip', 'r')
df = archive.read('train.csv')
Здесь я рассмотрел только один из известных форматов архивов и как открыть его в python. Я не упоминаю другие форматы архивов. Если вы хотите прочитать о различных форматах архивов и их сравнениях, вы можете обратиться к этой ссылке.

3.4 Простой текст (txt) 

В формате Plain Text все записывается в виде простого текста. Обычно этот текст находится в неструктурированной форме, и с ним не связано никаких метаданных. Формат файла TXT может быть легко прочитан любой программой. Но интерпретировать его с помощью компьютерной программы очень сложно.

Давайте рассмотрим простой пример текстового файла.

В следующем примере показаны данные из текстового файла:
In my previous article, I introduced you to the basics of Apache Spark, different data representations 
(RDD / DataFrame / Dataset) and basics of operations (Transformation and Action). We even solved a machine 
learning problem from one of our past hackathons. In this article, I will continue from the place I left in 
my previous article. I will focus on manipulating RDD in PySpark by applying operations 
(Transformation and Actions).
Предположим, что приведенный выше текст записан в файле с именем text.txt, и вы хотите прочитать его, это можно сделать следующим образом:
text_file = open("text.txt", "r")
lines = text_file.read()
3.5 Формат JSON 

JavaScript Object Notation (JSON) - это открытый текстовый стандарт, разработанный для обмена данными через интернет. Формат JSON используется для передачи структурированных данных через интернет. Формат файла JSON легко читается на любом языке программирования, поскольку он не зависит от языка.

Давайте рассмотрим пример файла JSON

В следующем примере показано, как в типичном файле JSON хранится информация о сотрудниках.
{
   "Employee": [

      {

         "id":"1",

         "Name": "Ankit",

         "Sal": "1000",

      },
      {

         "id":"2",

         "Name": "Faizy",

         "Sal": "2000",

      }

   ]

}
Чтение файла JSON

Давайте загрузим данные из файла JSON. Для загрузки данных вы можете использовать библиотеку pandas.
import pandas as pd 
df = pd.read_json(“/home/kunal/Downloads/Loan_Prediction/train.json”)
3.6 Формат XML 

XML также известен как Extensible Markup Language. Как следует из названия, это язык разметки. У него есть определенные правила для кодирования данных. Формат XML является читаемым человеком и машиночитаемым форматом файла. XML - это информативный язык, предназначенный для отправки информации через интернет. XML очень похож на HTML, но имеет некоторые отличия. Например, XML не использует предопределенные теги, как HTML.

Давайте рассмотрим простой пример формата XML-файла.

В следующем примере показан документ XML, который содержит информацию о сотруднике.

<?xml version="1.0"?>
<contact-info>

<name>Ankit</name>

<company>Anlytics Vidhya</company>

<phone>+9187654321</phone>

</contact-info>

“<?xml version=”1.0″?>” - это объявление XML в начале файла (необязательное). В этом объявлении version указывает версию XML, а encoding - кодировку символов, используемую в документе. <contact-info> - это тег в этом документе. Каждый XML-тег должен быть закрыт.

Чтение XML в python

Для чтения данных из XML-файла вы можете импортировать библиотеку xml.etree. ElementTree.

Давайте импортируем XML-файл с именем train и напечатаем его корневой тег.
import xml.etree.ElementTree as ET
tree = ET.parse('/home/sunilray/Desktop/2 sigma/train.xml')
root = tree.getroot()
print root.tag
3.7 Файлы HTML

HTML расшифровывается как Hyper Text Markup Language. Это стандартный язык разметки, который используется для создания веб-страниц. HTML используется для описания структуры веб-страниц с использованием разметки. HTML-теги такие же, как XML, но они предопределены. Вы можете легко определить подраздел документа HTML на основе таких тегов, как , представляющих заголовок документа. HTML не чувствителен к регистру.

В следующем примере показан документ HTML.
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body><h1>My First Heading</h1>
<p>My first paragraph.</p></body>
</html>
Каждый тег в HTML заключен в угловую скобку (<>). Тег <! DOCTYPE html> определяет, что документ находится в формате HTML. <html> является корневым тегом этого документа. Элемент <head> содержит заголовочную часть документа. <Title>, <body>, <h1>, <p> представляют соответственно заголовок, тело, заголовок и абзац в документе HTML.

Чтение файла HTML 

Для чтения HTML-файла вы можете использовать библиотеку BeautifulSoup. Пожалуйста, обратитесь к этому руководству, которое поможет вам разобраться в HTML-документах:


3.8 Файлы изображений

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

Обычные файлы изображений являются трехмерными и содержат значения RGB. Но они также могут быть 2-мерными (в оттенках серого) или 4-мерными (включающими интенсивность) - изображениями, состоящими из пикселей и связанных с ним метаданных.

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

Давайте загрузим пример изображения.
from scipy import misc
f = misc.face()
misc.imsave('face.png', f) # uses the Image module (PIL)
import matplotlib.pyplot as plt
plt.imshow(f)
plt.show()

Теперь давайте проверим тип этого изображения и его форму.
type(f) , f.shape
numpy.ndarray,(768, 1024, 3)
Если вы хотите прочитать об обработке изображений, вы можете обратиться к этой статье. Эта статья научит вас обработке изображений на примере: Basics of Image Processing in Python.

3.9 Hierarchical Data Format (HDF)

В Hierarchical Data Format (HDF) вы можете легко хранить большое количество данных. Он используется не только для хранения больших объемов или сложных данных, но также для хранения небольших объемов данных.

Преимущества использования HDF:

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

Существует несколько форматов HDF, но HDF5 - это последняя версия, разработанная для устранения некоторых ограничений старых форматов файлов HDF. Формат HDF5 имеет некоторое сходство с XML. Как и XML, файлы HDF5 имеют самоописание и позволяют пользователям указывать сложные взаимосвязи и зависимости данных.

Давайте рассмотрим пример формата файла HDF5, который можно определить с помощью расширения .h5.



Чтение файла HDF5

Вы можете прочитать файл HDF, используя pandas. Ниже приведен код Python, который загружает данные train.h5 в «t».
t = pd.read_hdf(‘train.h5’)
3.10 Формат PDF

PDF (Portable Document Format) - невероятно полезный формат, используемый для интерпретации и отображения текстовых документов вместе со встроенной графикой. Особенностью PDF-файла является то, что он может быть защищен паролем.

Вот пример файла PDF.



Чтение файла PDF

С другой стороны, чтение формата PDF программно является сложной задачей. Хотя существует библиотека, которая хорошо справляется с разбором PDF-файла, PDFMiner. Чтобы прочитать файл PDF с помощью PDFMiner, вам необходимо:

Скачать PDFMiner с сайта и установить ее.
Извлечь содержимое файла PDF с помощью следующего кода:
pdf2txt.py <pdf_file>.pdf
3.11 Формат DOCX

Файл Microsoft Word Docx - это другой формат файла, который регулярно используется организациями для текстовых данных. Он имеет много возможностей, таких как добавление таблиц, изображений, гиперссылок и т. д., что делает docx невероятно важным форматом файла.

Преимущество файла docx перед файлом PDF заключается в том, что файл docx можно редактировать. Вы также можете конвертировать файл DOCX в любой другой формат.

Вот пример файла docx:


Чтение файла docx

Подобно формату PDF, python имеет библиотеку, созданную сообществом для анализа файла docx. Она называется python-docx2txt.

Установить эту библиотеку легко с помощью pip:
pip install docx2txt
Чтобы прочитать файл docx в Python, используйте следующий код:
import docx2txt
text = docx2txt.process("file.docx")
3.12 Формат MP3

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

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

MP3 является одним из наиболее распространенных форматов кодирования звука. В формате mp3 используется формат кодирования MPEG-1 (Moving Picture Experts Group – 1), который является стандартом сжатия видео и аудио с потерями. При сжатии с потерями, после сжатия исходного файла вы не сможете восстановить исходные данные.

Формат mp3 сжимает звук, отфильтровывая звук, который не слышен людям. Сжатие MP3 обычно позволяет уменьшить размер на 75-95%, что экономит много места.

Структура формата mp3 

Файл mp3 состоит из нескольких фреймов. Фрейм может быть дополнительно разделен на заголовок и блок данных. Мы называем эти последовательности фреймов элементарным потоком.

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

Чтение мультимедийных файлов в Python

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

3.13 Формат MP4 

Формат MP4 используется для хранения видео. Он содержит множество изображений (называемых кадрами), которые воспроизводятся в виде видео в течение определенного периода времени. Есть два метода для интерпретации файла mp4. Одним из них является закрытый объект, в котором все видео рассматривается как один объект. И другой - это мозаика изображений, где каждое изображение в видео рассматривается как отдельная сущность, и эти изображения берутся из видео.

Вот пример видео в формате mp4



Чтение файла mp4

Для MP4 также имеется встроенная библиотека, которая называется MoviePy.

Вы можете установить библиотеку по этой ссылке. Чтобы прочитать видеоклип в формате mp4, в Python используйте следующий код.
from moviepy.editor import VideoFileClip
clip = VideoFileClip(‘<video_file>.mp4’)
Затем вы можете отобразить это в jupyter notebook, как показано ниже
ipython_display(clip)

Комментариев нет:

Отправка комментария