可擴展標記語言(XML)是一種標記語言,它以人類和機器可讀的格式對數據進行編碼。XML在各種程序中用於構造、存儲和傳輸數據。在這篇文章中,我們將討論如何使用python xml庫中的 「ElementTree」模塊來解析xml數據並將數據存儲在panda DataFrame中。
首先,讓導入Python庫:
import pandas as pdfrom xml.etree.ElementTree import parse
現在,讓我們看一下'books.xml'文件中的標籤:
我們可以通過將文件名傳遞給'parse()'方法來定義'XML'文檔對象:
document = parse('books.xml')
如果我們列印對象,我們將看到在指定的內存地址處有一個「 ElementTree」對象:
print(document)
內置的dir()方法可用於該對象的方法和屬性:
print(dir(document))
讓我們使用方法「 iterfind()」返回一個生成器,我們可以在「 for循環」中對其進行迭代。我們需要在「 iterfind()」方法中指定一個路徑參數。讓我們選擇「書」路徑:
我們可以使用方法iterfind()來返回一個生成器,我們需要在「iterfind()」方法中指定一個路徑參數。假設我們選擇「book」路徑:
for item in document.iterfind(『book』):print(item)
我們看到我們有幾個存儲在不同內存地址的「Element book」對象。我們可以使用「 findtext()」方法從這些對象中提取信息。讓我們提取「author」標籤的信息:
for item in document.iterfind('book'):print(item.findtext('author'))
我們還可以提取title:
for itemtitle in document.iterfind('book'):print(itemtitle.findtext('title'))
讓我們看一下price:
for itemprice in document.iterfind('book'):print(itemprice.findtext('price'))
接下來,我們可以初始化列表來存儲這些值:
author = []title = []price = []genre = []description = []publish_date = []
在for循環中,我們可以添加值:
然後,我們可以將這些列表存儲在DataFrame中。接下來,讓我們定義一個DataFrame:
df = pd.DataFrame({'title': title, 'author':author, 'price':price,'price':price, 'genre':genre, 'publish_date':publish_date})
接下來,讓我們列印結果DataFrame:
print(df)
將' price '字符串轉換為' float ',並計算' price '列的平均值:
df['price'] = df['price'].astype(float)print("Mean price: ", df['price'].mean())
讓我們還將'publish_date'轉換為'datetime'對象並提取年,月和日值:
df['publish_date'] = pd.to_datetime(df['publish_date'])df['year'] = df['publish_date'].dt.yeardf['month'] = df['publish_date'].dt.monthdf['day'] = df['publish_date'].dt.dayprint(df.head())
我們也可以使用collections模塊中的' Counter() '方法來查看authors和genres的分布情況:
from collections import Counterprint(Counter(df['author']))print(Counter(df['genre']))
最後
總之,在這篇文章中,我們討論了如何使用python中的「XML」庫來解析XML數據。我們展示了如何使用「iterfind()」方法來定義一個生成器對象,我們可以在「for循環」中對其進行迭代。我們還展示了如何使用' findtext() '方法訪問元素標記信息。然後,我們將XML信息存儲在用於定義Pandas DataFrame的列表中。