環境によっては、フォントをキャッシュファイルが存在する場合があり、前もって削除し、Jupyter Notebookの再起動
$ rm ~/.matplotlib/fontList.py3k.cache
または
$ rm ~/.cache/matplotlib
以下を実行することで、キャッシュディレクトリの確認ができます。
from matplotlib import get_cachedir
get_cachedir()
https://github.com/adobe-fonts/source-han-code-jp/releases/tag/2.000R
今回は、Adobe社がオープンソースで提供しているフォントを使用しましす。
以下でフォントを読み込む方法もある。
from matplotlib import font_manager
font = font_manager.FontProperties(fname='/Users/terada/Library/Fonts/SourceHanCodeJP-Regular.otf', size=14)
In [1]:
%matplotlib inline
グラフをNotebook内に表示するためのコマンド
In [2]:
import numpy as np
import pandas as pd
In [3]:
from matplotlib import rcParams
matplotlib の初期設定を行うためにインポート
In [4]:
rcParams['font.sans-serif'] = "Source Han Code JP"
rcParams['font.weight'] = "regular"
rcParams['axes.titlesize'] = 15
rcParams['ytick.labelsize'] = 12
rcParams['xtick.labelsize'] = 12
フォントを先程ダウンロードしたAdobe社提供の物を設定しています。
ここまでで、設定が完了します。
In [5]:
df = pd.DataFrame({'あ': [1, 2, 3], 'い': [1.5, 2.0, 2.5]})
In [6]:
df
Out[6]:
In [7]:
df.plot(title="サンプルのデータ", marker="x")
Out[7]:
pandasのデータを直接グラフ化した。
In [8]:
!ls
In [9]:
df_influ = pd.read_pickle("df_influ.db")
In [10]:
df_influ.head()
Out[10]:
In [11]:
df_influ.tail()
Out[11]:
In [12]:
df_influ.dtypes
Out[12]:
In [13]:
df_influ['報告数'].hist(bins=20)
Out[13]:
In [14]:
df_influ['報告数'].plot()
Out[14]:
In [15]:
df_influ['報告数'].max()
Out[15]:
In [16]:
df_influ.describe()
Out[16]:
In [17]:
len(df_influ[df_influ['報告数'] > 10.])
Out[17]:
In [18]:
df_influ["流行"] = df_influ['報告数'].apply(lambda x: 1 if x > 10. else 0)
報告数が10を超えたら、流行と定めました。
In [19]:
df_influ['増加'] = df_influ['報告数'].diff(periods=1) > 5
報告数が1週前より、5より大きく増えている時を、増加と定めました。
In [20]:
df_influ.shape
Out[20]:
In [21]:
df_influ.head()
Out[21]:
In [22]:
len(df_influ[df_influ['増加']==True])
Out[22]:
In [23]:
df_influ.plot(subplots=True)
Out[23]:
In [24]:
df_influ[["流行", "増加" ]].plot()
Out[24]:
In [25]:
df_influ.describe()
Out[25]:
In [26]:
df_influ.to_pickle("df_influ2.db")
In [27]:
df_weather = pd.read_pickle("df_weather.db")
In [28]:
df = pd.concat([df_influ, df_weather], axis=1)
In [29]:
df.head()
Out[29]:
In [30]:
df["報告数"] = df["報告数"].fillna(method='ffill').astype(np.float32)
In [31]:
df[["流行", "増加"]] = df[["流行", "増加"]].fillna(method='ffill').astype(np.int32)
In [32]:
df.head(20)
Out[32]:
In [33]:
df.tail()
Out[33]:
In [34]:
df = df.loc["2014-01-01":"2016-12-31", :]
In [35]:
df.shape
Out[35]:
In [36]:
df.head()
Out[36]:
In [37]:
df.tail()
Out[37]:
In [38]:
df.describe()
Out[38]:
In [39]:
df.corr()
Out[39]:
In [40]:
from pandas.plotting import scatter_matrix
In [41]:
_ = scatter_matrix(df, figsize=(15, 15))
In [42]:
_ = scatter_matrix(df[["報告数", "増加", "平均気温(℃)", "最高気温(℃)","平均湿度(%)"]], figsize=(10, 10))
In [43]:
df[["報告数", "増加", "平均気温(℃)", "最高気温(℃)","平均湿度(%)"]].corr()
Out[43]:
In [44]:
df.to_pickle("df.db")
In [ ]: