Python 学習:datetime モジュール

2014-06-20 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
4、2、2、1、0、 0、0、0、0、0(41)で、換算ポイント 72pt 。
「化学業界」昨夜、4位にダウン。
・-・ - -・

さて、本文。

3ヶ月前(2014-03-14)に、
Python 学習:time モジュール
を書いた。
それは、
R 学習:date 関数とか
や、「Perl」での「use Time::HiRes qw( gettimeofday );」など
に対応する「Python」モジュールでした。

今回は、
前記事「Python 学習:CSV ファイル・アクセス
に出てきた、
  ・・・・・
  ・・・・・
  「Notes on Science」の 2013.12.29 付記事:
  「matplotlib
    Pythonのmatplotlib覚え書き
    2013/12/29 更新 / 2013/8/6 更新 / ・・・ / 2013/1/12 リリース

    csvファイルから折れ線グラフを描く場合の基本的なプログラム
    linegraph.py data.csv
    ・・・・・
    ・・・・・
    data.csvは下のような内容が数千行
    2012-10-08 16:20:50,74.3,48.1
    2012-10-08 16:30:50,74.6,47.7
    ・・・・・
    ・・・・・

import matplotlib.pyplot as plt
import sys, csv, datetime
date, ch1, ch2 = [], [], [] # 配列変数を定義
f = csv.reader( open( sys.argv[1] ) ) # 引数にファイル名を指定してファイルを開く
for line in f: # 各列のデータを取得。1列目は日付型として取得
date.append( datetime.datetime.strptime( line[0], '%Y-%m-%d %H:%M:%S' ) )
ch1.append( float( line[1] ) )
ch2.append( float( line[2] ) )
fig = plt.figure( figsize=(16,9) ) # グラフのサイズを1600*900pixelに指定
fig.autofmt_xdate() # 日付型の目盛を作るのに必要らしい
plt.subplot(111) # subplot(LMN)で、Lが縦の区画数、Mが横の区画数、Nが対象の区画
plt.plot( date,ch1, '-', linewidth=1 ) # dateとch1に関するグラフをプロット
plt.plot( date,ch2, '-', linewidth=1 ) # -はプロットを線でつなぐ形式。マーカー無し
plt.legend( ( 'Ch1', 'Ch2' ), loc='center left', fontsize='10') # 凡例の内容と表示位置、文字サイズ(plotの後
plt.show()
plt.savefig( sys.argv[1] + '.png' ) # データファイル名+.pngを出力


において、
グラフの軸目盛として「日付型の目盛を作る」
方法があった。

それで、“R 学習”の時の、
2年前(2012-09-18)の記事:
R 学習:plotグラフのX軸、日付目盛で
や、昨年(2013-11-04)の記事
再「R」学習:日付型データ
に対応する、“Python 学習”です。


先ず何より先に、
本家“Python 2.7ja1”ドキュメント:
8.1. datetime - 基本的な日付型および時間型
  datetime モジュールでは、日付や時間データを簡単な方法と
  複雑な方法の両方で操作するためのクラスを提供しています。
  日付や時刻を対象にした四則演算がサポートされている一方で、
  このモジュールの実装では出力の書式化や操作を目的とした
  データメンバの効率的な取り出しに焦点を絞っています。
  機能については、time および calendar も参照下さい。

  日付および時刻オブジェクトには、“naive”および“aware”の
  2種類があります。
  この区別はオブジェクトがタイムゾーンや夏時間、あるいは
  その他のアルゴリズム的、政治的な理由による時刻の修正に関する
  何らかの表記をもつかどうかによるものです。
  特定の数字がメートルか、マイルか、質量を表すかといったことが
  プログラムの問題であるように、naive な datetime オブジェクトが
  標準世界時 (UTC: Coordinated Universal time) を表現するか、
  ローカルの時刻を表現するか、あるいは他のいずれかのタイムゾーンに
  おける時刻を表現するかは純粋にプログラムの問題となります。
  naive な datetime オブジェクトは、現実世界のいくつかの側面を
  無視するという犠牲のもとに、理解しやすく、
  かつ利用しやすくなっています。
  ・・・・・
  ・・・・・
とある。


それで、皆様のブログ等はどうか?


グラフの軸目盛については?

Drkcore」?
のページの中程にある、
matplotlibを使う
  pythonのグラフ描画ライブラリであるmatplotlibで
  日付ごとにプロットするサンプル。

from pylab import *
from matplotlib.dates import MONDAY, WeekdayLocator
import datetime

start_date = datetime.date(2007, 5, 1)
end_date = datetime.date.today()
delta = datetime.timedelta(days=1)

mondays = WeekdayLocator(MONDAY)

dates = drange(start_date,end_date,delta)

s = rand(len(dates)) + 85
t = rand(len(dates)) + 80

fig = figure()
ax = fig.add_subplot(111)
ax.plot_date(dates, s, 'r--')
ax.plot_date(dates, t, 'bo-')

ax.xaxis.set_major_locator(mondays)
ax.autoscale_view()
ax.grid(True)
fig.autofmt_xdate()

title('My Blood Pressure')
xlabel('Date')
ylabel('Blood Pressure')

fig.savefig('datetest')


そして、その2つ下にある
pythonのdatetimeモジュール
  6.10 datetime -- 基本的な日付型および時間型みながら。

>>> import datetime
>>> datetime.date.today()
datetime.date(2007, 7, 28)
>>> d = datetime.date.today()
>>> d.month
7
>>> d.day
28
>>> d.year
2007


が参考になる。


また、例の「Qiita」に、
shibainurouが2013/01/06に投稿 (2013/08/17に編集) とある
Pythonで文字列 <-> 日付(date, datetime) の変換
  文字列から日付(datetime)
    from datetime import datetime as dt
    tstr = '2012-12-29 13:49:37'
    tdatetime = dt.strptime(tstr, '%Y-%m-%d %H:%M:%S')
   strptimeの第二引数は第一引数のフォーマットを渡す。
  文字列から日付(date)
    import datetime
    tstr = '2012-12-29 13:49:37'
    tdatetime = datetime.datetime.strptime(tstr, '%Y-%m-%d %H:%M:%S')
    tdate = datetime.date(tdatetime.year, tdatetime.month, tdatetime.day)
  日付から文字列
    from datetime import datetime as dt
    tdatetime = dt.now()
    tstr = tdatetime.strftime('%Y/%m/%d')
  ・・・・・
  ・・・・・

これは、
データの型:「日付型」「時間型」の(文字列型との)変換方法。


よし、
matplotlib」の
autofmt_xdate
更には、
本家“Python 2.7ja1”ドキュメントの
「8.1. datetime - 基本的な日付型および時間型」
等々
を良く読んで勉強ダ。


本日はここまで。

Python 学習は続く、・・・


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140616
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク