2 / 2Write a python script to prase the following XML into a pandas dataframe. Expect the data to be fetched from an external URL. ``` <VYSLEDKY_OKRSKY xmlns="http://www.volby.cz/ps/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.volby.cz/ps/ ps_vysledky_okrsky.xsd" DATUM_CAS_GENEROVANI="2021-10-09T14:30:00"> <DAVKA PORADI_DAVKY="2" OKRSKY_DAVKA="3" OKRSKY_CELKEM="14886" OKRSKY_ZPRAC="5"/> <OKRSEK CIS_OBEC="550850" CIS_OKRSEK="9" PORADI_ZPRAC="3" DATUM_CAS_ZPRAC="2021-10-09T14:25:39" OPAKOVANE="0"> <UCAST_OKRSEK ZAPSANI_VOLICI="40" VYDANE_OBALKY="32" ODEVZDANE_OBALKY="32" PLATNE_HLASY="32"/> <HLASY_OKRSEK KSTRANA="4" HLASY="3"/> <HLASY_OKRSEK KSTRANA="5" HLASY="2"/> <HLASY_OKRSEK KSTRANA="12" HLASY="1"/> <HLASY_OKRSEK KSTRANA="13" HLASY="12"/> </OKRSEK> <OKRSEK CIS_OBEC="580783" CIS_OKRSEK="1" PORADI_ZPRAC="4" DATUM_CAS_ZPRAC="2021-10-09T14:28:30" OPAKOVANE="0"> <UCAST_OKRSEK ZAPSANI_VOLICI="54" VYDANE_OBALKY="33" ODEVZDANE_OBALKY="33" PLATNE_HLASY="33"/> <HLASY_OKRSEK KSTRANA="3" HLASY="3"/> <HLASY_OKRSEK KSTRANA="4" HLASY="10"/> <HLASY_OKRSEK KSTRANA="5" HLASY="3"/> <HLASY_OKRSEK KSTRANA="8" HLASY="1"/> </OKRSEK> <OKRSEK CIS_OBEC="597678" CIS_OKRSEK="6" PORADI_ZPRAC="5" DATUM_CAS_ZPRAC="2021-10-09T14:30:00" OPAKOVANE="0"> <UCAST_OKRSEK ZAPSANI_VOLICI="46" VYDANE_OBALKY="34" ODEVZDANE_OBALKY="34" PLATNE_HLASY="34"/> <HLASY_OKRSEK KSTRANA="1" HLASY="1"/> <HLASY_OKRSEK KSTRANA="3" HLASY="3"/> <HLASY_OKRSEK KSTRANA="4" HLASY="2"/> <HLASY_OKRSEK KSTRANA="8" HLASY="2"/> </OKRSEK> </VYSLEDKY_OKRSKY> ``` The columns of the DataFrame should be: PORADI_DAVKY,KSTRANA,HLASY,ZAPSANI_VOLICI,CIS_OBEC,CIS_OKRSEK,PORADI_ZPRAC. There should be one row per OKRSEK.
import pandas as pd
import xml.etree.ElementTree as ET
import requests
# fetch XML data from external URL
url = "https://example.com/xml_data.xml"
xml_data = requests.get(url).text
# parse XML data
root = ET.fromstring(xml_data)
# create empty list to store data
data = []
# iterate through OKRSEK elements
for okrsek in root.findall(".//OKRSEK"):
# extract values from XML elements
PORADI_DAVKY = root.find(".//DAVKA").get("PORADI_DAVKY")
CIS_OBEC = okrsek.get("CIS_OBEC")
CIS_OKRSEK = okrsek.get("CIS_OKRSEK")
PORADI_ZPRAC = okrsek.get("PORADI_ZPRAC")
ZAPSANI_VOLICI = okrsek.find(".//UCAST_OKRSEK").get("ZAPSANI_VOLICI")
for hlasy_okrsek in okrsek.findall(".//HLASY_OKRSEK"):
KSTRANA = hlasy_okrsek.get("KSTRANA")
HLASY = hlasy_okrsek.get("HLASY")
# store values in list
data.append([PORADI_DAVKY, KSTRANA, HLASY, ZAPSANI_VOLICI, CIS_OBEC, CIS_OKRSEK, PORADI_ZPRAC])
# create DataFrame from data
df = pd.DataFrame(data, columns=["PORADI_DAVKY", "KSTRANA", "HLASY", "ZAPSANI_VOLICI", "CIS_OBEC", "CIS_OKRSEK", "PORADI_ZPRAC"])
# print DataFrame
print(df)