しかし、日付に関しては日本語文字列で表記されているので、このまま日付として人s着させることができません。
そこで、この日付をdatetimeモジュールを用いて扱いやすいようフォーマットを変更しようと思います。
まず日本語文字列のうち年、月、日にちの情報をそれぞれ抜き出すのですが、
これは正規表現で抜き出すことにしました。
このへんはJAVAのでも使いましたのでやり方はほぼ同じです。
import numpy as np import re import datetime def str2date(days): days = days.decode('utf-8') pattern = u"([0-9]{4})年([0-9]{1,2})月([0-9]{1,2})日" ##[0-9]{1,2}月[0-9]{1,2}日 matchOB = re.search(pattern,days) yyyy = int(matchOB.group(1)) mm = int(matchOB.group(2)) dd = int(matchOB.group(3)) return datetime.datetime(yyyy,mm,dd)
このstr2date関数で年月日を探しだして、再フォーマットします。
ただ、この状態では、引数に配列を入れることができないので、
例えば
data[date]
ではうまく行かず、
data[date][2]
のように行列の行数まで指定してやる必要があります。
今回は上の
data[date]の状態で日付すべてを使えるようにしたいので、
この関数をベクトル化して使う必要があります。
そのためにもう一つ関数を作りました。
def vstr2date(deta): v2d = np.vectorize(str2date) return v2d(deta[dataload.date])
この関数は
t = vstr2date(data)
(dataは前回のdataloadクラスで読み込んだ変数)
とすることでdataの日付をフォーマットしてくれます。
今回もこの2つの関数をdataloadクラスなどに組み込みたかったのですが、
クラスに組み込むとうまく行かなかったので、
関数の状態でモジュールから呼び出すことにしました。
参考
実験データの読み込み(テキストファイル)
http://kaiseki-web.lhd.nifs.ac.jp/documents/Python/textfile.htm
Pythonで文字列 <-> 日付(date, datetime) の変換http://qiita.com/shibainurou/items/0b0f8b0233c45fc163cd
日付フォーマット(datetime⇔文字列)
http://python.civic-apps.com/date-format/
0 件のコメント:
コメントを投稿