使用python讀取資料科學最常用的檔案格式
Author:kevinelstri
DateTime:2017/3/13
1、什麼是檔案格式?
檔案格式是在檔案中儲存資訊的一種標準方法。首先,檔案格式指定檔案是一個二進位制或ASCII檔案。其次,檔案展示了檔案的組織形式。例如,逗號分隔值(CSV)檔案格式儲存在純文字的表格資料。
2、為什麼資料科學家需要懂得不同的檔案格式?
通常,你遇到的檔案都取決於你使用的應用。例如,在一個影象處理系統中,你需要將影象檔案作為輸入輸出,所以你會看到一個JPEG,GIF或PNG格式。
作為資料科學家,你需要了解各種檔案格式的底層結構以及它們的優缺點等。除非你瞭解了資料的底層結構,否則你不能夠去探索它。而且,有時你需要決定怎麼去儲存資料。
選擇最佳的文字格式來儲存資料可以提高你的模型在資料處理中的效能。
3、使用python如何讀取不同的檔案格式?
3.1 csv
CSV格式屬於電子表格檔案格式。
那麼什麼是電子表格檔案格式呢?
在電子表格檔案格式中,資料儲存在單元格中。每個單元格按照行和列結構進行組織。電子表格中的列可以有不同的資料型別。例如,一列可以是字串型別,日期型別或整數型別。最流行的電子表格檔案格式就是CSV格式,xls格式和xlsx格式。
CSV中的每一行代表一個觀察,通常稱為一條記錄。每個記錄可以包含一個或多個由逗號分隔的欄位。
有時,你可能會看到檔案中不使用逗號分隔,但是使用製表符進行分隔,這樣的檔案格式稱為TSV(製表符分隔值)檔案格式。
下面是將CSV檔案使用Notepad開啟的結果:
import pandas as pd
pf = pd.read_csv('train.csv')
3.2 XLSX
xlsx是微軟Excel開啟XML檔案格式,它也是電子表格檔案格式,它是基於XML格式建立的Excel。xlsx資料是在一個表的單元格和列下組織的,每一個xlsx檔案可以包含多於一個的表格,因此工作簿可以包含多個表。
下面的影象顯示一個“xlsx檔案是微軟Excel開啟:
在上面的影象中,你可以看到檔案中存在多個表,包含客戶、僱員、發票和訂單,影象顯示的資料只有一個表-“發票”。
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()
3.9 HDF
在分層資料格式(HDF),您可以很容易儲存大量的資料。它不僅用於儲存高容量或複雜的資料,而且還用於儲存小體積或簡單的資料。
使用HDF的優點:
- 它可用於各種規模和型別的系統
- 它具有靈活,高效的儲存和快速I/O.
- 多格式支援HDF
現在有多個HDF格式。但是,HDF5是最新的版本,它用來解決一些老的HDF檔案格式的限制。HDF5格式與XML相似,像XML,HDF5檔案都是自描述的,允許使用者指定複雜的資料關係和依賴關係。
以一個HDF5檔案格式為例,可以識別以.h5為擴充套件的檔案:
讀取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檔案結構:下載
讀取多媒體檔案格式:
參考:PyMedia
3.13 mp4
MP4檔案格式用於儲存視訊和電影。它包含多幅影象(稱為幀),從而起到在一個視訊形式為每一個特定的時間。兩種方法來解釋mp4,一個是一個封閉的實體,其中整個視訊被認為是一個單一的實體。另一個是馬賽克的影象,其中在視訊中的每個影象被認為是作為一個不同的實體,這些影象從視訊進行取樣。
讀取MP4檔案:
參考:MoviePy
from moviepy.editor import VideoFileClip
clip = VideoFileClip(‘<video_file>.mp4’)