當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pyspark read_excel用法及代碼示例

本文簡要介紹 pyspark.pandas.read_excel 的用法。

用法:

pyspark.pandas.read_excel(io: Union[str, Any], sheet_name: Union[str, int, List[Union[str, int]], None] = 0, header: Union[int, List[int]] = 0, names: Optional[List] = None, index_col: Optional[List[int]] = None, usecols: Union[int, str, List[Union[str, int]], Callable[[str], bool], None] = None, squeeze: bool = False, dtype: Optional[Dict[str, Union[str, numpy.dtype, pandas.core.dtypes.base.ExtensionDtype]]] = None, engine: Optional[str] = None, converters: Optional[Dict] = None, true_values: Optional[Any] = None, false_values: Optional[Any] = None, skiprows: Union[int, List[int], None] = None, nrows: Optional[int] = None, na_values: Optional[Any] = None, keep_default_na: bool = True, verbose: bool = False, parse_dates: Union[bool, List, Dict] = False, date_parser: Optional[Callable] = None, thousands: Optional[str] = None, comment: Optional[str] = None, skipfooter: int = 0, convert_float: bool = True, mangle_dupe_cols: bool = True, **kwds: Any) → Union[pyspark.pandas.frame.DataFrame, pyspark.pandas.series.Series, collections.OrderedDict]

將 Excel 文件讀入 pandas-on-Spark DataFrame 或係列。

支持來自本地文件係統或 URL 的 xlsxlsx 文件擴展名。支持讀取單個工作表或工作表列表的選項。

參數

iostr、文件說明符、pathlib.Path、ExcelFile 或 xlrd.Book

該字符串可以是一個 URL。值 URL 必須在 Spark 的 DataFrameReader 中可用。

注意

如果底層 Spark 低於 3.0,則不支持字符串形式的參數。您可以使用ps.from_pandas(pd.read_excel(…)) 作為解決方法。

sheet_namestr、int、list 或 None,默認 0

字符串用於工作表名稱。 zero-indexed 工作表位置使用整數。字符串/整數列表用於請求多張工作表。指定無以獲取所有工作表。

可用案例:

  • 默認為 0 :第一張紙作為 DataFrame

  • 1:第二張紙作為DataFrame

  • "Sheet1" :加載名稱為 “Sheet1” 的工作表

  • [0, 1, "Sheet5"] :加載名為 “Sheet5” 的第一、第二和工作表作為 DataFrame 的字典

  • 無:所有工作表。

headerint,int 列表,默認 0

用於已解析 DataFrame 的列標簽的行(0 索引)。如果傳遞了整數列表,則這些行位置將組合成 MultiIndex 。如果沒有標題,請使用 None。

names類似數組,默認 None

要使用的列名列表。如果文件不包含標題行,那麽您應該顯式傳遞 header=None。

index_colint,int 列表,默認無

列(0 索引)用作 DataFrame 的行標簽。如果沒有這樣的列,則通過 None。如果傳遞了一個列表,這些列將被組合成一個 MultiIndex 。如果使用 usecols 選擇了數據子集,則 index_col 基於該子集。

usecolsint、str、list-like 或可調用的默認值無

返回列的子集。

  • 如果沒有,則解析所有列。

  • 如果是 str,則表示 Excel 列字母和列範圍的逗號分隔列表(例如 “A:E” 或 “A,C,E:F”)。範圍包括雙方。

  • 如果是 int 列表,則表示要解析的列號列表。

  • 如果是字符串列表,則表示要解析的列名列表。

  • 如果可調用,則根據它評估每個列名並在可調用返回 True 時解析列。

squeeze布爾值,默認為 False

如果解析的數據隻包含一列,則返回一個係列。

dtype類型名稱或列的字典 -> 類型,默認無

數據或列的數據類型。例如: {‘a’: np.float64, ‘b’: np.int32} 使用 object 將數據保存在 Excel 中,而不是解釋 dtype。如果指定了轉換器,則將應用它們代替 dtype 轉換。

enginestr,默認無

如果 io 不是緩衝區或路徑,則必須將其設置為標識 io。可接受的值為 None 或 xlrd。

converters字典,默認無

用於轉換某些列中的值的函數的字典。鍵可以是整數或列標簽,值是接受一個輸入參數的函數,即 Excel 單元格內容,並返回轉換後的內容。

true_values列表,默認無

值視為 True。

false_values列表,默認無

要考慮為 False 的值。

skiprowslist-like

在開頭跳過的行(0 索引)。

nrows整數,默認無

要解析的行數。

na_values標量、str、list-like 或 dict,默認為 None

要識別為 NA/NaN 的附加字符串。如果 dict 通過,特定的 per-column NA 值。默認情況下,以下值被解釋為 NaN。

keep_default_na布爾值,默認為真

如果指定了na_values並且keep_default_na為False,則默認的NaN值將被覆蓋,否則將被附加。

verbose布爾值,默認為 False

指示放置在非數字列中的 NA 值的數量。

parse_datesbool,list-like,或 dict,默認為 False

行為如下:

  • 布爾。如果 True -> 嘗試解析索引。

  • int 或名稱列表。例如如果 [1, 2, 3] -> 嘗試將第 1、2、3 列分別解析為單獨的日期列。

  • 列表列表。例如如果 [[1, 3]] -> 合並第 1 列和第 3 列並解析為單個日期列。

  • 字典,例如{{‘foo’: [1, 3]}} -> 將第 1、3 列解析為日期並調用結果 ‘foo’

如果列或索引包含不可解析的日期,則整個列或索引將作為對象數據類型原封不動地返回。對於非標準日期時間解析,請在 pd.read_csv 之後使用 pd.to_datetime

注意:iso8601 格式的日期存在 fast-path。

date_parser函數,可選

用於將字符串列序列轉換為日期時間實例數組的函數。默認使用dateutil.parser.parser 進行轉換。 pandas-on-Spark 將嘗試以三種不同的方式調用 date_parser,如果發生異常則前進到下一種方式: 1) 傳遞一個或多個數組(由 parse_dates 定義)作為參數; 2) 將parse_dates 定義的列中的字符串值連接(按行)到單個數組中並傳遞它; 3) 使用一個或多個字符串(對應於 parse_dates 定義的列)作為參數,為每一行調用一次 date_parser

thousandsstr,默認無

用於將字符串列解析為數字的千位分隔符。請注意,此參數僅對在 Excel 中存儲為 TEXT 的列是必需的,任何數字列都將被自動解析,無論顯示格式如何。

commentstr,默認無

注釋掉行的剩餘部分。將一個或多個字符傳遞給此參數以指示輸入文件中的注釋。注釋字符串和當前行末尾之間的任何數據都將被忽略。

skipfooter整數,默認 0

最後要跳過的行(0 索引)。

convert_float布爾值,默認為真

將整數浮點轉換為 int(即 1.0 -> 1)。如果為 False,則所有數字數據都將作為浮點數讀入:Excel 在內部將所有數字存儲為浮點數。

mangle_dupe_cols布爾值,默認為真

重複的列將被指定為“X”、“X.1”、……“X.N”,而不是“X”……“X”。如果列中存在重複名稱,則傳入 False 將導致數據被覆蓋。

**kwds可選的

可選的關鍵字參數可以傳遞給 TextFileReader

返回

DataFrame 或 DataFrames 的字典

DataFrame 來自傳入的 Excel 文件。有關何時返回 DataFrames 字典的更多信息,請參閱 sheet_name 參數中的注釋。

例子

可以使用文件名作為字符串或打開的文件對象來讀取文件:

>>> ps.read_excel('tmp.xlsx', index_col=0)  
       Name  Value
0   string1      1
1   string2      2
2  #Comment      3
>>> ps.read_excel(open('tmp.xlsx', 'rb'),
...               sheet_name='Sheet3')  
   Unnamed: 0      Name  Value
0           0   string1      1
1           1   string2      2
2           2  #Comment      3

可以通過 index_colheader 參數指定索引和標題

>>> ps.read_excel('tmp.xlsx', index_col=None, header=None)  
     0         1      2
0  NaN      Name  Value
1  0.0   string1      1
2  1.0   string2      2
3  2.0  #Comment      3

列類型是推斷的,但可以顯式指定

>>> ps.read_excel('tmp.xlsx', index_col=0,
...               dtype={'Name': str, 'Value': float})  
       Name  Value
0   string1    1.0
1   string2    2.0
2  #Comment    3.0

True、False 和 NA 值以及千位分隔符具有默認值,但也可以顯式指定。以字符串或字符串列表的形式提供您想要的值!

>>> ps.read_excel('tmp.xlsx', index_col=0,
...               na_values=['string1', 'string2'])  
       Name  Value
0      None      1
1      None      2
2  #Comment      3

可以使用 comment kwarg 跳過 excel 輸入文件中的注釋行

>>> ps.read_excel('tmp.xlsx', index_col=0, comment='#')  
      Name  Value
0  string1    1.0
1  string2    2.0
2     None    NaN

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.pandas.read_excel。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。