Hướng dẫn read xml file python pandas - đọc tệp xml python gấu trúc

pandas.read_xml (path_or_buffer, *, xpath = '. ', phân tích cú pháp =' lxml ', styleSheet = noneread_xml(path_or_buffer, *, xpath='./*', namespaces=None, elems_only=False, attrs_only=False, names=None, dtype=None, converters=None, parse_dates=None, encoding='utf-8', parser='lxml', stylesheet=None, iterparse=None, compression='infer', storage_options=None)[source]#

Đọc tài liệu XML vào một đối tượng DataFrame.

Mới trong phiên bản 1.3.0.

Tham sốpath_or_bufferstr, path object, or file-like object

Chuỗi, đối tượng đường dẫn (triển khai

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
0) hoặc đối tượng giống như tệp thực hiện hàm
iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
1. Chuỗi có thể là bất kỳ chuỗi XML hợp lệ hoặc đường dẫn. Chuỗi có thể là một URL. Các sơ đồ URL hợp lệ bao gồm HTTP, FTP, S3 và Tệp.

XPathstr, Tùy chọn, mặc định ‘./*str, optional, default ‘./*’

Xpath to Parse yêu cầu tập hợp các nút để di chuyển sang DataFrame. XPath nên trả lại một bộ sưu tập các phần tử và không phải là một yếu tố. Lưu ý: Trình phân tích cú pháp

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
2 hỗ trợ các biểu thức XPath giới hạn. Đối với XPath phức tạp hơn, hãy sử dụng
iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
3 yêu cầu cài đặt.

tên gọi, tùy chọndict, optional

Các không gian tên được xác định trong tài liệu XML là các dicts với khóa là tiền tố không gian tên và định giá URI. Không cần phải bao gồm tất cả các không gian tên trong XML, chỉ những người được sử dụng trong biểu thức

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
4. Lưu ý: Nếu tài liệu XML sử dụng không gian tên mặc định được ký hiệu là XMLNS =, không có tiền tố, bạn phải gán bất kỳ tiền tố không gian tên tạm thời nào như ‘Doc, cho URI để phân tích các nút và/hoặc thuộc tính bên dưới. Ví dụ,

namespaces = {"doc": "https://example.com"}

elems_onlybool, tùy chọn, mặc định saibool, optional, default False

Chỉ phân tích các yếu tố trẻ em tại

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
4 được chỉ định. Theo mặc định, tất cả các yếu tố trẻ em và các nút văn bản không trống được trả về.

attrs_onlybool, tùy chọn, mặc định saibool, optional, default False

Chỉ phân chia các thuộc tính tại

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
4 được chỉ định. Theo mặc định, tất cả các thuộc tính được trả về.

Danh sách giống như, tùy chọnlist-like, optional

Tên cột cho DataFrame của dữ liệu XML phân tích cú pháp. Sử dụng tham số này để đổi tên các tên phần tử gốc và phân biệt các phần tử và thuộc tính được đặt tên giống nhau.

Tên DTYPETYPE hoặc DIGNT CỦA Cột -> Loại, Tùy chọnType name or dict of column -> type, optional

Kiểu dữ liệu cho dữ liệu hoặc cột. Ví dụ. {’A, Nếu các bộ chuyển đổi được chỉ định, chúng sẽ được áp dụng thay vì chuyển đổi DTYPE.

Mới trong phiên bản 1.5.0.

ConvertersDict, tùy chọndict, optional

Diễn ngôn của các chức năng để chuyển đổi các giá trị trong các cột nhất định. Các phím có thể là số nguyên hoặc nhãn cột.

Mới trong phiên bản 1.5.0.

ConvertersDict, tùy chọnbool or list of int or names or list of lists or dict, default False

Diễn ngôn của các chức năng để chuyển đổi các giá trị trong các cột nhất định. Các phím có thể là số nguyên hoặc nhãn cột.

  • parse_datesbool hoặc danh sách int hoặc tên hoặc danh sách danh sách hoặc dict, mặc định sai

  • Định danh để phân tích chỉ mục hoặc cột vào DateTime. Hành vi như sau:

  • Boolean. Nếu đúng -> thử phân tích cú pháp chỉ mục.

  • Danh sách INT hoặc tên. ví dụ. Nếu [1, 2, 3] -> thử phân tích các cột 1, 2, 3 mỗi cột là một cột ngày riêng biệt.

Mới trong phiên bản 1.5.0.

ConvertersDict, tùy chọnstr, optional, default ‘utf-8’

Diễn ngôn của các chức năng để chuyển đổi các giá trị trong các cột nhất định. Các phím có thể là số nguyên hoặc nhãn cột.

parse_datesbool hoặc danh sách int hoặc tên hoặc danh sách danh sách hoặc dict, mặc định sai{‘lxml’,’etree’}, default ‘lxml’

Định danh để phân tích chỉ mục hoặc cột vào DateTime. Hành vi như sau:

Boolean. Nếu đúng -> thử phân tích cú pháp chỉ mục.str, path object or file-like object

Danh sách INT hoặc tên. ví dụ. Nếu [1, 2, 3] -> thử phân tích các cột 1, 2, 3 mỗi cột là một cột ngày riêng biệt.

Danh sách danh sách. ví dụ. Nếu [[1, 3]] -> Kết hợp các cột 1 và 3 và phân tích cú pháp là một cột ngày duy nhất.dict, optional

Diễn ngôn, ví dụ: {‘Foo,

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}

Mới trong phiên bản 1.5.0.

ConvertersDict, tùy chọnstr or dict, default ‘infer’

Diễn ngôn của các chức năng để chuyển đổi các giá trị trong các cột nhất định. Các phím có thể là số nguyên hoặc nhãn cột.

Mới trong phiên bản 1.5.0: Đã thêm hỗ trợ cho các tệp .tar.Added support for .tar files.

Đã thay đổi trong phiên bản 1.4.0: Hỗ trợ Zstandard.Zstandard support.

Storage_OptionsDict, Tùy chọndict, optional

Các tùy chọn bổ sung có ý nghĩa cho một kết nối lưu trữ cụ thể, ví dụ: máy chủ, cổng, tên người dùng, mật khẩu, v.v. cho URL HTTP (s), các cặp giá trị khóa được chuyển tiếp đến

>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''
4 dưới dạng tùy chọn tiêu đề. Đối với các URL khác (ví dụ: bắt đầu với S3: //, và GC GCS: //), các cặp giá trị khóa được chuyển tiếp đến
>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''
5. Vui lòng xem
>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''
6 và
>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''
7 để biết thêm chi tiết và để biết thêm ví dụ về các tùy chọn lưu trữ, hãy tham khảo tại đây.

ReturnSdf

Một khung dữ liệu.

Xem thêm

>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''
8

Chuyển đổi chuỗi JSON sang đối tượng Pandas.

>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''
9

Đọc các bảng HTML vào danh sách các đối tượng DataFrame.

Ghi chú

Phương pháp này được thiết kế tốt nhất để nhập các tài liệu XML nông theo định dạng sau đây là sự phù hợp lý tưởng cho hai chiều của DataFrame (hàng từng cột).

<root>
    <row>
      <column1>datacolumn1>
      <column2>datacolumn2>
      <column3>datacolumn3>
      ...
   row>
   <row>
      ...
   row>
   ...
root>

Là một định dạng tệp, các tài liệu XML có thể được thiết kế bất kỳ cách nào bao gồm bố trí các phần tử và thuộc tính miễn là nó phù hợp với thông số kỹ thuật của W3C. Do đó, phương pháp này là một trình xử lý tiện lợi cho một thiết kế phẳng hơn cụ thể và không phải tất cả các cấu trúc XML có thể.

Tuy nhiên, đối với các tài liệu XML phức tạp hơn,

>>> df = pd.read_xml(xml)
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0
1 cho phép bạn tạm thời thiết kế lại tài liệu gốc bằng XSLT (ngôn ngữ mục đích đặc biệt) cho phiên bản phẳng hơn để di chuyển sang DataFrame.

Hàm này sẽ luôn trả về một DataFrame hoặc nêu các ngoại lệ do các vấn đề với tài liệu XML,

iterparse = {"row_element": ["child_elem", "attr", "grandchild_elem"]}
4 hoặc các tham số khác.

Xem tài liệu read_xml trong phần IO của tài liệu để biết thêm thông tin trong việc sử dụng phương thức này để phân tích các tệp XML vào DataFrames.read_xml documentation in the IO section of the docs for more information in using this method to parse XML files to DataFrames.

Ví dụ

>>> xml = '''
... 
...  
...    square
...    360
...    4.0
...  
...  
...    circle
...    360
...    
...  
...  
...    triangle
...    180
...    3.0
...  
... '''

>>> df = pd.read_xml(xml)
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0

>>> xml = '''
... 
...   
...   
...   
... '''

>>> 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 = '''
... 
...   
...     square
...     360
...     4.0
...   
...   
...     circle
...     360
...     
...   
...   
...     triangle
...     180
...     3.0
...   
... '''

>>> 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 có thể đọc các tệp XML không?

Thư viện phân tích dữ liệu PANDAS cung cấp các chức năng để đọc/ghi dữ liệu cho hầu hết các loại tệp. Ví dụ: nó bao gồm read_csv () và to_csv () để tương tác với các tệp CSV. Tuy nhiên, Pandas không bao gồm bất kỳ phương pháp nào để đọc và ghi các tệp XML.Pandas does not include any methods to read and write XML files.

Làm cách nào để mở tệp XML trong Python?

Ví dụ Đọc tệp XML trong Python để đọc tệp XML, trước tiên, chúng tôi nhập lớp ElementTree được tìm thấy bên trong thư viện XML.Sau đó, chúng tôi sẽ chuyển tên tệp của tệp XML cho ElementTree.Phương thức Parse (), để bắt đầu phân tích cú pháp.Sau đó, chúng tôi sẽ nhận được thẻ chính của tệp XML bằng getRoot ().import the ElementTree class found inside the XML library. Then, we will pass the filename of the XML file to the ElementTree. parse() method, to start parsing. Then, we will get the parent tag of the XML file using getroot() .

Chúng ta có thể chuyển đổi XML thành DataFrame trong Python không?

Tệp XML XML bắt đầu từ gốc của cây, cụ thể là phần tử, chứa toàn bộ cấu trúc dữ liệu.Bây giờ chúng tôi có thể lặp qua từng nút của cây, điều đó có nghĩa là chúng tôi sẽ lấy từng yếu tố của học sinh và lấy thuộc tính tên của nó và tất cả các phần tử của nó để xây dựng DataFrame của chúng tôi.we can iterate through each node of the tree, which means we will get each student element and grab its name attribute and all of its sub-elements to build our dataframe.

Làm thế nào để bạn đọc và phân tích XML trong Python?

Để đọc một tệp XML bằng ElementTree, trước tiên, chúng tôi nhập lớp ElementTree được tìm thấy bên trong thư viện XML, dưới tên ET (thông tin chung).Sau đó chuyển tên tệp của tệp XML cho ElementTree.Phương thức Parse (), để cho phép phân tích tệp XML của chúng tôi.Sau đó, nhận được gốc (thẻ cha) của tệp XML của chúng tôi bằng GetRoot ().