【問題】第23回梅雨でモワッとしたシェル芸勉強会

Pocket
LINEで送る

解答はこちら

問題で使うファイル等

GitHubにあります。ファイルは

https://github.com/ryuichiueda/ShellGeiData/tree/master/vol.23

にあります。

クローンは以下のようにお願いします。

$ git clone https://github.com/ryuichiueda/ShellGeiData.git

環境

今回はUbuntu Linuxで解答例を作りましたので、BSD系、Macな方は以下の表をご参考に・・・。

Mac,BSD系 Linux
gdate date
gsed sed
tail -r tac
gtr tr
gfold fold

イントロ

スライド

Q1

まず、次のように、気象庁の毎月の台風の上陸数に関するデータをダウンロードし、landing.csvというファイルに保存してください。UTF-8に見えてもExcelから作ったCSVはBOM付きだったりするので、ネットから入手したデータは最初にnkfに通す癖を。

$ $ curl http://www.data.jma.go.jp/fcd/yoho/typhoon/statistics/landing/landing.csv |
 nkf -wLux > landing.csv

次にこのデータを、以下のようなデータ(ファイル名: monthly_typhoon)に変換してください。第1フィールドが年月、第2フィールドが台風の上陸頻度です。

$ head monthly_typhoon 
195101 0
195102 0
195103 0
195104 0
195105 0
195106 0
195107 1
195108 0
195109 0
195110 1
$ tail monthly_typhoon 
201503 0
201504 0
201505 0
201506 0
201507 2
201508 1
201509 1
201510 0
201511 0
201512 0

Q2

monthly_typhoonから年ごとの台風の上陸頻度を集計し、元のlanding.csvの最後のフィールドに描いてある上陸頻度と比較してデータに間違いがなさそうなことを確認してください。

Q3

これまでの統計について、各月に台風が上陸した率を求めましょう。

Q4

各年で最初に台風が上陸した月を抽出し、何月が何回だったか集計してください。

Q5

台風が上陸しなかった年を抽出してください。

Q6

まず、大阪市のページから、「平成27年 大阪市の犯罪発生情報 ひったくり」のデータを次のようにダウンロードして整形してください。なお、大阪を選んだ理由は2016年6月現在、ちゃんとテキストでこのようなデータを提供している大都市が他に見つからないからであり、他の意図があるわけではありません。また、なぜか女性の被害者のデータしかないのですが、気にしないことにします。

$ curl http://www.city.osaka.lg.jp/shimin/cmsfiles/contents/0000298/298810/006hittakuri2015.csv |
 nkf -wLux | tr , ' ' | tail -n +2 > hittakuri
$ head -n 5 hittakuri 
大阪市北区 曾根崎 1丁目付近 窃盗 既遂 ひったくり 自動二輪 2015年 1月 24日 2時頃 女性 20代
大阪市北区 兎我野町 付近 窃盗 既遂 ひったくり 自動二輪 2015年 2月 11日 20時頃 女性 20代
大阪市北区 曾根崎 2丁目付近 窃盗 既遂 ひったくり 自動二輪 2015年 4月 13日 3時頃 女性 20代
大阪市北区 曾根崎 2丁目付近 窃盗 既遂 ひったくり 自動二輪 2015年 4月 13日 2時頃 女性 40代
大阪市北区 角田町 付近 窃盗 既遂 ひったくり 自動二輪 2015年 4月 7日 3時頃 女性 20代

データは、大阪市からクリエイティブコモンズライセンスCC-BYで提供されているものです。

このデータについて、各区で何件ずつレコードがあるか確認してください。

Q7

リポジトリのvol.23/OSAKAディレクトリに、各区の人口データ「population_h27sep」が入っています。このデータを使い、各区の人口当たりのひったくり件数のランキングを作ってください。

Q8

同一住所で同日に2件以上ひったくりが起こった場合について、その住所と日付を出力してください。

Q9

ひったくりの手段とその成功率を求めてください。ただし、通報が行われなかった事件はなかったと仮定します。

Pocket
LINEで送る