matplotlib の 棒グラフ でx軸に日付をとりたいんだけど

matplotlib の pyplot.bar で棒グラフを描く際、x軸に日付の入った pandas の Series をそのまま渡して問題なく動いていたのだけれど、 ある日から突然動作しなくなった。多分 conda update anaconda かけたタイミングだと思うのだが、バージョンとか無頓着で全然わからん。

values使ったら動くようになったからいいけど……。なんで?

import pandas as pd
import matplotlib.pyplot as plt
#エクセルを読み込む。日単位のデータをグラフにしたい。
df = pd.read_excel("test.xlsx")
df
seq accessdate a b
0 1 2018-06-01 430 68
1 2 2018-06-02 285 80
2 3 2018-06-03 125 89
3 4 2018-06-04 487 57
4 5 2018-06-05 477 1
5 6 2018-06-06 159 4
6 7 2018-06-07 332 98
7 8 2018-06-08 224 18
8 9 2018-06-09 106 3
#各列の型はこんな感じ
df.dtypes
seq                    int64
accessdate    datetime64[ns]
a                      int64
b                      int64
dtype: object
#x軸にseqを与える。動く。
plt.bar(df.seq,df.a)
<BarContainer object of 9 artists>
#x軸にaccessdateを与える。動かない。以前は動いていた。
#型のことで怒られていそうなのはわかるが、何か仕様がかわったのか。
plt.bar(df.accessdate,df.a)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-25-78e092c13e1a> in <module>()
----> 1 plt.bar(df.accessdate,df.a)


~\Anaconda3\lib\site-packages\matplotlib\pyplot.py in bar(*args, **kwargs)
   2768                       mplDeprecation)
   2769     try:
-> 2770         ret = ax.bar(*args, **kwargs)
   2771     finally:
   2772         ax._hold = washold


~\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs)
   1853                         "the Matplotlib list!)" % (label_namer, func.__name__),
   1854                         RuntimeWarning, stacklevel=2)
-> 1855             return func(ax, *args, **kwargs)
   1856 
   1857         inner.__doc__ = _add_data_doc(inner.__doc__,


~\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in bar(self, *args, **kwargs)
   2257         if align == 'center':
   2258             if orientation == 'vertical':
-> 2259                 left = x - width / 2
   2260                 bottom = y
   2261             elif orientation == 'horizontal':


TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('float64')
#x軸にaccessdate.valuesを与える。動く。
plt.bar(df.accessdate.values,df.a)
<BarContainer object of 9 artists>
#こっちはpandasのSeriesだけど、
type(df.accessdate)
pandas.core.series.Series
#valuesだと numpy.ndarray
type(df.accessdate.values)
numpy.ndarray
#lineだとそのまんまで動くんだよなー
plt.plot(df.accessdate, df.a)
[<matplotlib.lines.Line2D at 0x145329175c0>]

f:id:kobak:20180715093505p:plain

Windows10に無償アップグレードしたプリインストール版Windowsのハードウェア変更と再認証

 表題の件。検索するとライセンス再認証に成功した・しなかったと色々な話が見つかるが、基本的にはハードウェア変更前にWindowsのアカウントをMicrosoftアカウントに切り替えてライセンスの紐付けを行い、ハードウェア変更後に引き続きMicrosoftアカウントでWindowsにサインインしてライセンス再認証を行えば良いという話であった。

 今回、Windows 10 Pro に無償アップグレード済みであった、HP製HPE-190jp(Windows 7 Ultimate プリインストール)のマザーボードとCPUを交換し、ライセンス認証に成功したので備忘録として記事を残す。

 さて、今回ハードウェアを交換したHPE-190jpは Intel Core i7 - 960 を選択し、CPUの世代としては 初代 Core i シリーズである Nehalem であり、「Sandy Bridgeおじさん」の一つ前にあたる。とはいえ性能自体は Core i7 2600K と 大差はなく、すでにHHDはSSDに換装していたこともあり、ネット巡回にNetflixやPrime Videoあたりの動画を観るといった使い方ではそれほど不満も覚えなかったが、TDP130Wという値からもわかる発熱の多さとその熱を冷却するためのファンの轟音にいい加減耐えられなくなった。

 そして今回、新しく選んだCPUは AMD Ryzen 2700X 。注文する直前まで Core i7-8700Kで行くつもりだったが、発作的に Ryzen を選択することとなった。ベンチマークの比較記事や脆弱性の件で思うところがあったのもあるが、特にOCもやるつもりもないので、値段も大して変わらずにRyzenはリテールクーラーが付いているから楽でいいやと考えたのもある。普通、自作する人間からすればリテールクーラーなどゴミでしかないだろうが、自作から暫く離れていた自分のような人間にとっては手っ取り早く動かせるので有り難いのである。

 CPU 交換に付随して当然マザーボードやメモリも交換。MBはMSI X470 GAMING PLUS を。メモリはDDR4-2666 8GB*2 とした。ケースと電源も買い替え。グラボ(GTX1060 6GB)、光学ドライブ、そしてWindows 10 proが納められたSSDはHPE-190jpから移植した。果たしてライセンス認証は上手く行くのか? 

 HPE-190jpのバラシを含めて、電源の投入までは3時間強を費やした。久々だったのでだいぶ戸惑った。絶対どこかミスってるよな、さあ、まずBIOS画面を拝めるかどうか、ダメだろうなと、脳内でブツブツ呟いていると無事にBIOS画面が。簡単に設定をすませてWindowsのブートへ。そして特段、躓くこともなくログイン画面が表示。すごい。Windows10 しゅごい。その昔、MB交換で散々苦労していたのは何だったのか。

 さっそくライセンス認証の状態を確認すると、ライセンス認証されていない状態になっていたため、ネットで調べた手順を実行。「トラブルシューティング」⇛「このデバイス上のハードウェアを最近変更しました」を選択すると、新しいウィンドウが表示され……あれ白いままだ……何か嫌な予感が。

 

Windowsを再度ライセンス認証することができません

現在、弊社のサーバが利用できないためです。数分間待機するか、Microsoftアカウントをもう一度追加してみてください。

  

 この後、数回トラブルシューティングを繰り返すも同様。再起動しても同様。3時間待っても同様。これもしかするとエラーメッセージと実際の原因が一致していない奴では?さすがにここまでハードウェアが別物になっているとプリインストール版は認証を許さないのか?くそ折角Windows褒めたに全然しゅごくない。畜生。さすがMSKK。糞が。

 そして翌日。M.2 SSDDSP版のWindowsでも購入するかと通販サイトを物色。ほぼ諦めて最後にダメ元でライセンス認証をやり直してみると……。ライセンス認証が通った。

f:id:kobak:20180429151827p:plain

 メッセージの通りサーバ側の問題だったのだろうか。 検索してみると、一度サインインをローカルアカウント管理に切り替え、もう一度Microsoftアカウントに戻すと認証が通るとの情報もありよくわからない。うーん。やはり、この手のシステムメッセージは額面通りに受け取れないところがある。何にせよ認証が通ってよかった。

 安心して色々設定を見直していると、すでに別のPCに変わり果てたWindowsのバージョン情報にはサポートとして製造元情報にHPが記載されたままになっているのを見つけた。

f:id:kobak:20180429151725j:plain

 

 

サーバー側のファイルは更新されました

 OneDriveに置いたエクセルファイルをローカルで開くと、特定のファイルで「サーバー側のファイルは更新されました」というメッセージが表示され、競合していないにも関わらずサーバー側に新しいファイルがあるという競合状態になってしまい、いちいちファイルを開き直したり、保存時にローカル側のファイルを選択するという作業が発生してクソうざかった。

 検索すると同様の報告はあるものの対処法がなく途方に暮れていたが、何の気なしにPC側のOneDriveの設定を眺めていると「Office」タブに

「officeを使用して officeファイルを同期する」
「office2016を使用して officeファイルを同期する」

との項目があり、試しに両方のチェックを外したら症状は出なくなった。

 

sqlite3-rubyについてのメモ

rubysqliteを使ってみる。

id text
1 foo
2 bar
3 buzz
require 'sqlite3'
db = SQLite3::Database.new('test.db')

p db.execute("select * from test;")
[[1, "foo"], [2, "bar"], [3, "buzz"]]
res = db.query("select * from test;") #リザルトセットが返る
p res.columns                         #含まれる列名が返る
p res.types                           #含まれる列の種別が返る
p res.next                            #1行取り出す。
res.each{|row|                        #ブロックを渡して1行ずつ処理
    p row
}
p res.eof?                            #最後まで到達したか?
["id", "text"]
["INTEGER", "TEXT"]
[1, "foo"]
[2, "bar"]
[3, "buzz"]
true

最近のb-mobile イオン・プランA

b-mobileのイオン限定プランA。平日の12時台は全く実用にならない。

測定日時は12/19(月) 12:48、場所は神奈川県横浜市。下り16kbps、上り11kbps。速度測定アプリは何とか最後まで終了するが、通信を必要とする一般のアプリは数分間待たされた挙句、通信に失敗したという類の反応を示す。

今年の夏に契約した30代の男性は「メールやサイト閲覧程度なら、これで十分」と満足げだ。

http://www.toyokeizai.net/business/strategy/detail/AC/aa84c1bd67ca864609eb545f942028e3/

夏ぐらいには確かに自分もそう思っていた。でも、今の状況は無い。

アイドルマスター 23話

奈落に落ちるプロデューサーをみて、陶山章央さんのことが頭に浮かんだ。ところで、仕事の合間の練習じゃ絶対に全員が集まるわけが無くて、全員が集まるには練習も仕事と同じプライオリティでスケジュールしなければいけない訳だけど、そういう前提の理解があってあえて全員で集まろうとしていたのか、そうでは無いのかがよくわからなかった。普通に考えれば、分かっているけど……でも、というお話なんだろうけど。

映画けいおん!

3日、109シネマズMM横浜のレイトショーにて。話の構成が上手くなくてとっ散らかってるなと思ったけど、映画になって変わってしまった所が無くて良かったんじゃないか。映画というより、テレビスペシャル的な。悪く言うと、映画になってないという話になるが、何が足りていないのかというと。何だろう。
被写界深度が浅いカットが多くて、これは映画だからではなくてテレビでもだいぶ意識してやっていた気がするけど、ちょっとボカシ量が大きすぎる気がした。多分、劇場のスクリーンで観ているから気になるんで、テレビなら気になっていないと思う。