a_sue’s diary

a_sue の日記 はてなブログ版

Bunkamura のくまのプーさん展を見に行った & パルコのアキラ・ウォールアート

かみさんがチケットをもらって、いつ行こうかと言ってたくまのプーさん展、平日動ける日があったので行って来た。

https://www.bunkamura.co.jp/museum/exhibition/19_pooh/

wp2019.jp

現地着15時ちょっと前。
さすがに平日の午後は空いてる。
こんな写真が撮れるほどに。

f:id:a_sue:20190306145757j:plain
入ってすぐの撮影可スペース
f:id:a_sue:20190306151321j:plain
次の撮影可エリアの入り口(これをくぐるわけではない)
f:id:a_sue:20190306152141j:plain
立体の橋と、投影の川

くまのプーさんって、実はちゃんと読んだことがなくて、ディズニーのアニメもあまり見た記憶がない。
展示は、プーさんが書かれたいきさつとか、イラストとの相乗効果とか。
クリストファー・ロビン萩尾望都が描く少年みたいだったり。多分逆だが。
最初に掲載されたものから本になって、手を替え品を替えロングセラーになっていくのね。
日本では石井桃子さん訳で岩波書店から。読んでないんだよ。

一回りして1時間弱。
途中のソファに置いてあって中をチェックした図録をショップで買う。2,700円+税。

Bunkamuraを出て、明治神宮方面に向かって渋谷のやや高いところを横方向に移動していると、そこにあった。

f:id:a_sue:20190306160806j:plain

おー、これが噂に聞いたアキラ・ウォールアート。

ぐるっと工事中の周囲を取り巻いているフェンスにアキラの絵。

f:id:a_sue:20190306160906j:plainf:id:a_sue:20190306160926j:plainf:id:a_sue:20190306160937j:plainf:id:a_sue:20190306160944j:plainf:id:a_sue:20190306161005j:plainf:id:a_sue:20190306161052j:plain

結構沢山あるのね。
ちゃんとした場所を調べてなかったんだけど、偶然の出会いに感謝。

Anaconda で lifelines をインストールできない場合

Jupyter Notebook でポチポチ入力しながら読んでる続き。

a-sue.hatenablog.com

13章で lifelines ライブラリを使ってる。
ソースのコメントで

# pip install lifelines

と書いてあって、実際ライブラリが見つからないエラーが出る。

import pandas as pd
from lifelines import KaplanMeierFitter
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-26-83ad2ac062b6> in <module>()
      1 import pandas as pd
----> 2 from lifelines import KaplanMeierFitter

ModuleNotFoundError: No module named 'lifelines'

いつものパターンね、といつもの通りにやると、、、

C:\WINDOWS\system32>conda install --prefix "C:\Program Files\Anaconda3" lifelines
Collecting package metadata: done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - lifelines

Current channels:

  - https://conda.anaconda.org/anaconda-fusion/win-64
  - https://conda.anaconda.org/anaconda-fusion/noarch
  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/free/win-64
  - https://repo.anaconda.com/pkgs/free/noarch
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/r/noarch
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://repo.anaconda.com/pkgs/msys2/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.



C:\WINDOWS\system32>

あら?

というわけで、conda lifelinesググるとここがヒット

anaconda.org

なるほど、こうするのね

conda install -c conda-forge --prefix "C:\Program Files\Anaconda3" lifelines

C:\WINDOWS\system32>conda install -c conda-forge  --prefix "C:\Program Files\Anaconda3" lifelines
Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: C:\Program Files\Anaconda3

  added / updated specs:
    - lifelines


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    autograd-1.2               |             py_1          33 KB  conda-forge
    ca-certificates-2018.11.29 |       ha4d7672_0         179 KB  conda-forge
    certifi-2018.11.29         |        py36_1000         145 KB  conda-forge
    conda-4.6.7                |           py36_0         891 KB  conda-forge
    future-0.17.1              |        py36_1000         697 KB  conda-forge
    lifelines-0.19.4           |             py_0         199 KB  conda-forge
    openssl-1.1.1b             |       hfa6e2cd_0         4.7 MB  conda-forge
    ------------------------------------------------------------
                                           Total:         6.8 MB

The following NEW packages will be INSTALLED:

  autograd           conda-forge/noarch::autograd-1.2-py_1
  future             conda-forge/win-64::future-0.17.1-py36_1000
  lifelines          conda-forge/noarch::lifelines-0.19.4-py_0

The following packages will be UPDATED:

  certifi              pkgs/main::certifi-2018.11.29-py36_0 --> conda-forge::certifi-2018.11.29-py36_1000

The following packages will be SUPERSEDED by a higher-priority channel:

  ca-certificates    pkgs/main::ca-certificates-2019.1.23-0 --> conda-forge::ca-certificates-2018.11.29-ha4d7672_0
  conda                                           pkgs/main --> conda-forge
  openssl              pkgs/main::openssl-1.1.1b-he774522_0 --> conda-forge::openssl-1.1.1b-hfa6e2cd_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
conda-4.6.7          | 891 KB    | ############################################################################ | 100%
openssl-1.1.1b       | 4.7 MB    | ############################################################################ | 100%
autograd-1.2         | 33 KB     | ############################################################################ | 100%
ca-certificates-2018 | 179 KB    | ############################################################################ | 100%
certifi-2018.11.29   | 145 KB    | ############################################################################ | 100%
lifelines-0.19.4     | 199 KB    | ############################################################################ | 100%
future-0.17.1        | 697 KB    | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

C:\WINDOWS\system32>

よし、これで行けた。

Jupyter Notebook のフォントを源ノ角ゴシック Code JP R にしてしあわせ

老眼で小さな文字が見づらくて、ソースの ","(カンマ) と "."(ピリオド) が見分けられなくてエラーになるケースが頻発。
もっと区別しやすいフォントにすればいいじゃん、と今頃気付いて、Jupyter Notebook のフォントを変える方法を調べようとしたが、ブラウザでやってるんだからブラウザの設定を変更すれば良かったのだった。

変更すべきは固定幅フォント。

f:id:a_sue:20190304170535p:plain これはもう変更後。デフォルトで何になってたか覚えてません。

で、「源ノ角ゴシック Code JP」の仲間が沢山あるなかで、無難そうな「R」(Regular?)を選択。 f:id:a_sue:20190304170517p:plain

効果はてきめんで、カンマとピリオドがはっきり区別できるし、気持ち悪かった上に貼り付いた"~"(チルダ) も真ん中に表示されるようになった。

f:id:a_sue:20190304171532p:plain
常用よりだいぶ拡大。カンマとピリオドがまるで別物になる。
めでたしめでたし。

statsmodels.formula.api.ols の formula で AssertionError: になる場合

Jupyter Notebook でポチポチ入力しながら読んでる続き。

a-sue.hatenablog.com

前回のはその後 anaconda の updateを何度か繰り返してたらコンプリートした。

a-sue.hatenablog.com

C:\WINDOWS\system32>conda update --prefix "C:\Program Files\Anaconda3" anaconda
Collecting package metadata: done
Solving environment: done

# All requested packages already installed.


C:\WINDOWS\system32>

ここからが本題。

第12章で statsmodels.formula.api を使うのだけど、謎のエラーが出る。

model = smf.ols(formula='tip ~ total_bill', data=tips)
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-6-a9177a705d62> in <module>()
----> 1 model = smf.ols(formula='tip ~ total_bill', data=tips)

C:\Program Files\Anaconda3\lib\site-packages\statsmodels\base\model.py in from_formula(cls, formula, data, subset, *args, **kwargs)
    145         (endog, exog), missing_idx = handle_formula_data(data, None, formula,
    146                                                          depth=eval_env,
--> 147                                                          missing=missing)
    148         kwargs.update({'missing_idx': missing_idx,
    149                        'missing': missing})

C:\Program Files\Anaconda3\lib\site-packages\statsmodels\formula\formulatools.py in handle_formula_data(Y, X, formula, depth, missing)
     63         if data_util._is_using_pandas(Y, None):
     64             result = dmatrices(formula, Y, depth, return_type='dataframe',
---> 65                                NA_action=na_action)
     66         else:
     67             result = dmatrices(formula, Y, depth, return_type='dataframe',

C:\Program Files\Anaconda3\lib\site-packages\patsy\highlevel.py in dmatrices(formula_like, data, eval_env, NA_action, return_type)
    308     eval_env = EvalEnvironment.capture(eval_env, reference=1)
    309     (lhs, rhs) = _do_highlevel_design(formula_like, data, eval_env,
--> 310                                       NA_action, return_type)
    311     if lhs.shape[1] == 0:
    312         raise PatsyError("model is missing required outcome variables")

C:\Program Files\Anaconda3\lib\site-packages\patsy\highlevel.py in _do_highlevel_design(formula_like, data, eval_env, NA_action, return_type)
    163         return iter([data])
    164     design_infos = _try_incr_builders(formula_like, data_iter_maker, eval_env,
--> 165                                       NA_action)
    166     if design_infos is not None:
    167         return build_design_matrices(design_infos, data,

C:\Program Files\Anaconda3\lib\site-packages\patsy\highlevel.py in _try_incr_builders(formula_like, data_iter_maker, eval_env, NA_action)
     60                 "ascii-only, or else upgrade to Python 3.")
     61     if isinstance(formula_like, str):
---> 62         formula_like = ModelDesc.from_formula(formula_like)
     63         # fallthrough
     64     if isinstance(formula_like, ModelDesc):

C:\Program Files\Anaconda3\lib\site-packages\patsy\desc.py in from_formula(cls, tree_or_string)
    162             tree = tree_or_string
    163         else:
--> 164             tree = parse_formula(tree_or_string)
    165         value = Evaluator().eval(tree, require_evalexpr=False)
    166         assert isinstance(value, cls)

C:\Program Files\Anaconda3\lib\site-packages\patsy\parse_formula.py in parse_formula(code, extra_operators)
    146     tree = infix_parse(_tokenize_formula(code, operator_strings),
    147                        operators,
--> 148                        _atomic_token_types)
    149     if not isinstance(tree, ParseNode) or tree.type != "~":
    150         tree = ParseNode("~", None, [tree], tree.origin)

C:\Program Files\Anaconda3\lib\site-packages\patsy\infix_parser.py in infix_parse(tokens, operators, atomic_types, trace)
    208 
    209     want_noun = True
--> 210     for token in token_source:
    211         if c.trace:
    212             print("Reading next token (want_noun=%r)" % (want_noun,))

C:\Program Files\Anaconda3\lib\site-packages\patsy\parse_formula.py in _tokenize_formula(code, operator_strings)
     92         else:
     93             it.push_back((pytype, token_string, origin))
---> 94             yield _read_python_expr(it, end_tokens)
     95 
     96 def test__tokenize_formula():

C:\Program Files\Anaconda3\lib\site-packages\patsy\parse_formula.py in _read_python_expr(it, end_tokens)
     42     origins = []
     43     bracket_level = 0
---> 44     for pytype, token_string, origin in it:
     45         assert bracket_level >= 0
     46         if bracket_level == 0 and token_string in end_tokens:

C:\Program Files\Anaconda3\lib\site-packages\patsy\util.py in next(self)
    319         else:
    320             # May raise StopIteration
--> 321             return six.advance_iterator(self._it)
    322     __next__ = next
    323 

C:\Program Files\Anaconda3\lib\site-packages\patsy\tokens.py in python_tokenize(code)
     33                 break
     34             origin = Origin(code, start, end)
---> 35             assert pytype not in (tokenize.NL, tokenize.NEWLINE)
     36             if pytype == tokenize.ERRORTOKEN:
     37                 raise PatsyError("error tokenizing input "

AssertionError: 

最初に疑ったのチルダ
自分が入力してる画面に表示されるのと、テキストのが一致しないし、ウェブでは "~" が "?" になってたりするのがよくあるから。
そのへんのキーワードでググってみても見つからない。

最後の何も語らない AssertionError: がいやらしいなぁと思って

statsmodels python ols formula AssertionError

でググってみたらヒットしたのがここ

github.com

Python のバージョンは違うけど、出てるスタックトレースが全く同じ。

これか!ってことでチェックすると

import patsy
patsy.__version__
'0.4.1'

ビンゴ?

おなじみの手順で

C:\WINDOWS\system32>conda update --prefix "C:\Program Files\Anaconda3" patsy
Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: C:\Program Files\Anaconda3

  added / updated specs:
    - patsy


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    patsy-0.5.1                |           py36_0         380 KB
    ------------------------------------------------------------
                                           Total:         380 KB

The following packages will be UPDATED:

  patsy                       pkgs/free::patsy-0.4.1-py36_0 --> pkgs/main::patsy-0.5.1-py36_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
patsy-0.5.1          | 380 KB    | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

C:\WINDOWS\system32>

よし、これで行けた。

と思ったがリロードしても変わらない。

import importlib
importlib.reload(patsy)
patsy.__version__
'0.4.1'

こいつも更新したが変わらない。

C:\WINDOWS\system32>conda update --prefix "C:\Program Files\Anaconda3" statsmodels
Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: C:\Program Files\Anaconda3

  added / updated specs:
    - statsmodels


The following packages will be UPDATED:

  statsmodels        pkgs/free::statsmodels-0.6.1-np111py3~ --> pkgs/main::statsmodels-0.9.0-py36h452e1ab_0


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

C:\WINDOWS\system32>

ってか、上の方でやって anaconda が取り込んでるモジュールはすべてアップグレードされてたんじゃないの?

結局 Jupyter を再起動したら更新されたモジュールが読み込まれました。

import patsy
patsy.__version__
'0.5.1'

問題の文でもエラーが出なくなってめでたしめでたし。

model = smf.ols(formula='tip ~ total_bill', data=tips)

Anaconda でパッケージが見当たらないと言われた時

Jupyter Notebook でポチポチ入力しながら読んでます。

a-sue.hatenablog.com

第11章で pandas_datareader を使うのだけど、見つからないエラーが出る。

ModuleNotFoundError: No module named 'pandas_datareader'

使ってるAnaconda環境に入ってなかった。
regexの時は素直に追加した。

C:\WINDOWS\system32>conda install regex
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Program Files\Anaconda3:

The following NEW packages will be INSTALLED:

    regex: 2017.4.5-py36_0
    vc:    14-0

The following packages will be UPDATED:

    conda: 4.3.8-py36_0    --> 4.3.30-py36h7e176b0_0

Proceed ([y]/n)? y

vc-14-0.tar.bz 100% |###############################| Time: 0:00:00   0.00  B/s
regex-2017.4.5 100% |###############################| Time: 0:00:00 452.50 kB/s
conda-4.3.30-p 100% |###############################| Time: 0:00:00 619.88 kB/s

今後もありそうなのでまとめてアップデート/アップグレードしようとしたらなんか間抜けなことに。

C:\WINDOWS\system32>conda update

CondaValueError: no package names supplied
# If you want to update to a newer version of Anaconda, type:
#
# $ conda update --prefix C:\Program Files\Anaconda3 anaconda



C:\WINDOWS\system32>conda upgrade

CondaValueError: no package names supplied
# If you want to update to a newer version of Anaconda, type:
#
# $ conda update --prefix C:\Program Files\Anaconda3 anaconda



C:\WINDOWS\system32>conda update --prefix C:\Program Files\Anaconda3 anaconda

PackageNotInstalledError: Package is not installed in prefix.
  prefix: C:\Program
  package name: Files\Anaconda3

あいかわらずスペースを含むパスが悪さをする。
""でくくってやっと通る。

C:\WINDOWS\system32>conda update --prefix "C:\Program Files\Anaconda3" anaconda
Fetching package metadata ...............
Solving package specifications: .

Package plan for installation in environment C:\Program Files\Anaconda3:

The following NEW packages will be INSTALLED:

    anaconda-project:                   0.8.2-py36_0

ちなみにこれで判明した関連パッケージのバージョンは以下の通り

    numba:                              0.30.1-np111py36_0    --> 0.39.0-py36h830ac7b_0
    numpy:                              1.11.3-py36_0         --> 1.15.1-py36ha559c80_0
    pandas:                             0.19.2-np111py36_1    --> 0.23.4-py36h830ac7b_0
    python:                             3.6.0-0               --> 3.6.6-hea74fb7_0
    scipy:                              0.18.1-np111py36_1    --> 1.1.0-py36h4f6bf74_1

Jupyter Notebook を立ち上げたままやってたら、エラーになった

anaconda-5.3.0 100% |###############################| Time: 0:00:00  94.93 kB/s
ERROR conda.core.link:_execute_actions(337): An error occurred while uninstalling package 'defaults::matplotlib-2.0.0-np111py36_0'.
PermissionError(13, 'プロセスはファイルにアクセスできません。別のプロセスが使用中です。')
Attempting to roll back.


PermissionError(13, 'プロセスはファイルにアクセスできません。別のプロセスが使用中です。')



C:\WINDOWS\system32>

あらま。
ってことで Jupyter Notebook を落としてから再実行

C:\WINDOWS\system32>conda update --prefix "C:\Program Files\Anaconda3" anaconda
Fetching package metadata ...............
Solving package specifications: .

Package plan for installation in environment C:\Program Files\Anaconda3:

The following NEW packages will be INSTALLED:

    anaconda-project:                   0.8.2-py36_0
(中略)
Proceed ([y]/n)? y

ERROR conda.core.link:_execute_actions(337): An error occurred while installing package 'defaults::qt-5.9.6-vc14h1e9a669_2'.
ImportError("cannot import name 'universaldetector'",)
Attempting to roll back.


ImportError("cannot import name 'universaldetector'",)

なんかわけわからない物でエラーになってる。
素直に単体でインストール

C:\WINDOWS\system32>conda install --prefix "C:\Program Files\Anaconda3" pandas-datareader
Fetching package metadata ...............
Solving package specifications: .

Package plan for installation in environment C:\Program Files\Anaconda3:

The following NEW packages will be INSTALLED:

    blas:              1.0-mkl
    certifi:           2018.11.29-py36_0
    pandas-datareader: 0.7.0-py36_0
    pysocks:           1.6.8-py36_0
    urllib3:           1.24.1-py36_0
    win_inet_pton:     1.1.0-py36_0
    wincertstore:      0.2-py36h7fe50ca_0

The following packages will be UPDATED:

    chardet:           2.3.0-py36_0          --> 3.0.4-py36_1
    conda:             4.3.30-py36h7e176b0_0 --> 4.6.7-py36_0
    conda-env:         2.6.0-0               --> 2.6.0-1
    idna:              2.2-py36_0            --> 2.8-py36_0
    menuinst:          1.4.4-py36_0          --> 1.4.14-py36hfa6e2cd_0
    pycosat:           0.6.1-py36_1          --> 0.6.3-py36hfa6e2cd_0
    requests:          2.12.4-py36_0         --> 2.21.0-py36_0
    setuptools:        27.2.0-py36_1         --> 40.8.0-py36_0

Proceed ([y]/n)? y

certifi-2018.1 100% |###############################| Time: 0:00:00 675.82 kB/s
idna-2.8-py36_ 100% |###############################| Time: 0:00:00   1.05 MB/s
win_inet_pton- 100% |###############################| Time: 0:00:00   4.65 MB/s
setuptools-40. 100% |###############################| Time: 0:00:01 420.91 kB/s
urllib3-1.24.1 100% |###############################| Time: 0:00:00 379.02 kB/s
requests-2.21. 100% |###############################| Time: 0:00:00 801.76 kB/s
pandas-datarea 100% |###############################| Time: 0:00:00 830.97 kB/s

C:\WINDOWS\system32>

ずいぶん遠回りしてしまった。

『望月三起也 MAD DOG(マッド・ドッグ) 完全版(下)』 望月三起也 宙出版

巻末に詳細な掲載リストが載っている
下巻は1970年2号~1970年18号掲載分。
最後に収録されている「MAD DOG RETURNED」について、増刊に掲載されたとしか書いてなくて、画竜点睛を欠く。
ハードボイルドアクションに、ちょっとお調子者名雰囲気もあって、『飛葉』をちょっと思い出しちゃった。
そうかと思うと「こち亀」の両さんに思えたり。なかなか楽しい。
番外編の「MAD DOG RETURNED」は10年後に描かれたそうだけど、引退して堅気になっていたのが現場復帰するという展開がストレートに良かった。
ところで、P.279とP.280が入れ替わってるようだよ。

ビッグコミック以降のアダルト雑誌では主に超絶コメディを描いていた望月三起也のハードボイルドアクション完全版全3巻、堪能しました。

望月三起也 MAD DOG 完全版(下)

望月三起也 MAD DOG 完全版(下)

Jupyter Notebook を起動できない問題は環境変数 HOME の不在

こないだ買った pandas本
a-sue.hatenablog.com
コマンドプロンプトpython を起動してポチポチ打ち込みながら読み始めたのだけど、せっかくなので Jupyter Notebook でやるかと思って起動しようとしたが、何度やっても起動できない。
以前は起動できたと思うんだけど、その後Anacondaを入れ直したりしてるので環境が変わったか。

ググると同じ現象の解決法があった。
publicjournal.hatenablog.com

環境変数 %HOME% が定義されてない?
コマンドプロンプト

echo %HOME%

を試すと %HOME% がそのまま表示される。
なるほど、環境変数 %HOME% を参照してるのに定義されてないのが問題か。
ここに書いてあるとおり %HOME% を削除すると無事 Jupyter Notebook が起動した。
ここまでは良かったが、ルートが Documents になってて同階層に作ってる work が出てこない。

HOMEという環境変数は、Unix系OSでユーザのホームディレクトリを持っている。
Windowsにはないんだっけ?と思って、同じくコマンドプロンプト

set

してみたら HOME は見あたらず、同じものを持っている環境変数が USERPROFILE。
なのでこれを使って環境変数に追加する。

f:id:a_sue:20190224111128p:plain
設定から「環境変数」で検索する
f:id:a_sue:20190224111331p:plain
HOME に %USERPROFILE% を設定する
これを保存したあと Jupyter Notebook を再起動したらホームディレクトリがルートになって、 work が見えるようになった。
今後 %HOME% を参照するアプリがあった場合にも対応できる。