Help us understand the problem. What is going on with this article?

[Python]ランダムに発生するXMLを解析する[ElementTree]

ライブラリインポート

XML解析に必要なライブラリElementTreeをインポートします。
globはフォルダ内のXMLのPathを取得
pandasは配列に格納。pandasからcsvに書き出しとMySQLに保存を実行します。

from xml.etree import ElementTree
import glob
import pandas as pd

XML

こんな感じのXMLデータを解析します。
offsetは秒単位の時間が格納されています。
86400秒は24時間

-<Day>
 -<EventCollection>
  -<Event>
   <Offset>0</Offset>
   <Value>70</Value>
  </Event>
  -<Event>
   <Offset>86400</Offset>
   <Value>69</Value>
  </Event>
   -<Event>
   <Offset>172800</Offset>
   <Value>73</Value>
  </Event>
<Day>

フォルダからXMLを取得して解析

フォルダ内にダウンロードされたXMLのPathを取得して解析します。

xmlfile = glob.glob("C:/Users/user/*") #fileにXMLファイルパスを格納

file = len(xmlfile) #XMLファイル数をカウント

i_file = 0 #XMLファイルを上から順番に指定するための番号_0が一番最初

for i in range(file):
    XMLFILE = xmlfile[i_file]
    i_file += 1
    tree = ElementTree.parse(XMLFILE)  # XMLファイル読み込み
    root = tree.getroot() # XMLの中身を取得

    # listを準備
    Day = [] 
    Night = []

    #forを利用して数値を全てlistに格納
    for e in root.findall('.//Day/EventCollection/Event/Value'):
        Day.append(e.text)
    for e in root.findall('.//Night/EventCollection/Event/Value'):
        Night.append(e.text)

    print(Day)
    [70,69,73]

ListをPandasに格納してからcsvに保存

#listを1つにまとめる
listData = [Day, Night]

# listDataをDataFrameに変換。.Tは行と列を入れ替え
df = pd.DataFrame(listData).T

# カラム名を追加
df.columns = ['Day', 'Night']

#csvのpathを設定してpandasDataFramをcsvに保存
filename = 'C:/Users/user/csv/AAA.csv'
df.to_csv(filename, index=False)

MySQLにDataFrameを保存

csvで出力したDataFrameをMySQLにも保存します。

ライブラリをインポート

from sqlalchemy import create_engine
url = 'mysql+mysqlconnector://[user]:[pass]@[host]:[port]/sampleDB'
engine = create_engine(url, echo=True)

#df.to_sqlで'sampleDB_table'にdfに格納したデータを保存
df.to_sql('sampleDB_table', engine, index=False, if_exists='append')

これを私はFileMakerから実行させていますが、Windowsであればタスクスケジューラなどで定期的に実行させればデータが自動的にデータベースに格納されていき、のちの解析に使えるようになります。
今後は、PHP、javascriptなどを利用してデータの見える化(BIツール)、その次に機械学習(AI)に取り組んでいきたいと考えています。

S10CF
資格:臨床工学技士 臨床ME専門認定士 呼吸療法認定士 透析技術認定士 体外循環技術認定士 不整脈治療専門臨床工学技士 心血管インターベンション技師 医療機器情報コミュニケータ  受賞歴:FileMaker選手権2014 メディカル賞 第64回日本不整脈心電学会メディカルプロフェッショナル優秀演題銀賞 第66回日本不整脈心電学会メディカルプロフェッショナル最優秀演題賞
https://www.youtube.com/channel/UCFhUQsmkRIL7GCW9wIqCT0A
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした