Home > front end >  read_xml does not return the whole data in Python
read_xml does not return the whole data in Python

Time:04-19

I have this linked XML that has obviously two multiple records sets with top-line items: "Tours" and "Candidats".

You can find the XML at https://www.resultats-elections.interieur.gouv.fr/telechargements/PR2022/resultatsT1/011/077/077001.xml

I want to turn it into a Pandas dataframe that I can read more efficiently and conveniently. I passed the URL into read_xml like so:

pandas.read_xml("https://www.resultats-elections.interieur.gouv.fr/telechargements/PR2022/resultatsT1/011/077/077001.xml")

Which returns this very incomplete dataframe. The whole data in the XML is not returned in this dataframe. Question: what can I do best to get the whole data into a Pandas dataframe I can work with ?

         Type   Annee  CodReg  CodReg3Car         LibReg  CodDpt  \
0  Présidentielle  2022.0     NaN         NaN           None     NaN   
1            None     NaN    11.0        11.0  Île-de-France    77.0   

   CodMinDpt  CodDpt3Car          LibDpt  Commune  
0        NaN         NaN            None      NaN  
1       77.0        77.0  Seine-et-Marne      NaN

FYI: I can read this linked XML with Excel and it returns the full dataframe that should contain 13 rows and 33 columns. Excel might simply flattens everything with lots of repetitions, but that would be fine if I could manage to do this with Python.

CodePudding user response:

Couldn't find a way to do it in regular pandas, but luckily there's a package for this. You can install it with:

pip install pandas_read_xml

Afterwards, running this will yield the desired dataframe:

import pandas_read_xml as pdx
df = pdx.read_xml('https://www.resultats-elections.interieur.gouv.fr/telechargements/PR2022/resultatsT1/011/077/077001.xml')
pdx.fully_flatten(df)

Giving you:

Election|Scrutin|Type   Election|Scrutin|Annee  Election|Departement|CodReg Election|Departement|CodReg3Car Election|Departement|LibReg Election|Departement|CodDpt Election|Departement|CodMinDpt  Election|Departement|CodDpt3Car Election|Departement|LibDpt Election|Departement|Commune|CodSubCom  ... Election|Departement|Commune|Tours|Tour|Mentions|Exprimes|Nombre    Election|Departement|Commune|Tours|Tour|Mentions|Exprimes|RapportInscrit    Election|Departement|Commune|Tours|Tour|Mentions|Exprimes|RapportVotant Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|NumPanneauCand Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|NomPsn Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|PrenomPsn  Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|CivilitePsn    Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|NbVoix Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|RapportExprime Election|Departement|Commune|Tours|Tour|Resultats|Candidats|Candidat|RapportInscrit
0   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   1   ARTHAUD Nathalie    Mme 2   0,27    0,22
1   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   2   ROUSSEL Fabien  M.  13  1,75    1,41
2   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   3   MACRON  Emmanuel    M.  206 27,69   22,39
3   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   4   LASSALLE    Jean    M.  15  2,02    1,63
4   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   5   LE PEN  Marine  Mme 162 21,77   17,61
5   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   6   ZEMMOUR Éric    M.  79  10,62   8,59
6   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   7   MÉLENCHON   Jean-Luc    M.  124 16,67   13,48
7   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   8   HIDALGO Anne    Mme 7   0,94    0,76
8   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   9   JADOT   Yannick M.  45  6,05    4,89
9   Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   10  PÉCRESSE    Valérie Mme 68  9,14    7,39
10  Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   11  POUTOU  Philippe    M.  6   0,81    0,65
11  Présidentielle  2022    11  011 Île-de-France   77  77  077 Seine-et-Marne  001 ... 744 80,87   97,64   12  DUPONT-AIGNAN   Nicolas M.  17  2,28    1,85
  • Related