Author:kevinelstri
DateTime:2017/3/13
译文:How to read most commonly used file formats in Data Science (using Python)?
1、什么是文件格式?
文件格式是在文件中存储信息的一种标准方法。首先,文件格式指定文件是一个二进制或ASCII文件。其次,文件展示了文件的组织形式。例如,逗号分隔值(CSV)文件格式存储在纯文本的表格数据。
![](http://i.imgur.com/BGhEiyN.png)
2、为什么数据科学家需要懂得不同的文件格式?
通常,你遇到的文件都取决于你使用的应用。例如,在一个图像处理系统中,你需要将图像文件作为输入输出,所以你会看到一个JPEG,GIF或PNG格式。
作为数据科学家,你需要了解各种文件格式的底层结构以及它们的优缺点等。除非你了解了数据的底层结构,否则你不能够去探索它。而且,有时你需要决定怎么去存储数据。
选择最佳的文本格式来存储数据可以提高你的模型在数据处理中的性能。
3、使用python如何读取不同的文件格式?
3.1 csv
CSV格式属于电子表格文件格式。
那么什么是电子表格文件格式呢?
在电子表格文件格式中,数据存储在单元格中。每个单元格按照行和列结构进行组织。电子表格中的列可以有不同的数据类型。例如,一列可以是字符串类型,日期类型或整数类型。最流行的电子表格文件格式就是CSV格式,xls格式和xlsx格式。
CSV中的每一行代表一个观察,通常称为一条记录。每个记录可以包含一个或多个由逗号分隔的字段。
有时,你可能会看到文件中不使用逗号分隔,但是使用制表符进行分隔,这样的文件格式称为TSV(制表符分隔值)文件格式。
下面是将CSV文件使用Notepad打开的结果:
![](http://i.imgur.com/CqDpPzG.png)
import pandas as pd
pf = pd.read_csv('train.csv')
3.2 XLSX
xlsx是微软Excel打开XML文件格式,它也是电子表格文件格式,它是基于XML格式创建的Excel。xlsx数据是在一个表的单元格和列下组织的,每一个xlsx文件可以包含多于一个的表格,因此工作簿可以包含多个表。
下面的图像显示一个“xlsx文件是微软Excel打开:
![](http://i.imgur.com/ba4IQoE.png)
在上面的图像中,你可以看到文件中存在多个表,包含客户、雇员、发票和订单,图像显示的数据只有一个表-“发票”。
import pandas as pd
pf = pd.read_excel('train.xlsx',sheetname = 'invoice')
3.3 ZIP
zip格式是存档文件格式。
在归档文件格式中,创建一个包含多个文件以及元数据的文件。归档文件格式用于将多个数据文件收集到一个文件中。这样做是为了简单地压缩文件,使用更少的存储空间。
有许多流行的计算机数据存档格式创建归档文件。ZIP,RAR和Tar是最流行的基于数据压缩的存档文件格式。
所以,一个ZIP文件格式是一种无损压缩格式,这意味着如果你使用zip格式压缩多个文件,解压缩后,可以完全恢复数据。zip文件格式使用许多压缩算法压缩文档。您可以轻松地识别ZIP文件的ZIP扩展名。
import zipfile
archive = zipfile.ZipFile('T.zip', 'r')
df = archive.read('train.csv')
3.4 TXT纯文本格式
在纯文本文件格式,一切都写在纯文本。通常,这个文本是非结构化的,并且没有与它相关的元数据。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_file = open("text.txt", "r")
lines = text_file.read()
3.5 JSON
Javascript对象符号(JSON)是一个基于文本的开放标准的数据交换网络设计。JSON格式用于在网上传输结构化数据。JSON格式的文件可以很容易地使用任何编程语言来读取,因为它是独立于语言的数据格式。
以一个JSON文件为实例,下面显示了一个典型的JSON文件存储信息的员工信息:
{
"Employee": [
{
"id":"1",
"Name": "Ankit",
"Sal": "1000",
},
{
"id":"2",
"Name": "Faizy",
"Sal": "2000",
}
]
}
读取JSON文件:
import pandas as pd
df = pd.read_json('train.json')
3.6 XML
XML也称为可扩展标记语言。顾名思义,它是一种标记语言。它具有一定的编码数据规则。XML文件格式是一个人类可读和机器可读的文件格式。XML的自描述性语言设计用于通过Internet发送信息。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文件:
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代表超文本标记语言,它是用于创建网页的标准标记语言,HTML是用来描述网页结构使用的标记。HTML标签类似于XML但是是预定义的。可以很容易地识别的HTML文档分段标签,如<head>代表HTML文档的标题,<BR>“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文件:
使用BeautifulSoup库来读取HTML文件,参考:使用BeautifulSoup进行网络爬虫
3.8 images
图像文件可能是数据科学中最迷人的文件格式。任何计算机视觉中的应用是基于图像处理过程的,所以有必要了解不同的图像文件格式。
常见的图像文件是三维的,有RGB值。但是,他们也可以是二维(灰度)或四维(有强度),图像是由像素和与其相关的元数据构成的。
每个图像由一个或多个像素帧组成,每个帧是由二维数组的像素值,像素值可以是任何强度。元数据与图像是相关的,可以是一个图像类型(PNG)或像素尺寸。
读取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()
如果想阅读关于图像处理的文章,可以参考:基于python的图像处理基础
3.9 HDF
在分层数据格式(HDF),您可以很容易存储大量的数据。它不仅用于存储高容量或复杂的数据,而且还用于存储小体积或简单的数据。
使用HDF的优点:
- 它可用于各种规模和类型的系统
- 它具有灵活,高效的存储和快速I/O.
- 多格式支持HDF
现在有多个HDF格式。但是,HDF5是最新的版本,它用来解决一些老的HDF文件格式的限制。HDF5格式与XML相似,像XML,HDF5文件都是自描述的,允许用户指定复杂的数据关系和依赖关系。
以一个HDF5文件格式为例,可以识别以.h5为扩展的文件:
![](http://i.imgur.com/D9en1xz.png)
读取HDF5文件:
import pandas as pd
df = pd.read_hdf('train.h5')
3.10 PDF
PDF(Portable Document Format)是通过结合图形来解释和文本显示的格式结合,一个PDF文件的特点在于它可以通过密码保护。
安装pdfminer库:
python setup.py install
读取PDF文件:
pdf2txt.py train.pdf # 测试读取pdf
3.11 docx
微软Word的docx文件是另一种文件格式,它是基于文本的数据组织的。它有许多特点,如表格的内联加法,图像、超链接等,这有助于在一个非常重要的文件格式。
docx文件对于PDF文件,具有的优点就是docx文件是可编辑的。你也可以把docx文件转换成任何其他格式。
安装docx2txt库:
pip install docx2txt
读取docx文件:
import docx2txt
text = docx2txt.process("file.docx")
3.12 mp3
MP3文件格式来自于多媒体文件格式,多媒体文件格式类似于图像文件格式,但它们恰好都是最复杂的文件格式。
在多媒体文件格式中,您可以存储各种数据,如文字图像,图形,视频和音频数据。例如,一个多媒体格式可以允许文本被存储为富文本格式(RTF)的数据而非ASCII数据,这是一个纯文本格式。
MP3是一种最常见的音频编码格式的数字音频。一个MP3文件格式采用的MPEG-1编码格式为视频和音频压缩标准。在有损压缩中,一旦压缩原始文件,则无法恢复原始数据。
一个MP3文件格式过滤掉人类无法听到的声音,压缩了音频的质量。MP3压缩通常减小达到75%至95%,从而节省了大量的空间。
一个MP3文件有许多框架。框架可以进一步分为标题和数据块。我们称这些序列的框架是基本流。
在MP3的头部,找出有效的框架和一个数据块的开始包含(压缩)在频率和振幅的音频信息。
下面是MP3文件结构:下载
![](http://i.imgur.com/EkznESS.png)
读取多媒体文件格式:
参考: PyMedia
3.13 mp4
MP4文件格式用于存储视频和电影。它包含多幅图像(称为帧),从而起到在一个视频形式为每一个特定的时间。两种方法来解释mp4,一个是一个封闭的实体,其中整个视频被认为是一个单一的实体。另一个是马赛克的图像,其中在视频中的每个图像被认为是作为一个不同的实体,这些图像从视频进行采样。
![](http://i.imgur.com/W5wo23P.png)
读取MP4文件:
参考:MoviePy
from moviepy.editor import VideoFileClip
clip = VideoFileClip(‘<video_file>.mp4’)