Apache Parquet 檔案是資料科學家和任何使用 Hadoop 生態系統的人所使用的流行列式儲存格式。它的開發在壓縮和編碼方面非常高效。
您可以使用pyarrow 包透過 Python 讀取和寫入 Parquet 檔案。
現在讓我們來了解一下它是如何工作的!
安裝 pyarrow
第一步是確保您擁有所需的一切。除了 Python 程式語言之外,您還需要pyarrow和pandas包。您將使用 pandas,因為它是另一個使用列作為資料格式的 Python 包,並且可以很好地與 Parquet 檔案配合使用。
您可以使用 pip 安裝這兩個軟體包。開啟終端並執行以下命令:
python -m pip install pyarrow pandas
如果您使用 Anaconda,則需要使用此命令安裝 pyarrow。
conda install -c conda-forge pyarrow
Anaconda 應該已經包含 pandas,但如果沒有,您可以使用上面相同的命令,將 pyarrow 替換為 pandas。
現在您已經安裝了 pyarrow 和 pandas,您可以使用它來讀取和寫入 Parquet 檔案!
使用 Python 編寫 Parquet 檔案
使用 Python 編寫 Parquet 檔案非常簡單。將 pandas DataFrame 轉換為 Parquet 檔案的程式碼大約有十行。
開啟您最喜歡的 Python IDE 或文字編輯器並建立一個新檔案。您可以將其命名為類似的名稱parquet_file_writer.py或使用其他描述性名稱。然後輸入以下程式碼:
import pandas as pd |
對於此示例,您有三個匯入:
- 一個用於pandas,這樣您就可以建立一個DataFrame
- 一個用於pyarrow, 建立一個特殊pyarrow.Table物件
- 一種用於pyarrow.parquet將表物件轉換為 Parquet 檔案
write_parquet ()函式接受 pandas DataFrame 和儲存 Parquet 檔案的檔名或路徑。然後,將 DataFrame 轉換為 pyarrow Table 物件,然後使用該write_table()方法將其轉換為 Parquet 檔案,並將其寫入磁碟。
現在您可以閱讀剛剛建立的檔案了!
使用 Python 讀取 Parquet 檔案
讀取您之前使用 Python 建立的 Parquet 檔案更加容易。您將需要大約一半的程式碼行!
parquet_file_reader.py如果您願意,您可以將以下程式碼放入一個名為類似以下內容的新檔案中:
import pyarrow.parquet as pq |
在此示例中,您將 Parquet 檔案讀取為 pyarrow Table 格式,然後使用 Table 的to_pandas()方法將其轉換為 pandas DataFrame。
當你列印出DataFrame的內容時,你將看到以下內容:
Languages Users Dynamic |
從上面的輸出中您可以看到 DataFrame 包含您儲存的所有資料。
使用 Parquet 檔案的優點之一是您可以僅讀取檔案的一部分而不是整個檔案。例如,您可以只讀取某些列,而不是整個檔案!
以下是其工作原理的示例:
import pyarrow.parquet as pq |
要僅讀取 Parquet 檔案中的“語言”和“使用者”列,請傳入僅包含這些列名稱的列表。然後,當您呼叫 read_table()時,您傳入要讀取的列。
這是執行此程式碼時的輸出:
pyarrow.Table |
這會輸出 pyarrow Table 格式,它與 pandas DataFrame 略有不同。它告訴您有關不同列的資訊;例如,Languages 是字串,Users 是 int64 型別。
如果您更喜歡僅使用 pandas DataFrames,pyarrow 包也允許這樣做。只要您知道 Parquet 檔案包含 pandas DataFrame,您就可以使用 read_pandas()而不是 read_table()。
這是一個程式碼示例:
pyarrow.Table |
當您執行此示例時,輸出是一個 DataFrame,其中僅包含您要求的列:
Languages Users |
使用 read_pandas() 和 to_pandas() 方法的優點之一是它們將在 DataFrame 中維護任何其他索引列資料,而 pyarrow Table 可能不會。
讀取 Parquet 檔案後設資料
您還可以使用 Python 從 Parquet 檔案獲取後設資料。當您需要檢查不熟悉的 Parquet 檔案以檢視它包含什麼型別的資料時,獲取後設資料會很有用。
下面是一個小程式碼片段,它將讀取 Parquet 檔案的後設資料和架構:
import pyarrow.parquet as pq |
有兩種方法可以獲取 Parquet 檔案的後設資料:
- 使用pq.ParquetFile讀取檔案,然後訪問 後設資料屬性
- 使用 pr.read_metadata(filename)代替
前一種方法的好處是您還可以訪問 ParquetFile物件的schema屬性。
當您執行此程式碼時,您將看到以下輸出:
<pyarrow._parquet.FileMetaData object at 0x000002312C1355D0> |
好的!您可以閱讀上面的輸出來瞭解資料的行數和列數以及資料的大小。該架構告訴您欄位型別是什麼。
總結
Parquet 檔案在大資料和資料科學相關領域變得越來越流行。 Python 的 pyarrow 包使 Parquet 檔案的處理變得簡單。您應該花一些時間嘗試本教程中的程式碼,並將其用於您自己的一些 Parquet 檔案。