%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()
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 |
緯度経度を数値にする。まずは関数calc_num()
を用意
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')
都道府県の重心データをグラフにしてみる
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
沖縄と北海道は結構離れているので、ちょっと除外してみる
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
みなさんもお試しください!