使用python讀取數(shù)據(jù)科學(xué)最常用的文件格式(轉(zhuǎn))

Author:kevinelstri
DateTime:2017/3/13


譯文:How to read most commonly used file formats in Data Science (using Python)?


1、什么是文件格式设预?

文件格式是在文件中存儲(chǔ)信息的一種標(biāo)準(zhǔn)方法怯邪。首先,文件格式指定文件是一個(gè)二進(jìn)制或ASCII文件栋齿。其次想括,文件展示了文件的組織形式。例如褪子,逗號(hào)分隔值(CSV)文件格式存儲(chǔ)在純文本的表格數(shù)據(jù)辙售。


image.png

2轻抱、為什么數(shù)據(jù)科學(xué)家需要懂得不同的文件格式?

通常旦部,你遇到的文件都取決于你使用的應(yīng)用十拣。例如,在一個(gè)圖像處理系統(tǒng)中志鹃,你需要將圖像文件作為輸入輸出,所以你會(huì)看到一個(gè)JPEG,GIF或PNG格式泽西。
作為數(shù)據(jù)科學(xué)家曹铃,你需要了解各種文件格式的底層結(jié)構(gòu)以及它們的優(yōu)缺點(diǎn)等。除非你了解了數(shù)據(jù)的底層結(jié)構(gòu)捧杉,否則你不能夠去探索它陕见。而且,有時(shí)你需要決定怎么去存儲(chǔ)數(shù)據(jù)味抖。
選擇最佳的文本格式來(lái)存儲(chǔ)數(shù)據(jù)可以提高你的模型在數(shù)據(jù)處理中的性能评甜。

3、使用python如何讀取不同的文件格式仔涩?

3.1 csv

CSV格式屬于電子表格文件格式忍坷。
那么什么是電子表格文件格式呢?
在電子表格文件格式中熔脂,數(shù)據(jù)存儲(chǔ)在單元格中佩研。每個(gè)單元格按照行和列結(jié)構(gòu)進(jìn)行組織。電子表格中的列可以有不同的數(shù)據(jù)類型霞揉。例如旬薯,一列可以是字符串類型,日期類型或整數(shù)類型适秩。最流行的電子表格文件格式就是CSV格式绊序,xls格式和xlsx格式。
CSV中的每一行代表一個(gè)觀察秽荞,通常稱為一條記錄骤公。每個(gè)記錄可以包含一個(gè)或多個(gè)由逗號(hào)分隔的字段。
有時(shí)蚂会,你可能會(huì)看到文件中不使用逗號(hào)分隔淋样,但是使用制表符進(jìn)行分隔,這樣的文件格式稱為TSV(制表符分隔值)文件格式胁住。
下面是將CSV文件使用Notepad打開的結(jié)果:

image.png
import pandas as pd
pf = pd.read_csv('train.csv')

3.2 XLSX

xlsx是微軟Excel打開XML文件格式,它也是電子表格文件格式趁猴,它是基于XML格式創(chuàng)建的Excel刊咳。xlsx數(shù)據(jù)是在一個(gè)表的單元格和列下組織的,每一個(gè)xlsx文件可以包含多于一個(gè)的表格儡司,因此工作簿可以包含多個(gè)表娱挨。
下面的圖像顯示一個(gè)“xlsx文件是微軟Excel打開:

image.png

在上面的圖像中,你可以看到文件中存在多個(gè)表捕犬,包含客戶跷坝、雇員、發(fā)票和訂單碉碉,圖像顯示的數(shù)據(jù)只有一個(gè)表-“發(fā)票”柴钻。

import pandas as pd
pf = pd.read_excel('train.xlsx',sheetname = 'invoice')

3.3 ZIP

zip格式是存檔文件格式。
在歸檔文件格式中垢粮,創(chuàng)建一個(gè)包含多個(gè)文件以及元數(shù)據(jù)的文件贴届。歸檔文件格式用于將多個(gè)數(shù)據(jù)文件收集到一個(gè)文件中。這樣做是為了簡(jiǎn)單地壓縮文件蜡吧,使用更少的存儲(chǔ)空間毫蚓。
有許多流行的計(jì)算機(jī)數(shù)據(jù)存檔格式創(chuàng)建歸檔文件。ZIP昔善,RAR和Tar是最流行的基于數(shù)據(jù)壓縮的存檔文件格式元潘。
所以,一個(gè)ZIP文件格式是一種無(wú)損壓縮格式君仆,這意味著如果你使用zip格式壓縮多個(gè)文件翩概,解壓縮后,可以完全恢復(fù)數(shù)據(jù)袖订。zip文件格式使用許多壓縮算法壓縮文檔氮帐。您可以輕松地識(shí)別ZIP文件的ZIP擴(kuò)展名。

import zipfile
archive = zipfile.ZipFile('T.zip', 'r')
df = archive.read('train.csv')

3.4 TXT純文本格式

在純文本文件格式洛姑,一切都寫在純文本上沐。通常,這個(gè)文本是非結(jié)構(gòu)化的楞艾,并且沒有與它相關(guān)的元數(shù)據(jù)参咙。txt格式的文件可以很容易地通過任何程序進(jìn)行讀取。但是通過計(jì)算機(jī)程序來(lái)編譯是非常困難的硫眯。
舉一個(gè)簡(jiǎn)單的文本文件示例蕴侧,下面的示例顯示包含文本的文本文件數(shù)據(jù):

“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對(duì)象符號(hào)(JSON)是一個(gè)基于文本的開放標(biāo)準(zhǔn)的數(shù)據(jù)交換網(wǎng)絡(luò)設(shè)計(jì)。JSON格式用于在網(wǎng)上傳輸結(jié)構(gòu)化數(shù)據(jù)两入。JSON格式的文件可以很容易地使用任何編程語(yǔ)言來(lái)讀取净宵,因?yàn)樗仟?dú)立于語(yǔ)言的數(shù)據(jù)格式。
以一個(gè)JSON文件為實(shí)例,下面顯示了一個(gè)典型的JSON文件存儲(chǔ)信息的員工信息:

{
   "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也稱為可擴(kuò)展標(biāo)記語(yǔ)言择葡。顧名思義紧武,它是一種標(biāo)記語(yǔ)言。它具有一定的編碼數(shù)據(jù)規(guī)則敏储。XML文件格式是一個(gè)人類可讀和機(jī)器可讀的文件格式阻星。XML的自描述性語(yǔ)言設(shè)計(jì)用于通過Internet發(fā)送信息。XML是HTML非常相似已添,但有一些差異妥箕。例如,XML不使用預(yù)定義的標(biāo)簽為HTML更舞。
以XML文件格式的簡(jiǎn)單例子畦幢,下面顯示了一個(gè) XML文檔,包含一個(gè)員工的信息:

<?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代表超文本標(biāo)記語(yǔ)言,它是用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言,HTML是用來(lái)描述網(wǎng)頁(yè)結(jié)構(gòu)使用的標(biāo)記缆蝉。HTML標(biāo)簽類似于XML但是是預(yù)定義的呛讲。可以很容易地識(shí)別的HTML文檔分段標(biāo)簽返奉,如<head>代表HTML文檔的標(biāo)題,<BR>“HTML段落段落”吗氏,并且HTML是不區(qū)分大小寫的芽偏。
下面顯示一個(gè)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庫(kù)來(lái)讀取HTML文件,參考:使用BeautifulSoup進(jìn)行網(wǎng)絡(luò)爬蟲

3.8 images

圖像文件可能是數(shù)據(jù)科學(xué)中最迷人的文件格式弦讽。任何計(jì)算機(jī)視覺中的應(yīng)用是基于圖像處理過程的污尉,所以有必要了解不同的圖像文件格式。
常見的圖像文件是三維的往产,有RGB值被碗。但是,他們也可以是二維(灰度)或四維(有強(qiáng)度)仿村,圖像是由像素和與其相關(guān)的元數(shù)據(jù)構(gòu)成的锐朴。
每個(gè)圖像由一個(gè)或多個(gè)像素幀組成,每個(gè)幀是由二維數(shù)組的像素值蔼囊,像素值可以是任何強(qiáng)度焚志。元數(shù)據(jù)與圖像是相關(guān)的,可以是一個(gè)圖像類型(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()  

如果想閱讀關(guān)于圖像處理的文章酱酬,可以參考:基于python的圖像處理基礎(chǔ)

3.9 HDF

在分層數(shù)據(jù)格式(HDF),您可以很容易存儲(chǔ)大量的數(shù)據(jù)云矫。它不僅用于存儲(chǔ)高容量或復(fù)雜的數(shù)據(jù)膳沽,而且還用于存儲(chǔ)小體積或簡(jiǎn)單的數(shù)據(jù)。
使用HDF的優(yōu)點(diǎn):

  • 它可用于各種規(guī)模和類型的系統(tǒng)

  • 它具有靈活,高效的存儲(chǔ)和快速I/O.

  • 多格式支持HDF

    現(xiàn)在有多個(gè)HDF格式挑社。但是陨界,HDF5是最新的版本,它用來(lái)解決一些老的HDF文件格式的限制滔灶。HDF5格式與XML相似普碎,像XML,HDF5文件都是自描述的录平,允許用戶指定復(fù)雜的數(shù)據(jù)關(guān)系和依賴關(guān)系麻车。
    以一個(gè)HDF5文件格式為例,可以識(shí)別以.h5為擴(kuò)展的文件:

image.png

讀取HDF5文件:

import pandas as pd
df = pd.read_hdf('train.h5')

3.10 PDF

PDF(Portable Document Format)是通過結(jié)合圖形來(lái)解釋和文本顯示的格式結(jié)合斗这,一個(gè)PDF文件的特點(diǎn)在于它可以通過密碼保護(hù)动猬。


image.png

安裝pdfminer庫(kù):

python setup.py install

讀取PDF文件:

pdf2txt.py train.pdf  # 測(cè)試讀取pdf

3.11 docx

微軟Word的docx文件是另一種文件格式,它是基于文本的數(shù)據(jù)組織的表箭。它有許多特點(diǎn)赁咙,如表格的內(nèi)聯(lián)加法,圖像免钻、超鏈接等彼水,這有助于在一個(gè)非常重要的文件格式。
docx文件對(duì)于PDF文件极舔,具有的優(yōu)點(diǎn)就是docx文件是可編輯的凤覆。你也可以把docx文件轉(zhuǎn)換成任何其他格式。


image.png

安裝docx2txt庫(kù):

pip install docx2txt

讀取docx文件:

import docx2txt
text = docx2txt.process("file.docx")

3.12 mp3

MP3文件格式來(lái)自于多媒體文件格式拆魏,多媒體文件格式類似于圖像文件格式盯桦,但它們恰好都是最復(fù)雜的文件格式。
在多媒體文件格式中渤刃,您可以存儲(chǔ)各種數(shù)據(jù)拥峦,如文字圖像,圖形卖子,視頻和音頻數(shù)據(jù)略号。例如,一個(gè)多媒體格式可以允許文本被存儲(chǔ)為富文本格式(RTF)的數(shù)據(jù)而非ASCII數(shù)據(jù)洋闽,這是一個(gè)純文本格式璃哟。
MP3是一種最常見的音頻編碼格式的數(shù)字音頻。一個(gè)MP3文件格式采用的MPEG-1編碼格式為視頻和音頻壓縮標(biāo)準(zhǔn)喊递。在有損壓縮中随闪,一旦壓縮原始文件,則無(wú)法恢復(fù)原始數(shù)據(jù)骚勘。
一個(gè)MP3文件格式過濾掉人類無(wú)法聽到的聲音铐伴,壓縮了音頻的質(zhì)量撮奏。MP3壓縮通常減小達(dá)到75%至95%,從而節(jié)省了大量的空間当宴。
一個(gè)MP3文件有許多框架畜吊。框架可以進(jìn)一步分為標(biāo)題和數(shù)據(jù)塊户矢。我們稱這些序列的框架是基本流玲献。
在MP3的頭部,找出有效的框架和一個(gè)數(shù)據(jù)塊的開始包含(壓縮)在頻率和振幅的音頻信息梯浪。
下面是MP3文件結(jié)構(gòu):下載

image.png

讀取多媒體文件格式:
參考:PyMedia

3.13 mp4

MP4文件格式用于存儲(chǔ)視頻和電影捌年。它包含多幅圖像(稱為幀),從而起到在一個(gè)視頻形式為每一個(gè)特定的時(shí)間挂洛。兩種方法來(lái)解釋mp4礼预,一個(gè)是一個(gè)封閉的實(shí)體,其中整個(gè)視頻被認(rèn)為是一個(gè)單一的實(shí)體虏劲。另一個(gè)是馬賽克的圖像托酸,其中在視頻中的每個(gè)圖像被認(rèn)為是作為一個(gè)不同的實(shí)體,這些圖像從視頻進(jìn)行采樣柒巫。

image.png

讀取MP4文件:
參考:MoviePy

from moviepy.editor import VideoFileClip
clip = VideoFileClip(‘<video_file>.mp4’)

參考文獻(xiàn)

http://blog.csdn.net/kevinelstri/article/details/61921812

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末励堡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子堡掏,更是在濱河造成了極大的恐慌念秧,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件布疼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡币狠,警方通過查閱死者的電腦和手機(jī)游两,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)漩绵,“玉大人贱案,你說我怎么就攤上這事≈雇拢” “怎么了宝踪?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)碍扔。 經(jīng)常有香客問我瘩燥,道長(zhǎng),這世上最難降的妖魔是什么不同? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任厉膀,我火速辦了婚禮溶耘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘服鹅。我一直安慰自己凳兵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布企软。 她就那樣靜靜地躺著庐扫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仗哨。 梳的紋絲不亂的頭發(fā)上形庭,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音藻治,去河邊找鬼碘勉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桩卵,可吹牛的內(nèi)容都是我干的验靡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼雏节,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胜嗓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钩乍,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辞州,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后寥粹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體变过,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年涝涤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了媚狰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阔拳,死狀恐怖崭孤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糊肠,我是刑警寧澤辨宠,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站货裹,受9級(jí)特大地震影響嗤形,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弧圆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一派殷、第九天 我趴在偏房一處隱蔽的房頂上張望还最。 院中可真熱鬧,春花似錦毡惜、人聲如沸拓轻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扶叉。三九已至,卻和暖如春帕膜,著一層夾襖步出監(jiān)牢的瞬間枣氧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工垮刹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留达吞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓荒典,卻偏偏與公主長(zhǎng)得像酪劫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寺董,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容