0:00 過ぎに就寝して 2:40 に目が覚める。横になり続ければまた眠りにつける? いや、7:00 まで意識があり続ける。これは日中倒れる。

納豆&白飯というゴールデン朝食をとって出勤。途中コンビニでハンチョウやアサヒ芸能などをチェック。

7:45 管理人室に到着。集会室とつながっているので中は広い。準備をして作業開始。 今日は第一木曜日なので不燃ゴミ。アイロン台は粗大ゴミだと思うがいちおう表に搬出しておく。 残り時間はタイルのカビ落とし。全然落ちない。

10:00 終了。本部に報告をして撤収。三日続けて電話に出てくれた人が同じなのは珍しい。 そういえばいつの間にか晴れている。イトーヨーカドーに寄ってトイレを使う。

10:30 曳舟の部屋に戻る。洗濯を開始する。ちょうど掃除で汚れた衣類ができたばかりだ。 洗濯機が仕事をしている待ち時間で PC を開いて書き物。洗濯物を干したら横になろう。 こう書くとダラダラしているように思われるか。体調が優れないから仕方がないのだ。

11:15 洗濯物を干したので寝る。13:50 起きる。体が温まった。おやつを食って外出か。

14:50 八広図書館入館。東京新聞(朝刊と夕刊)を読んで入館。16:05 着席。

  • 応募先から着信あり。面接へ進めそうだ。
  • WSL や Python のファイルを更新。この利便性を享受したあとではもう Windows に戻れない。
  • 例により極秘ファイルのダウンロードを併せて行う。
  • soejima1000 の新作がグラディウス 3 だが、以前 (#207) 取り扱ったものをもう一度やるのは他にあったか? スーファミ版。クリスタルコアのテーマ曲は珍しい。

さらなる着信がないようなので退館。そして外は強風。 ホームレスのときにこんな寒さがあった記憶がない。そういえば銭湯に行きたい。

16:40 曳舟の部屋に戻る。ファイル作業。

18:30 ファイル作業終了。時間が中途半端になってしまった。 しかしクーポンが欲しいので錦糸町に行きたいところだ。

19:15 いつもの経路でオリナスに到着。せっかくなのでゲーセンで 3 クレほど遊ぶ。 MJ プロ卓東風戦を 3 ゲーム遊ぼうとするが、妙に浮いてかなり時間が押す。

【SCORE】
合計SCORE:+58.6

【最終段位】
四人打ち段位:魔神 幻球:9

【1/7の最新8試合の履歴】
1st|----*-*-
2nd|---*-*--
3rd|-*-----*
4th|--*-----
old         new

【順位】
1位回数:2(28.57%)
2位回数:2(28.57%)
3位回数:2(28.57%)
4位回数:1(14.29%)
平均順位:2.29

プレイ局数:35局

【打ち筋】
アガリ率:17.14%(6/35)
平均アガリ翻:5.00翻
平均アガリ巡目:10.33巡
振込み率:5.71%(2/35)

【1/7の最高役】
・跳満
・跳満

21:00 カスミオリナス錦糸町店。店内弁当売り場はすっからかんだ。149 円。

  • 野菜ジュース (900)

21:15 ビッグエー墨田業平店。680 円。

  • ベビーチーズスモーク (4)
  • 大きなハンバーグ弁当
  • 大きなおむすび鮭
  • ハムマヨパン
  • パンケーキメープル&マーガリン
  • ポテコうましお

21:30 曳舟の部屋に戻る。寒いので先に風呂に入る。

22:00 風呂から出て PC に戻る。帳簿をつけて晩飯にする。 テザリングでメールとインターネットをチェック。面接日程の返答がない。

23:25 Pandas のテキスト処理の章を軽く目を通す。 読み続けていくと、ライブラリーの設計思想のようなものが体に染み込む。 あと IPython がタブ補完絡みでよく落ちる。

もう眠いから寝ようか。

Pandas Note

  • Working with text data
    • Text data types
      • 歴史的理由によりデフォルトで dtype=object
      • dtype=string or dtype=pd.StringDtype()
      • 作成後に .astype('string') でコンバートするのもあり
    • String methods
      • .str
      • «Since df.columns is an Index object, we can use the .str accessor»
      • df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_') のような処理は大量の一時オブジェクトを生成するのでは?
      • 欠損フィールドの扱いを理解することがいつものように急所となる
    • Splitting and replacing strings
      • .str.split() のようなメソッドはリストからなる Series を返す。 DataFrame として返すには expand=True とする。
      • .str.rsplit() は右側から分割する
      • .str.replace() は正規表現を指定するので、固定文字列を置換するならば regex=False を与える。このデフォルト値は True なのだが、そのうち False になるという FutureWarning を送出する。
        • Python 標準の正規表現のフラグを使用するには、コンパイル正規表現オブジェクトを採用するしかない。
    • Concatenation
      • Series 一つの中身を文字列にするには .cat()
      • 欠損値は通常無視される。cf. na_rep
      • Series と、それの長さがマッチする list 的なオブジェクトを連結して Series にする。
      • pd.concat()
      • キーワード引数 join を使って連結要素の一方のインデックスを他方に揃える
        • SQL と同じで、連結成分同士の長さがマッチする必要はもはやない。
      • Series 一個とたくさんのオブジェクトを連結できる
        • このコードで .to_numpy() を使っている意味は、インデックスのないオブジェクトでも連結できることを示すためだ。
        • 複数オブジェクトの OUTER JOIN 操作が面白い
    • Indexing with .str
      • .str[0] などで対応する Series を得る
    • Extracting substrings
      • .str.extract() 正規表現 expand=False
      • 名前付きキャプチャーを使うと、その名前が列名になる。
      • .str.extractall() の返すオブジェクトは行が MultiIndexDataFrame となる
      • Index にも .extractall() がある
    • Testing for strings that match or contain a pattern
      • .str.contains(), .str.match(), .str.fullmatch()
      • na=False
    • Creating indicator variables
      • .str.get_dummies(); この例では sep を与えなくても同じ結果を返す。
      • Index にも .str.get_dummies() がある。これは MultiIndex を返す。
    • Method summary
      • これまで見てきたメソッドの他にもまだまだ操作が提供されている。