Làm cách nào để chuyển đổi DataFrame sang XML bằng Python?

XML (Extensible Markup Language) là ngôn ngữ đánh dấu dùng để lưu trữ dữ liệu có cấu trúc. 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()to_csv() để tương tác với tệp CSV. Tuy nhiên, Pandas không bao gồm bất kỳ phương thức nào để đọc và ghi các tệp XML

Trong bài viết này, chúng ta sẽ xem xét cách chúng ta có thể sử dụng các mô-đun khác để đọc dữ liệu từ tệp XML và tải nó vào Khung dữ liệu Pandas. Chúng tôi cũng sẽ lấy dữ liệu từ Pandas DataFrame và ghi dữ liệu đó vào tệp XML

Đọc XML với Pandas

Chúng ta hãy xem xét một số cách để đọc dữ liệu XML và đưa nó vào Khung dữ liệu Pandas

Đối với phần này, chúng tôi sẽ sử dụng một bộ dữ liệu đầu vào cho mọi tập lệnh. Lưu XML sau vào một tệp có tên là properties.xml



	
		1.0
		3.0
		nan
	
	
		7020000.0
		10000000.0
		4128000.0
	
	
		35237.0
		32238.0
		44699.0
	

Đọc bằng xml. cây etree. Yếu TốCây

Mô-đun

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 được tích hợp sẵn với Python. Nó cung cấp chức năng phân tích cú pháp và tạo tài liệu XML.
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
1 đại diện cho tài liệu XML dưới dạng cây. Chúng ta có thể di chuyển qua tài liệu bằng cách sử dụng các nút là các phần tử và phần tử phụ của tệp XML

Theo cách tiếp cận này, chúng tôi đọc nội dung tệp trong một biến và sử dụng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
2 để phân tích cú pháp tài liệu XML từ hằng chuỗi. Chúng tôi sẽ lặp qua từng đứa trẻ và đứa trẻ con duy trì một danh sách dữ liệu mà chúng chứa. Trong khi đó, viết các thẻ con cho cột DataFrame. Sau đó, chúng tôi ghi dữ liệu này vào DataFrame

Ghi chú. Khi đọc dữ liệu từ XML, chúng ta phải chuyển đổi DataFrame, vì các phần tử phụ của danh sách dữ liệu được viết trong các cột

Hãy xem mã để chứng minh việc sử dụng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0

Đoạn mã trên sẽ tạo đầu ra này (thay đổi tùy theo tệp đầu vào được sử dụng)

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0

Đọc với lxml

Thư viện

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4 là một ràng buộc Python cho các thư viện C
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
5 và
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
6. Nó cũng mở rộng mô-đun
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
1 gốc. Vì đây là mô-đun của bên thứ ba, bạn sẽ cần cài đặt nó với
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
8 như thế này

$ pip install lxml

Không giống như

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
1, chúng tôi không đọc và phân tích dữ liệu tệp. Chúng tôi có thể trực tiếp sử dụng
$ pip install lxml
0 và cung cấp cho nó đường dẫn đến tệp XML. Để lấy phần tử gốc, chúng tôi sẽ sử dụng
$ pip install lxml
1 trên dữ liệu XML được phân tích cú pháp

Bây giờ chúng ta có thể lặp qua các phần tử con của nút gốc và ghi chúng vào danh sách Python. Giống như trước đây, chúng tôi sẽ tạo DataFrame bằng danh sách dữ liệu và chuyển đổi DataFrame

Hãy xem mã để tạo Khung dữ liệu Pandas bằng cách sử dụng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4

Nếu chúng ta chạy cái này trên trình thông dịch Python, chúng ta sẽ thấy đầu ra sau

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0

Đọc với xmltodict

Mô-đun

$ pip install lxml
3 chuyển đổi dữ liệu XML thành từ điển Python như tên gợi ý. Giống như
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4, đây là mô-đun của bên thứ ba mà chúng tôi cần cài đặt với
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
8

$ pip install xmltodict

Giống như chúng ta đã làm trước đây, chúng ta đọc nội dung XML thành một biến. Chúng tôi cung cấp dữ liệu này theo phương thức

$ pip install lxml
6 trả về một từ điển dữ liệu XML. Nó sẽ là một từ điển lồng nhau có các phần tử và phần tử con của tệp XML. Chúng tôi có thể lặp qua các phần tử và ghi chúng vào danh sách dữ liệu mà chúng tôi sử dụng để tạo DataFrame

Chúng ta hãy xem mã để phân tích dữ liệu XML để tạo DataFrame bằng xmltodict

Nếu chúng ta chạy đoạn mã trên, chúng ta có thể thấy đầu ra là

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0

Ghi chú. Thư viện

$ pip install lxml
3 không được khuyến nghị cho các tệp XML lớn vì nhiều nhà phát triển đã quan sát thấy hiệu suất giảm. Thư viện
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4 được coi là thư viện làm việc với XML nhanh nhất, thậm chí còn nhanh hơn cả thư viện
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 đi kèm

Sử dụng những gì tốt nhất cho dự án của bạn và nếu hiệu suất là quan trọng, bạn nên chạy thử nghiệm với từng thư viện

Viết XML với Pandas

Hãy xem xét nhiều cách khác nhau để viết Pandas DataFrame trong tệp XML. Mọi tập lệnh chúng tôi sử dụng bên dưới sẽ tạo một tệp mới có tên tọa độ. xml với nội dung sau


  
    1.3
    2.6
    2.1
  
  
    1.4
    1.4
    5.6
  
  
    5.2
    4.6
    4.6
  

Viết với chức năng write() tích hợp

Chúng ta có thể sử dụng hàm

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 đi kèm cho các tệp để ghi DataFrame dưới dạng tệp XML. Để thực hiện điều này, chúng tôi sẽ giữ một danh sách dữ liệu XML, sao cho mỗi mục đại diện cho một dòng trong XML. Sau đó, chúng tôi sẽ lặp lại DataFrame và ghi dữ liệu với các thẻ mở và đóng XML thích hợp trong danh sách dữ liệu

Khi đã hoàn tất, chúng tôi lặp lại danh sách một lần nữa để ghi dữ liệu vào tệp XML. Đây là mã cho thấy việc sử dụng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0

Chạy mã này sẽ tạo ra một tệp có tên tọa độ. xml trong thư mục hiện tại

Viết tệp XML bằng xml. cây etree. Yếu TốCây

Mô-đun

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 mặc định có thể được sử dụng để lưu trữ dữ liệu dưới dạng XML và chuyển đổi thành chuỗi để có thể ghi vào tệp

Bước đầu tiên của chúng tôi là tạo phần tử gốc. Sau đó, chúng tôi lặp lại các cột và hàng của DataFrame, thêm chúng dưới dạng các phần tử và phần tử con trong ElementTree. Sau đó, chúng tôi chuyển đổi dữ liệu của đối tượng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
1 thành một chuỗi nhị phân bằng cách sử dụng phương thức
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4

Vì dữ liệu XML là một chuỗi nhị phân, chúng tôi giải mã nó thành UTF-8 trước khi ghi vào tệp

Đoạn mã sau sử dụng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 để viết DataFrame dưới dạng tệp XML

Giống như trước đây, chạy tập lệnh này sẽ tạo tọa độ. xml với đầu ra dự kiến

Viết tệp XML bằng lxml

Sử dụng

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4 tương tự như cách chúng ta sử dụng
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0. Chúng tôi bắt đầu bằng cách tạo một đối tượng
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
8 với phần tử gốc của tệp mà chúng tôi đang tạo. Sau đó, chúng tôi lặp lại DataFrame, thêm các cột và hàng làm phần tử và phần tử con của cây. Cuối cùng, chúng tôi sử dụng phương pháp
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4 để lấy
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
8 làm chuỗi nhị phân. Chúng tôi viết tệp sau khi giải mã chuỗi nhị phân thành UTF-8

Đây là mã để viết DataFrame dưới dạng XML bằng lxml

Sau khi hoàn thành thành công, bạn sẽ thấy tọa độ. xml với tọa độ XML

Phần kết luận

Hướng dẫn này chỉ ra nhiều cách khác nhau để chúng ta có thể đọc và ghi dữ liệu XML với Pandas DataFrames. Bạn có thể đọc dữ liệu với mô-đun

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 tích hợp, cũng như hai mô-đun của bên thứ ba.
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4 và
$ pip install lxml
3

Để viết một Khung dữ liệu Pandas vào một tệp XML, chúng tôi đã sử dụng tệp thông thường

  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 với các danh sách, mô-đun
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 và
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4. Do việc thao tác trực tiếp các chuỗi XML để ghi tệp dễ xảy ra lỗi do con người hơn, nên
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
0 và
  bathrooms       price property_id
0       1.0   7020000.0     35237.0
1       3.0  10000000.0     32238.0
2       nan   4128000.0     44699.0
4 là các giải pháp thích hợp hơn để xuất DataFrame sang XML

Làm cách nào để chuyển đổi Excel sang XML bằng Python?

Các nhà phát triển Python có thể dễ dàng tải và chuyển đổi các tệp XLSX sang XML chỉ bằng một vài dòng mã. .
Tải tệp XLSX với phiên bản Sổ làm việc
Gọi sổ làm việc. phương thức lưu
Truyền đường dẫn đầu ra với phần mở rộng XML làm tham số
Kiểm tra đường dẫn được chỉ định cho tệp XML kết quả

Pandas có hoạt động với XML không?

Đọc XML dưới dạng pandas dataframe . Theo mặc định, pandas-read-xml sẽ coi thẻ gốc là "các hàng" của khung dữ liệu pandas .

Làm cách nào để chuyển đổi XML lồng nhau sang DataFrame của gấu trúc?

Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo Pandas DataFrame từ XML lồng nhau. .
Phân tích cú pháp hoặc đọc tệp XML bằng ElementTree. .
Lặp lại qua nút gốc để lấy các thuộc tính nút con 'SL NO' (tại đây) và trích xuất các giá trị văn bản của từng thuộc tính (ở đây là mặt hàng thực phẩm, giá cả, số lượng và chiết khấu)

DataFrame() trong Python là gì?

DataFrame là cấu trúc dữ liệu được gắn nhãn 2 chiều với các cột thuộc các loại có thể khác nhau . Bạn có thể coi nó giống như một bảng tính hoặc bảng SQL hoặc một lệnh của các đối tượng Sê-ri. Nó thường là đối tượng gấu trúc được sử dụng phổ biến nhất.