Qiita よりも翻訳記事を掲載するのに適した媒体があれば移行するかもしれません。また、このような記事が Qiita の利用規約や法律に抵触する場合は取り下げますのでご指摘いただけると助かります (無知ですみません)。
免責
- 素人の翻訳です。正しさは保証しません。 というかあまり訳す気がなく、ほぼ感想です
- しかも本文の翻訳と私の感想を区別する気があまりありません。どの部分が感想なのかは文脈から汲み取ってください・・・
- 抄訳です。自分が気になった記事だけを抜粋していますのでご注意ください
- 選んだ記事の中でも更に抜粋があります
- 気が乗ったら毎回やりますが負担が大きいのでサボることが多いと思う
PyCoder's Weekly とは
いくつかある Python 関連の週次ニュースレターのひとつ。
公式サイトと購読はこちら:https://pycoders.com/
今週の記事は2018/12/25付、第348号です。
Python Insider: Python 3.7.2 and 3.6.8 are now available
- Python 3.7.2 と 3.6.8 がリリース
Python Pandas: Tricks & Features You May Not Know – Real Python
-
- Pandas の論理演算の扱いを理解しよう
>>> s = pd.Series(range(10))
>>> s % 2 == 0 & s > 3
ValueError: The truth value of a Series is ambiguous.
Use a.empty, a.bool(), a.item(), a.any() or a.all().
これ、よくやってしまいます。端的に言えば &
が ==
よりも演算子として優先度が高いことが原因です。 https://docs.python.org/ja/3/reference/expressions.html#operator-precedence
普段の Python では論理演算に優先度が低めの and
を使うため、NumPy/Pandas チックな論理演算をしようとして &
を使うといつもこのエラーを見ます。ちゃんとカッコをつけましょうという話でした。
>>> (s % 2 == 0) & (s > 3)
0 False
1 False
2 False
3 False
4 True
5 False
6 True
7 False
8 True
9 False
dtype: bool
Why you should be using pathlib - Trey Hunner
-
pathlib
はいいぞという話- やはりまだどうしても
os.path
を使うクセが抜けないが、今後はpathlib
に移行していきたい- あと
pathlib.Path
が (意図的に) 文字列のサブクラスではないから、パスを文字列として期待しているライブラリがまだ沢山あるし今後も沢山生まれるだろうことを考えるとちょっと使いにくいということはある- Python3.6 から
os.path
モジュールがpathlib.Path
オブジェクトを扱えるようになったが、それでも+
でパス文字列を結合しているケースは互換性がないからカバー率はまだまだ低いんじゃない?と思う。横着せずにちゃんとos.path.join
を使っておきなさい💢
- Python3.6 から
- あと
- やはりまだどうしても
- パスを文字列として捉える
os.path
だと、文字列を入力して文字列を出力するような構造になる:
from os.path import abspath, dirname, join as joinpath
BASE_DIR = dirname(dirname(abspath(__file__)))
TEMPLATES_DIR = joinpath(BASE_DIR, 'templates')
- オブジェクト化してメソッドチェーンできる
pathlib
は読みやすくてオサレ:
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIR = BASE_DIR.joinpath('templates')
-
os
モジュールよりもpathlib
モジュールのほうが役割が明確で名前空間が小さくて良いという話- あと
glob
も内包されてるのが良い
- あと
How to update your scikit-learn code for 2018
- Python 2.7 と scikit-learn 0.16 で書いた Introduction to machine learning in Python with scikit-learn を Python 3.6 + scikit-learn 0.19.1 に書き直すにあたってメモした変更点のまとめ
- モデル評価に関連する機能が
model_selection
という新しいモジュールに引っ越した。
Before:
from sklearn.cross_validation import train_test_split
from sklearn.cross_validation import cross_val_score
from sklearn.grid_search import GridSearchCV
from sklearn.grid_search import RandomizedSearchCV
After:
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import RandomizedSearchCV
- Grid/Random search の結果の格納方法の形式が変わった (
grid.grid_scores_
->grid.cv_results_
) - lower is better なスコアリング関数の指定に明示的に
neg_
の接頭辞がつくようになった-
mean_squared_error
->neg_mean_squared_error
、log_loss
->neg_log_loss
など
-
- モデルに 1D データを渡せず、2Dデータのみを受け付けるようになった
- 1D データはサンプルと特徴量の次元が必ずしも自明ではないため
Simple Logging — Simple Logging 0.9.0 documentation
- お手軽 logging ツール
- Python の logging はちゃんと使おうとするまでに道のりが長すぎる気がする。デバッグ用途で使おうとして debug ログレベルをコンソールに吐くまでにどんだけコード書かせる気だ
- あれ覚えててリファレンスなしで設定できる人おるんかな
- しかもすぐに logging 警察飛んできて怖いし
- Python の logging はちゃんと使おうとするまでに道のりが長すぎる気がする。デバッグ用途で使おうとして debug ログレベルをコンソールに吐くまでにどんだけコード書かせる気だ
Anaconda Distribution 2018.12 Released - Anaconda
- Anaconda distribution の命名方法を year.month 方式にした
- Conda はこれまで通り major/minor 方式