Jupyterでイケてるスライドを作成する

メリット

  • reveal.jsなので、今風のHTMLプレゼンが可能
  • コードを実行しながらプレゼンができるので、とても良い

デモ

ファイルを読み込む

In [2]:
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.cm as cm
df = pd.read_csv("japan.csv", encoding="shift-jis",index_col="prefecture")
df.head()
Out[2]:
No latitude longtitude altitude latitude_capital longtitude_capital
prefecture
山梨県 1 138:36:31 35:36:56 3776m 138:34:06 35:39:50
静岡県 2 138:19:37 35:01:13 3776m 138:22:59 34:58:37
長野県 3 138:02:27 36:07:59 3190m 138:10:52 36:39:05
岐阜県 4 137:03:07 35:46:50 3190m 136:43:20 35:23:28
富山県 5 137:15:54 36:38:21 3015m 137:12:41 36:41:43

列の追加とapply

緯度経度を数値にする。まずは関数calc_num()を用意

In [3]:
def calc_number(d_num):
    d = d_num.split(":")
    n = int(d[0])+float(d[1])/60+float(d[2])/3600
    return n
df["latitude_num"]=df.latitude.apply(calc_number)
df["longtitude_num"]=df.longtitude.apply(calc_number)
# 経度135度より大きい場所の県名を出力
print(df[df["latitude_num"]>135].index)
Index(['山梨県', '静岡県', '長野県', '岐阜県', '富山県', '新潟県', '石川県', '栃木県', '群馬県', '埼玉県',
       '福島県', '北海道', '山形県', '福井県', '岩手県', '東京都', '奈良県', '宮城県', '秋田県', '三重県',
       '神奈川県', '青森県', '愛知県', '和歌山県', '滋賀県', '大阪府', '茨城県', '京都府', '千葉県'],
      dtype='object', name='prefecture')

グラフに出力

都道府県の重心データをグラフにしてみる

In [4]:
longtitude_mean = df["longtitude_num"].mean()
latitude_mean = df["latitude_num"].mean()
plt.figure(figsize=(5,5))
for key, row in df.loc[:,["longtitude_num","latitude_num"]].iterrows():
    plt.scatter(row["latitude_num"],row["longtitude_num"],marker="x",color="blue")
plt.scatter(latitude_mean,longtitude_mean,marker="s",s=30,color="red")
print("latitude;{:.5f}, longtitude_mean:{:.5f}".format(latitude_mean, longtitude_mean))
latitude;136.00638, longtitude_mean:35.33657

沖縄/北海道がないバージョン

沖縄と北海道は結構離れているので、ちょっと除外してみる

In [5]:
df = df[(df.index!="沖縄県")&(df.index!="北海道")]
longtitude_mean = df["longtitude_num"].mean()
latitude_mean = df["latitude_num"].mean()
plt.figure(figsize=(5,5))
for key, row in df.loc[:,["longtitude_num","latitude_num"]].iterrows():
    plt.scatter(row["latitude_num"],row["longtitude_num"],
                marker="x",color="blue")
plt.scatter(latitude_mean,longtitude_mean,marker="s",s=30,color="red")
print("latitude;{:.5f}, longtitude_mean:{:.5f}".format(latitude_mean, longtitude_mean))
latitude;136.06306, longtitude_mean:35.36831

Fin

みなさんもお試しください!