約3800件のアニメ聖地データベースをpythonで統計処理

#概要
- 約3800件のアニメ聖地データベースを作成しました
- 簡単な統計処理をpythonで実行してみます
- データベース(csv)と統計処理スクリプト(python)をgithubで公開しています
 - https://github.com/GoodClues/seichi

#結果

先にどのような結果になるのか示しておきます。

```
★作品毎の聖地登録数ランキング★
1 : 108 たまゆら
2 : 78 アイドルマスター
3 : 61 有頂天家族
4 : 58 ラブライブ
5 : 50 ろんぐらいだぁす！
6 : 50 月がきれい
7 : 49 惡の華
8 : 47 プリキュア
9 : 46 じょしらく
10 : 45 デュラララ!!

★聖地登場回数ランキング★
1 : 20 新宿駅
2 : 13 京都駅
3 : 12 吉祥寺駅
4 : 12 東京駅
5 : 12 札幌市時計台
6 : 11 清水寺
7 : 10 秋葉原駅
8 : 10 井の頭公園
9 : 9 江ノ島駅
10 : 9 名古屋駅

★都道府県別　聖地登録数ランキング★
1 : 1222 東京
2 : 391 神奈川
3 : 249 京都
4 : 222 北海道
5 : 184 埼玉
6 : 152 千葉
7 : 146 静岡
8 : 144 広島
9 : 105 長野
10 : 80 群馬

★語尾１文字　最頻出ランキング★
1 : 673 駅
2 : 396 店
3 : 289 園
4 : 186 橋
5 : 161 社
6 : 148 館
7 : 100 ル
8 : 98 校
9 : 94 場
10 : 90 寺

★語尾２文字　最頻出ランキング★
1 : 259 公園
2 : 138 神社
3 : 57 学校
4 : 40 大橋
5 : 38 本店
6 : 35 高校
7 : 35 ビル
8 : 33 ター
9 : 29 寺駅
10 : 28 空港

★語尾３文字　最頻出ランキング★
1 : 31 ンター
2 : 26 展望台
3 : 23 タワー
4 : 22 駅前店
5 : 21 商店街
6 : 21 新宿駅
7 : 21 ホテル
8 : 20 水浴場
9 : 20 小学校
10 : 19 図書館
```

駅、公園、神社の登場回数が多いようです。
地域別では関東の聖地が半分以上を占めていますね。

#注
- ここで公開するデータは自由に使ってもらって構いませんが、不正確な情報が含まれる可能性があります
- アニメの作品チョイスには偏りがあります
- サンプルコードはpython3系ではprint文でエラーが出ると思います（未確認）

#データベースの構造
例
`1,けいおん,241215,豊郷小学校,滋賀,滋賀県犬上郡豊郷町石畑518,35.203373,136.232871`

###第1カラム：一意のID
- 適当に追加した順なので順番に意味はありません

###第2カラム：アニメの作品名
- シリーズをまとめている作品と分けている作品があります

###第3カラム：アニメ作品名の五十音
- 作品名の先頭3文字分を表す6桁の数値です
- 1文字を2桁の数字で表現します
- 1桁目を子音の番号(1～9)、2桁目を母音の番号(1～5)とします
 - 例：あ→11、に→52、め→74、あにめ→115274
- 「わ行」は「ら行(91～95)」に続けます
 - 例：ん→98
- 別作品と重複する場合は、下1桁を+1または-1します

###第4カラム：聖地名
- 実際に存在する建物名や場所名です

###第5カラム：聖地のある都道府県名
- 「都」「府」「県」は省略しています

###第6カラム：聖地のある住所
- 番地が不明確な場合は付近の番地を記載、または記載なしとします

###第7カラム：聖地のある緯度
- 実際の登場シーンの位置ではないことがあります

###第8カラム：聖地のある経度
- 実際の登場シーンの位置ではないことがあります


#統計処理スクリプト
ここでは以下の統計情報を出力してみます。結果を先に見たほうがわかりやすいかもしれません。
- 作品毎の聖地登録数ランキング
- 聖地登場回数ランキング
- 都道府県別　聖地登録数ランキング
- 語尾１～３文字　最頻出ランキング

```Python:seichi.py
import csv
import collections

### function ###

# word_array: word array
# lank_num: lanking number
def printLanking(word_array, lank_num):
    count_array = collections.Counter(word_array)
    lank = 1
    for t in count_array.most_common(lank_num):
        print lank, ":", t[1], t[0]
        lank = lank + 1

# word_array: word array
# end_num: end number
def createEndWordArray(word_array, end_num):
    end_word = []
    for wa in word_array:
        end_word.append(wa.decode('utf-8')[-end_num:])
    return end_word

### Setup ###

title = []
seichi = []
prefecture = []

# read csv file
csvReader = csv.reader(open('seichi.csv', 'r'), delimiter=',')
for row in csvReader:
    title.append(row[1])
    seichi.append(row[3])
    prefecture.append(row[4])

### Main ###

print "\n--Title Lanking--"
printLanking(title, 10)

print "\n--Seichi Lanking--"
printLanking(seichi, 10)

print "\n--Prefecture Lanking--"
printLanking(prefecture, 10)
    
print "\n--End 1 word Lanking--"
printLanking(createEndWordArray(seichi, 1), 10)

print "\n--End 2 words Lanking--"
printLanking(createEndWordArray(seichi, 2), 10)

print "\n--End 3 words Lanking--"
printLanking(createEndWordArray(seichi, 3), 10)

```



#参考
本データベースは以下のアプリ作成に利用しています。
[Google Play そうだ 聖地、行こう](https://play.google.com/store/apps/details?id=com.goodclues.ssi)

#おわりに
このアニメ聖地データベースは多数のブログ等を参考にさせていただき作成しました。

１件１件グーグルマップで場所を確認しては住所と緯度経度を確かめるという作業を、
途方もない時間（少なくとも１件１分として６３時間！たぶんその数倍）をかけて行いました。
投稿方式にするとか、クロールして収集するみたいな、頭のいい方法は自分には難しかったので諦めました。

作り始めた2013年当時は、いわゆる「聖地巡礼アプリ」というのはほとんど無かったのですが、
今では素晴らしいアプリやWebサービスがたくさん出てるみたいですね。
ということでデータを隠していても意味が無いので、公開してもっと盛り上がってくれれば、と考えた次第です。

本データベースが誰かのお役に立てば幸いです。