10日目 日に日に伸びる日の出の時間
このコーディングがpythn的に美しいモノとは全く思わないが、さしあたり、前日の日の出時間と当日の日の出時間の差分を表示できるようにした。
私は、構造化プログラムを長年読んできたので、pythonのようなスクリプト言語を適切に扱えていないことを自覚している。
さすがに、配列を回すときに、その前の配列をストアして(以下のコードでいうとfwdday)、差分を取得する、なんて、プリミティブだと思う。
ほかにいいやり方はあるはず。
また、この差分検出の算式は、日の出時間が遅くなりはじめると機能しなくなる。洗練された算式があるはずだ。pytho初心者&文系には厳しい。
だが、それでも、毎日何分ずつ日の出の時間が早くなっていくのかを知りたい、という欲求に勝てなかった。
と言うことで、以下のような結果だ。
次回はgitを試すか、あるいは、算式を見直すか。
それでは。
9日目 日付の差分をとる
1日前の日付をとってみる。
from datetime import datetime as dt from datetime import timedelta as td
#現在の日付
n = dt.now()
print(n)
#1日前
yd = n – td(days=1)
print(yd)
さらに検証。差分を出して表示。
#検証
term = n – yd
print(term)
こんな感じになった。
日付の扱い方が少しずつわかってきた。
8日目 日の出時刻一覧表を作る
pandasを使うと、日付の行列を簡単に作れるようだ。
http://sinhrks.hatenablog.com/entry/2014/11/09/183603
こちらを見てみる。
Pandasのpd_daterangeが使える。
n = datetime.now()
dtidx = pd.date_range(n,periods=15,freq=’D’)
結果。さしあたり、日時の行列ができている。
続いて、この行列に対応した日昇時刻をゲットしてみる。
まずはAstralのセットアップ。これは、公式サイトの例文をそのまま流用する。
city_name =’Tokyo’
a = Astral()
a.solar_depression = ‘civil’
city = a[city_name]
print(‘Information for %s/%s\n’ % (city_name, city.region))
timezone = city.timezone
print(‘Timezone: %s’ % timezone)
print(‘Latitude: %.02f; Longitude: %.02f\n’ % \
(city.latitude, city.longitude))
続いて、日付の行列をAstralに食わせて表示する。
for dt in dtidx:
sun = city.sun(date=dt, local=True)
print(‘Sunrise: %s’ % str(sun[‘sunrise’]))
結果だ。この時期は、1日に1分半も日昇時刻が早まったいるのか。加速度的だ。
加速度的? これをなんとかグラフにできないだろうか??
次の課題。
7日目 pandas は Pythonista3では使えない?
今日もコーディングできない。
調査のみ。
日付行列をつくろう考えた。日付ごとの日没時間推移を作るために。
だが、残念ながらpandasが使えないようなのだ。
- pipでpandasでインストールし、importと打つが、numpyとバージョンが合わない、となる。
- pipでnumpyを改めてインストールすると、そもそもnumpyが動かない。pythonistaではカスタマイズされたnumpyが動いている。通常のnumyは動かないということか。
- こちらも。
https://forum.omz-software.com/topic/4365/will-pandas-and-scipy-be-available-on-pythonista-in-the-near-future
ということで、そこは残念だが、macで試すしかなさそうだ。
6日目 datetime import の方法
importをする場合、該当するモジュールの階層構造を抑えないといけない場合がある。
医科のような事象が起きて、初心者的に少し混乱したが、まあ理解したつもり。
1)
from datetime import datetime
s =datetime.now()
→ OK
2)
from datetime
s =datetime.now()
→ NG
datetimeの構成は階層構造だ。
datetime <- (1)
timedelta Objects
date Objects
datetime Objects <- (2)
time Objects
tzinfo Objects
timezone Objects
strftime() and strptime() behavior
a) import datetime は、(1)を指している。
b) from date time import date time は(2)を指している。
now()は、(2)の下に位置しているので、a)のしていではNGなのだ。
なので、
2)-2
from datetime
s =datetime.datetime.now()
→ OK
となる。
勉強になった。
5日目 pandas
日付のハンドリング調べていたら、japandasに行き着いた。
https://pypi.python.org/pypi/japandas/
さらに本家のpandas。
http://pandas.pydata.org
今日は、英文を読んで終わった。
また明日。
4日目 UTC TIMEをゲットする
日付のハンドリングは、コーディングのひとつの基礎と思うが、練習をしようと思った。日付なテーブル情報を作ろうと思ったが、世界標準時を扱えることを知った。
https://docs.python.jp/3/library/datetime.html
from datetime import datetime
# JST
s = datetime.now()
print(s)
# UCT
s = datetime.utcnow()
print(s)
タイムゾーンごとに時間も出せそうだ。
今日は時間切れ。ここまで。
3日目 Astralを動かす。
Astralのインストールは、Macではすんなりオーケー。

以下の通り、今日の日の出日の入り、南中時刻などをゲットした。

やはり、Macで開発するのが効率的。
2日目 iOS で動くPython開発環境Pythonistaでpipを使おうとするが…。
Pythonで、日の出日の入り時間をゲット
Astralと言うモジュールがあるようだ。
早速ゲットしてみよう。
https://pypi.python.org/pypi/astral
iOSのPuthon開発環境であるPythonistaを使い、StaShというシェルを使う。
ところが、失敗した。

どうも、セットアップがうまくいかないようだ。
こちらが、そのソースだ。
https://github.com/sffjunkie/astral/blob/master/setup.py

やはり、Pythonistaへのインストールは難しいか。
第1日 Termiusを使う
Termius を使った。
Coreserverを、使って何か面白いことをできないか、という試みを始めた。記録してみる。
まずは、SSHをiOSで使えるようにするためのアプリTermiusを使った。
- Coreserver でssh ホスト登録。
- Termiusで接続。
- ユーザー名指定で戸惑うが、どうやら、ユーザーをKeychainから選び別途登録する必要があるようだ。
ということで、接続できた。
今日はここまで。では。