Open3
Pandas
pyenvで構築したAnaconda環境でPandasのPlotを日本語化
PandasのPlotでデータの可視化をしていました。データのラベルを日本語にすると文字化けしていたので、以下の方法で解決しました。
IPAゴシックのTTFファイルをダウンロードして、以下のコマンドでコピーします。
$ cp ipaexg.ttf /Users/username/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
フォントのキャッシュファイルを削除します。
$ rm .matplotlib/fontlist-v310.json
Pyhtonでは以下のようにフォントを指定します。
from matplotlib import pylab as plt
plt.rcParams['font.family'] = 'IPAexGothic'
これで文字化けしないで画像が出力されるようになりました。
Pandasでデータをビン分割して集計
データを一定の条件で分割して集計する処理があります。これまで私はTableauではそういった集計をしていましたが、Pandasでもきっとできるだろうと思って調べて使いました。
df['bin'] = pd.cut(df['value'], list(range(0, 30, 3)))
binには(15, 18]のような値が入ります。この場合は15より大きく18以下の条件という意味になります。
binでグループ化して集計します。
df.groupby('bin').mean()
2つの偏差値の計算方式とPandasでの実装
データの偏差値を計算することがあり、その際に標準偏差の考え方について以下のポイントを反映しました。
- 「母集団の一部」のデータに対しては、不偏標準偏差であるSTDEV
- 「母集団全体」のデータに対しては、標準偏差であるSTDEVP
これをPandasの計算にも反映させます。
# 計算対象が母集団の一部
df['偏差値'] = (df['value'] - df['value'].mean()) /
df['value'].std() * 10 + 50
# 計算対象が母集団の全部
df['偏差値'] = (df['value'] - df['value'].mean()) /
df['value'].std(ddof=0) * 10 + 50