用法:
dask.dataframe.read_parquet(path, columns=None, filters=None, categories=None, index=None, storage_options=None, engine='auto', gather_statistics=None, ignore_metadata_file=False, metadata_task_size=None, split_row_groups=None, chunksize=None, aggregate_files=None, **kwargs)
將 Parquet 文件讀入 Dask DataFrame
這會將 Parquet 數據目錄讀入 Dask.dataframe,每個分區一個文件。如果存在,它會在已排序的列中選擇索引。
- path:字符串或列表
數據的源目錄,或各個 parquet 文件的路徑。使用
s3://
之類的協議作為前綴,以從替代文件係統中讀取。要從多個文件中讀取,您可以傳遞一個 globstring 或路徑列表,但需要注意的是它們都必須具有相同的協議。- columns:str 或列表,默認無
作為輸出中的列讀入的字段名稱。默認情況下,將讀取所有非索引字段(由 pandas parquet 元數據確定,如果存在)。提供單個字段名稱而不是列表以將數據作為係列讀取。
- filters:Union[List[Tuple[str, str, Any]], List[List[Tuple[str, str, Any]]]],默認無
要應用的過濾器列表,例如
[[('col1', '==', 0), ...], ...]
。除非還指定了engine="pyarrow-dataset"
,否則使用此參數不會導致對最終分區進行逐行過濾。對於其他引擎,過濾僅在分區級別執行,即防止加載某些row-groups 和/或文件。對於“pyarrow” 引擎,謂詞可以用析取範式 (DNF) 表示。這意味著最裏麵的元組說明了一個單列謂詞。這些內部謂詞與 AND 連詞組合成一個更大的謂詞。然後,outer-most 列表將所有組合過濾器與 OR 分離組合。
謂詞也可以表示為 List[Tuple]。這些被評估為 AND 連詞。要在預測中表達 OR,必須使用(首選 “pyarrow”)List[List[Tuple]] 表示法。
請注意,“fastparquet” 引擎當前不支持使用 DNF 過濾分區列(需要 List[Tuple])。
- index:str,列表或假,默認無
用作輸出幀索引的字段名稱。默認情況下,將從 pandas parquet 文件元數據(如果存在)推斷。使用 False 將所有字段讀取為列。
- categories:列表或字典,默認無
對於此處列出的任何字段,如果 parquet 編碼為 Dictionary,則將使用 dtype 類別創建列。僅當保證列在所有row-groups 中都被編碼為字典時才使用。如果是列表,則假設最多 2**16-1 個標簽;如果是 dict,請指定預期的標簽數量;如果沒有,將為 dask/fastparquet 寫入的數據自動加載類別,否則不會。
- storage_options:字典,默認無
要傳遞到 file-system 後端的鍵/值對(如果有)。
- open_file_options:字典,默認無
當每個 parquet 數據文件打開以供讀取時,要傳遞給
AbstractFileSystem.open
的鍵/值參數。可以通過在"precache_options"
鍵下添加{"method": "parquet"}
來啟用遠程文件係統(例如 S3、GCS)的實驗性(優化)“precaching”。此外,可以使用自定義 file-open 函數(而不是AbstractFileSystem.open
),方法是在"open_file_func"
鍵下指定所需的函數。- engine:str,默認 ‘auto’
要使用的 Parquet 閱讀器庫。選項包括:‘auto’, ‘fastparquet’, and ‘pyarrow’。默認為 ‘auto’,如果安裝了 fastparquet,則選擇 FastParquetEngine(否則選擇 ArrowDatasetEngine)。如果指定了‘pyarrow’,將使用 ArrowDatasetEngine(利用 pyarrow.dataset API)。注意:“pyarrow-legacy”選項 (ArrowLegacyEngine) 已棄用。
- gather_statistics:布爾值,默認無
收集每個數據集分區的統計信息。默認情況下,隻有在 _metadata 文件可用時才會這樣做。否則,隻有在 True 時才會收集統計信息,因為每個文件的頁腳都會被解析(這在某些係統上非常慢)。
- ignore_metadata_file:布爾值,默認為 False
是否忽略全局
_metadata
文件(存在時)。如果True
或全局_metadata
文件丟失,則可以並行收集和處理鑲木 floor 元數據。當前僅ArrowDatasetEngine
支持並行元數據處理。- metadata_task_size:int,默認可配置
如果 parquet 元數據是並行處理的(參見上麵的
ignore_metadata_file
說明),則此參數可用於指定 Dask 圖中每個任務要處理的數據集文件的數量。如果此參數設置為0
,將禁用並行元數據處理。可以分別使用“metadata-task-size-local” 和“metadata-task-size-remote” 配置字段指定本地和遠程文件係統的默認值(請參閱“dataframe.parquet”)。- split_row_groups:bool 或 int,默認無
如果 _metadata 文件可用或數據集由單個文件組成,則默認為 True(否則默認為 False)。如果為 True,則每個輸出數據幀分區將對應一個 parquet-file row-group。如果為 False,每個分區將對應一個完整的文件。如果給定一個正整數值,則每個數據幀分區將對應於該數量的鑲木 floor row-groups(或更少)。
- chunksize:int 或 str,默認無
每個輸出
DataFrame
分區的所需大小,以總(未壓縮)鑲木 floor 存儲空間計。如果指定,相鄰的 row-groups 和/或文件將被聚合到同一輸出分區中,直到累積的total_byte_size
parquet-metadata 統計數據達到此值。使用aggregate_files
啟用/禁用inter-file 聚合。- aggregate_files:bool 或 str,默認無
不同的文件路徑是否可以聚合到相同的輸出分區中。此參數需要
gather_statistics=True
,並且僅在指定chunksize
或split_row_groups
為 >1 的整數時使用。 True 的設置意味著可以將任意兩個文件路徑聚合到同一個輸出分區中,而 False 意味著禁止inter-file 聚合。對於“hive-partitioned” 數據集,還可以指定“partition”-列名稱。在這種情況下,我們允許聚合任何兩個共享文件路徑的文件,直到並包括相應的目錄名稱。例如,如果以下目錄結構的
aggregate_files
設置為"section"
,則03.parquet
和04.parquet
可以聚合在一起,但01.parquet
和02.parquet
不能。但是,如果aggregate_files
設置為"region"
,01.parquet
可以與02.parquet
聚合,並且03.parquet
可以與04.parquet
聚合:dataset-path/ ├── region=1/ │ ├── section=a/ │ │ └── 01.parquet │ ├── section=b/ │ └── └── 02.parquet └── region=2/ ├── section=a/ │ ├── 03.parquet └── └── 04.parquet
請注意,
aggregate_files
的默認行為是 False。- **kwargs: dict (of dicts):
為讀取後端傳遞 key-word 參數。頂級鍵對應於適當的操作類型,第二級對應於將傳遞給底層
pyarrow
或fastparquet
函數的 kwargs。支持的頂級鍵:‘dataset’(用於打開pyarrow
數據集)、‘file’ or ‘dataset’(用於打開fastparquet.ParquetFile
)、‘read’(用於後端讀取函數)、‘arrow_to_pandas’(用於控製參數傳遞以從pyarrow.Table.to_pandas()
轉換)。任何未在這些頂級鍵下定義的 kwargs 元素都將作為 stand-alone 參數傳遞給engine.read_partitions
類方法(並且將被dask.dataframe
中定義的引擎實現忽略)。
參數:
例子:
>>> df = dd.read_parquet('s3://bucket/my-parquet-data')
相關用法
- Python dask.dataframe.read_table用法及代碼示例
- Python dask.dataframe.read_hdf用法及代碼示例
- Python dask.dataframe.read_json用法及代碼示例
- Python dask.dataframe.read_fwf用法及代碼示例
- Python dask.dataframe.read_sql_table用法及代碼示例
- Python dask.dataframe.read_csv用法及代碼示例
- Python dask.dataframe.read_orc用法及代碼示例
- Python dask.dataframe.reshape.get_dummies用法及代碼示例
- Python dask.dataframe.rolling.Rolling.var用法及代碼示例
- Python dask.dataframe.rolling.Rolling.count用法及代碼示例
- Python dask.dataframe.rolling.Rolling.min用法及代碼示例
- Python dask.dataframe.rolling.Rolling.quantile用法及代碼示例
- Python dask.dataframe.rolling.Rolling.std用法及代碼示例
- Python dask.dataframe.rolling.Rolling.sum用法及代碼示例
- Python dask.dataframe.rolling.Rolling.kurt用法及代碼示例
- Python dask.dataframe.rolling.Rolling.mean用法及代碼示例
- Python dask.dataframe.rolling.Rolling.median用法及代碼示例
- Python dask.dataframe.Series.apply用法及代碼示例
- Python dask.dataframe.to_records用法及代碼示例
- Python dask.dataframe.DataFrame.applymap用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.dataframe.read_parquet。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。