#ライブラリインポート
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)に取り組んでいきたいと考えています。