>백엔드 개발 >파이썬 튜토리얼 >Python에서 XML 데이터를 Pandas DataFrame으로 효율적으로 변환하려면 어떻게 해야 합니까?

Python에서 XML 데이터를 Pandas DataFrame으로 효율적으로 변환하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-16 13:25:03674검색

How can I efficiently convert XML data into a Pandas DataFrame in Python?

XML 문서를 Pandas DataFrame으로 변환

XML 데이터를 처리할 때 그 안에 있는 정보를 처리하고 분석해야 하는 경우가 많습니다. Pandas는 XML을 구조화된 DataFrame으로 변환할 수 있는 편리한 도구를 제공합니다.

주어진 것과 같은 XML 구조를 고려해 보겠습니다.

<author type="XXX" language="EN" gender="xx" feature="xx" web="foobar.com">
    <documents count="N">
        <document KEY="e95a9a6c790ecb95e46cf15bee517651">![CDATA[A large text with lots of strings and punctuations symbols [...]
]]></document>
        <!-- more documents -->
    </documents>
</author>

목표는 이 XML을 변환하는 것입니다. 키, 유형, 언어, 기능, 웹 및 데이터에 대한 열이 있는 DataFrame으로 변환합니다.

효율적인 접근 방식 ElementTree

이를 달성하기 위해 XML을 구문 분석하는 효율적인 방법을 제공하는 Python의 xml.etree.ElementTree를 활용할 수 있습니다. 개선된 접근 방식은 다음과 같습니다.

import pandas as pd
import xml.etree.ElementTree as ET

xml_data = "file_path"
etree = ET.parse(xml_data) #create an ElementTree object

def iter_docs(author):
    author_attr = author.attrib
    for doc in author.iter('document'):
        doc_dict = author_attr.copy()
        doc_dict.update(doc.attrib)
        doc_dict['data'] = doc.text
        yield doc_dict

doc_df = pd.DataFrame(list(iter_docs(etree.getroot())))

이 접근 방식에서는 iter_docs 생성기 기능을 사용하여 작성자 및 문서 요소를 반복하여 관련 속성과 데이터를 추출합니다. 그런 다음 생성된 사전 목록에서 DataFrame을 생성합니다.

추가 참고 사항:

  • XML에 작성자 요소가 여러 개 있는 경우 다음을 사용할 수 있습니다. 이를 반복하고 각 문서에 대해 반복하는 또 다른 생성기 함수입니다.
  • XML의 루트 요소가 작성자가 아닌 경우 그에 따라 etree.getroot()를 호출합니다.

ElementTree 사용의 이점:

  • 효율적인 구문 분석 및 메모리 사용
  • 제공 XML 구조를 계층적으로 표현하여 탐색.
  • 네임스페이스 및 주석과 같은 다양한 XML 기능을 지원합니다.

이 접근 방식을 따르면 Pandas DataFrames를 사용하여 복잡한 XML 데이터를 표 형식으로 효율적으로 변환하여 추가 데이터를 활성화할 수 있습니다. 조작하고 분석합니다.

위 내용은 Python에서 XML 데이터를 Pandas DataFrame으로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.