Python:將XML數據存儲到Pandas DataFrame中

2020-12-13 不靠譜的貓

可擴展標記語言(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的列表中。

相關焦點

  • 數據分析利器 pandas 系列教程(二):強大的 DataFrame
    在上一篇文章 數據分析利器 pandas 系列教程(一):從 Series 說起  中:詳細介紹了 pandas 基礎數據結構 Series,今天說說另一種數據結構 DataFrame。創建 dataframe 的常見方式同 series 一樣,dataframe 也有 index,不同的是,series 除了 index,只有一列,而 dataframe 通常有很多列,比如上面的 dataframe 就有四列,而且都有名字:name、sex、course、grade,通過這些名字,可以索引到某一列,這些名字稱為列(索引),因此,在 dataframe
  • Python-Pandas安裝--Series結構和DataFrame結構
    機器學習中另一個非常重要的庫--Pandas庫,Pandas是對數據進行預處理和數據清洗非常重要的庫。
  • 將Python中的字典數據轉化為DataFrame
    編譯:老齊與本文相關的圖書推薦:《數據準備和特徵工程》在數據科學項目中,通常用Pandas的read_csv或者read_excel從相應文件中讀入數據,此外,對於數據量不大的時候,可能還有下面的情形出現:
  • python數據分析專題 (12):DataFrame
    DataFrame既有行索引也有列索引,pandas中的DataFrame類似於R中的data.frame數據框,屬於二維數據。是數據分析中最為常用的數據類型。創建DataFrame可以使用pandas包中的DataFrame()函數生成DataFrame數據結構。有多種方式,可以直接從python的字典進行轉換,也可以從ndarry生成。
  • Python操作Excel,將匯總數據分到不同sheet
    方法一:讀取原Excel,根據country列將不同的內容放到不同的sheet,並根據國家名稱命名,將結果放到新的輸出文件中。import pandas as pdinput_file = "F://python入門//數據2//appname_test.xlsx"output_file = "F://python入門//數據2//output.xlsx"data_frame = pd.read_excel(input_file,sheet_name='sum1'
  • 適合新手的 python pandas 學習筆記(2)
    未來我還將統計更多具體的數據指標,可以預想到邏輯會更加複雜,代碼只會更加臃腫。昨晚臨睡前,我用手機瀏覽了一點《利用 python 做數據分析》中的代碼,簡潔而優雅,我非常期待用 pandas 重新滿足我的需求。今天的心理建設已經完成,動力很足。然後我寫下了需求,然後按慣例把需求拆解,思考每個步驟如何用 pandas 實現,……但我突然意識到這種做法是錯誤的。
  • 如何使用iloc和loc 對Pandas Dataframe進行索引和切片
    一旦我們將一個數據集加載為Pandas dataframe,我們通常希望根據某些條件開始訪問該數據的特定部分。例如,如果我們的數據集包含比較不同實驗組的實驗結果,我們可能需要分別計算每個實驗組的描述性統計。
  • 數據科學 | 從 Pandas 小白到 Pandas 能手
    在本文中,作者從 Pandas 的簡介開始,一步一步講解了 Pandas 的發展現狀、內存優化等問題。這是一篇最佳實踐教程,既適合用過 Pandas 的讀者,也適合沒用過但想要上手的小白。通過本文,你將有望發現一到多種用 pandas 編碼的新方法。Pandas 發展現狀;內存優化;索引;方法鏈;隨機提示。
  • 史上最全Pandas 教程!
    有一個用於數據科學的包絕對是必需的,它就是 pandas。pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。
  • 這是 Pandas 最詳細教程了
    pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。讓我們開始吧!
  • 別找了,這是 Pandas 最詳細教程了
    有一個用於數據科學的包絕對是必需的,它就是 pandas。pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。
  • Python:Pandas的DataFrame如何按指定list排序
    前言寫這篇文章的起由是有一天微信上一位朋友問到一個問題,問題大體意思概述如下:現在有一個pandas的Series和一個python的list,想讓Series按指定的list進行排序,如何實現?這個問題的需求用流程圖描述如下:我思考了一下,這個問題解決的核心是引入pandas的數據類型「category」,從而進行排序。在具體的分析過程中,先將pandas的Series轉換成為DataFrame,然後設置數據類型,再進行排序。思路用流程圖表示如下:
  • 小白學 Python 數據分析(3):Pandas (二)數據結構 Series
    (1):數據分析基礎小白學 Python 數據分析(2):Pandas (一)概述引言先介紹下 Pandas 的數據結構,畢竟數據結構是萬物的基礎。模塊導入首先我們在代碼中引入 Pandas 和 Numpy ,如下:import numpy as npimport pandas as pdSeriesSeries 可以簡單的理解為一維數組,可以存儲整數、浮點數、字符串、Python 對象等類型的數據。這個概念有點像 Java 中的集合。
  • 數據分析利器 pandas 系列教程(四):對比 sql 學 pandas
    pandas 教程的第四篇,本篇將對比 sql 語言,學習 pandas 中各種類 sql 操作,文章篇幅較長,可以先收藏後食用,但不可以收藏後積灰~為了方便,依然以下面這個 DataFrame 為例,其變量名為 df,設有一同樣結構的 SQL 表,表名為 tb:
  • Pandas >>簡體繁體互轉,且寫入DataFrame
    基礎數據:安裝opencc-python-reimplementedpip install opencc-python-reimplemented>簡體轉繁體,並寫到DataFramelist_1=[]for i in range(data.shape[0]):# t2s - 繁體轉簡體# s2t - 簡體轉繁體
  • pandas | 詳解DataFrame中的apply與applymap方法
    在上一篇文章當中,我們介紹了panads的一些計算方法,比如兩個dataframe的四則運算,以及dataframe填充Null的方法。今天這篇文章我們來聊聊dataframe中的廣播機制,以及apply函數的使用方法。
  • 用 Pandas 讀寫網頁中的 HTML 表格數據
    我們可以使用HTML的<table>標籤來呈現表格數據。Pandas 數據分析庫提供了read_html()和to_html()之類的功能,因此我們可以將數據導入和導出到DataFrames。在本文中,我們將學習如何從HTML文件讀取表格數據並將其加載到Pandas DataFrame中。我們還將學習如何將數據從Pandas DataFrame寫入HTML文件。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    其中,有些可能是相當有名的,有些可能是新的,但我相信下次您從事數據分析項目時,它們會非常有用。1.Profiling the pandas dataframeProfiling 是一個幫助我們理解數據的程序,而 Pandas Profiling 正是實現這一點的一個 python 包。
  • PandaSQL:一個讓你能夠通過SQL語句進行pandas的操作的python包
    Pandas是近年來最好的數據操作庫之一。它允許切片、分組、連接和執行任意數據轉換。如果你熟練的使用SQL,那麼這篇文章將介紹一種更直接、簡單的使用Pandas處理大多數數據操作案例。假設你對SQL非常的熟悉,或者你想有更可讀的代碼。或者您只是想在dataframe上運行一個特殊的SQL查詢。
  • Python 數據處理庫 pandas 入門教程
    關於如何獲取pandas請參閱官網上的說明:pandas Installation。我已經將本文的源碼和測試數據放到Github上: pandas_tutorial ,讀者可以前往獲取。另外,pandas常常和NumPy一起使用,本文中的源碼中也會用到NumPy。