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


Python pandas.read_xml用法及代碼示例


用法:

pandas.read_xml(path_or_buffer, xpath='./*', namespaces=None, elems_only=False, attrs_only=False, names=None, encoding='utf-8', parser='lxml', stylesheet=None, compression='infer', storage_options=None)

將 XML 文檔讀入 DataFrame 對象。

參數

path_or_bufferstr、路徑對象或 file-like 對象

字符串、路徑對象(實現 os.PathLike[str] )或實現 read() 函數的 file-like 對象。該字符串可以是任何有效的 XML 字符串或路徑。該字符串還可以是 URL。有效的 URL 方案包括 http、ftp、s3 和文件。

xpathstr,可選,默認“./*”

解析所需節點集以遷移到 DataFrame 的 XPath。 XPath 應該返回元素的集合而不是單個元素。注意:etree 解析器支持有限的 XPath 表達式。對於更複雜的 XPath,請使用需要安裝的 lxml

namespaces字典,可選

XML 文檔中定義的命名空間為字典,鍵為命名空間前綴,值為 URI。不需要在 XML 中包含所有名稱空間,隻需在 xpath 表達式中包含名稱空間。注意:如果 XML 文檔使用表示為 xmlns=’<URI>’ 的默認命名空間而沒有前綴,則必須將任何臨時命名空間前綴(例如 ‘doc’)分配給 URI,以便解析底層節點和/或屬性。例如,

namespaces = {"doc":"https://example.com"}
elems_only布爾值,可選,默認為 False

僅解析指定 xpath 處的子元素。默認情況下,返回所有子元素和非空文本節點。

attrs_only布爾值,可選,默認為 False

僅解析指定 xpath 處的屬性。默認情況下,返回所有屬性。

nameslist-like,可選

已解析 XML 數據的 DataFrame 的列名。使用此參數重命名原始元素名稱並區分相同命名的元素。

encodingstr,可選,默認“utf-8”

XML 文檔的編碼。

parser{‘lxml’,'etree'},默認 ‘lxml’

用於檢索數據的解析器模塊。僅支持 ‘lxml’ and ‘etree’。 ‘lxml’ 支持更複雜的 XPath 搜索和使用 XSLT 樣式表的能力。

stylesheetstr,路徑對象或file-like對象

URL、file-like 對象或包含 XSLT 腳本的原始字符串。該樣式表應該扁平化複雜的、深度嵌套的 XML 文檔,以便於解析。要使用此函數,您必須安裝 lxml 模塊並將 ‘lxml’ 指定為 parserxpath 必須引用在 XSLT 轉換後生成的轉換後的 XML 文檔的節點,而不是原始 XML 文檔。當前僅支持 XSLT 1.0 腳本,不支持更高版本。

compressionstr 或 dict,默認 ‘infer’

用於on-disk 數據的即時解壓縮。如果 ‘infer’ 和 ‘path_or_buffer’ 是 path-like,則從以下擴展名檢測壓縮:'.gz'、'.bz2'、'.zip'、'.xz' 或 '.zst'(否則不壓縮)。如果使用‘zip’,ZIP 文件必須隻包含一個要讀入的數據文件。設置為None無需減壓。也可以是帶鍵的字典'method'設置為 { 之一'zip','gzip','bz2','zstd'} 和其他鍵值對被轉發到zipfile.ZipFile,gzip.GzipFile,bz2.BZ2File, 或者zstandard.ZstdDecompressor, 分別。例如,可以使用自定義壓縮字典為 Zstandard 解壓縮傳遞以下內容:compression={'method':'zstd', 'dict_data':my_compression_dict}.

storage_options字典,可選

對特定存儲連接有意義的額外選項,例如主機、端口、用戶名、密碼等。對於 HTTP(S) URL,鍵值對作為標頭選項轉發到 urllib。對於其他 URL(例如以 “s3://” 和 “gcs://” 開頭),鍵值對被轉發到 fsspec 。有關詳細信息,請參閱fsspecurllib

返回

df

一個 DataFrame 。

注意

此方法最適合導入以下格式的淺 XML 文檔,該格式非常適合 DataFrame 的 two-dimensions(逐列)。

<root>
    <row>
      <column1>data</column1>
      <column2>data</column2>
      <column3>data</column3>
      ...
   </row>
   <row>
      ...
   </row>
   ...
</root>

作為一種文件格式,隻要符合 W3C 規範,XML 文檔可以以任何方式設計,包括元素和屬性的布局。因此,此方法是特定扁平設計而非所有可能的 XML 結構的便利處理程序。

但是,對於更複雜的 XML 文檔,stylesheet 允許您使用 XSLT(一種特殊用途的語言)臨時重新設計原始文檔,以獲得更扁平的版本以遷移到 DataFrame。

由於 XML 文檔、xpath 或其他參數的問題,此函數將始終返回單個 DataFrame 或引發異常。

例子

>>> xml = '''<?xml version='1.0' encoding='utf-8'?>
... <data xmlns="http://example.com">
...  <row>
...    <shape>square</shape>
...    <degrees>360</degrees>
...    <sides>4.0</sides>
...  </row>
...  <row>
...    <shape>circle</shape>
...    <degrees>360</degrees>
...    <sides/>
...  </row>
...  <row>
...    <shape>triangle</shape>
...    <degrees>180</degrees>
...    <sides>3.0</sides>
...  </row>
... </data>'''
>>> df = pd.read_xml(xml)
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0
>>> xml = '''<?xml version='1.0' encoding='utf-8'?>
... <data>
...   <row shape="square" degrees="360" sides="4.0"/>
...   <row shape="circle" degrees="360"/>
...   <row shape="triangle" degrees="180" sides="3.0"/>
... </data>'''
>>> df = pd.read_xml(xml, xpath=".//row")
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0
>>> xml = '''<?xml version='1.0' encoding='utf-8'?>
... <doc:data xmlns:doc="https://example.com">
...   <doc:row>
...     <doc:shape>square</doc:shape>
...     <doc:degrees>360</doc:degrees>
...     <doc:sides>4.0</doc:sides>
...   </doc:row>
...   <doc:row>
...     <doc:shape>circle</doc:shape>
...     <doc:degrees>360</doc:degrees>
...     <doc:sides/>
...   </doc:row>
...   <doc:row>
...     <doc:shape>triangle</doc:shape>
...     <doc:degrees>180</doc:degrees>
...     <doc:sides>3.0</doc:sides>
...   </doc:row>
... </doc:data>'''
>>> df = pd.read_xml(xml,
...                  xpath="//doc:row",
...                  namespaces={"doc":"https://example.com"})
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0

相關用法


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