« movie plusで「バック・トゥー・ザ・フューチャー」シリーズを上映している件 | トップページ | またまたまたまた中国に行きます »

2009.08.20

gawkによるエネルギー関連データ処理【その1】

家庭部門のエネルギー消費量を推計するためには、統計局による家計調査と小売物価統計調査の結果(統計表)を利用すればよい。

どういうことかというと、例えば、東京の平均的な家庭(二人以上世帯)の12月の灯油消費量を求めようとすれば、


  1. 東京の二人以上世帯の12月の灯油代を家計調査データから抽出し、
  2. 東京の12月の灯油単価を小売物価統計調査データから抽出し、
  3. 灯油代を灯油単価で割れば、

良いわけである。

問題は家計調査や小売物価統計調査の統計表から必要なデータを抽出することである。統計表には、こちらにとっては不要なデータが沢山乗っているので、それらをどける必要がある。

ということでgawk(awkのGNU版)を使って必要データの抽出を行うこととする。

今回は小売物価統計調査の統計表、「調査品目の月別価格及び年平均価格【県庁所在市及び人口15万以上の市】」から県庁所在都市&政令指定都市の月別エネルギー価格を抽出してみる。

<事前準備>
まず、統計局から2001年の統計表「調査品目の月別価格及び年平均価格【県庁所在市及び人口15万以上の市】」「3181火災保険料」~「3701灯油」(エクセル)をダウンロードする。

開いてみるとこんな感じ:
Priceexcel

このままだと処理できないのでタブ区切りテキストファイル"2001.txt"として保存しなおす。エクセルで改めて開くと、こんな感じである:
Pricetab

この"2001.txt"から全国49の県庁所在都市&政令指定都市の電気、都市ガス、プロパンガス、灯油の料金を抽出することにする。

<gawkによるデータ抽出>
"2001.txt"には火災保険料のデータや県庁所在都市&政令指定都市以外の都市のデータなど、目的外のデータが含まれているので、gawkを使ってそれらを取り除き、電気、都市ガス、プロパンガス、灯油の料金に関するデータを取り出すことにする。

その一方で、データに含まれている「a)最低料金制,15kWh」などという脚注は重要な情報なので、これは取り出すことにする。

という目論見の下、適当に作ってみたのが以下のawkプログラム


BEGIN  {
    FS = "\t"
    OFS = ","
    itemonoff = 0    #電気、都市ガス、プロパンガス、灯油に関するデータを出力する場合は1
    footonoff = 0    #脚注を出力する場合は1
    items = "電|ガ|灯"    #電気、都市ガス、プロパンガス、灯油という品目を捕まえるため
    cities = "札幌|青森|盛岡|仙台|秋田|山形|福島|水戸|宇都宮|前橋|浦和|さいたま|千葉|東京|横浜|川崎|新潟|富山|金沢|福井|甲府|長野|岐阜|静岡|名古屋|津|大津|京都|大阪|神戸|奈良|和歌山|鳥取|松江|岡山|広島|山口|徳島|高松|松山|高知|福岡|北九州|佐賀|長崎|熊本|大分|宮崎|鹿児島|那覇"
    footnotes = "[a-zA-Z]"
}
$8 ~ /品目/ && $11 ~ items {
    gsub(/[", ]/, "")
    print $11
    itemonoff = 1
    footonoff = 0
    }
$8 ~ /Cities/ && itemonoff == 1 {
    print $8, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, "footnotes"
}
$9 ~ cities && $9 !~ "東大阪" && itemonoff == 1 {    #東大阪が引っ掛かるのを防ぐため
    gsub(/[",]/, "")
    for (i = 10; i <=23; i++)
        if ($i ~ footnotes)
            footonoff = 1
    print $9, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $10
    if ($9 ~ "那覇")    #那覇が来たらいったん終了
        itemonoff = 0
}
$11 ~ footnotes && footonoff == 1 {
    print "footnotes", $11
}
END {    #終了処理はとくにないけど残しておく
}

このプログラム(コード)を「pickup03.txt」という名前で保存しておく。なんで拡張子をtxtにするのかというと、メモ帳で作業するため。ちゃんとしたエディターを使えという意見は無視できないが・・・

あとはWindow PowerShellを立ち上げて(コマンドプロンプトを立ち上げても良し)、


gawk -f pickup03.txt 2001.txt > output.txt

と打ち込めばコンマ区切りでデータが出力される。

結果はこれ

・・・このままでは後々のデータ処理に使えなそうなので、次回はさらに工夫することにする。

|

« movie plusで「バック・トゥー・ザ・フューチャー」シリーズを上映している件 | トップページ | またまたまたまた中国に行きます »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/44485/45975694

この記事へのトラックバック一覧です: gawkによるエネルギー関連データ処理【その1】:

» 絶対絶命都市3−壊れゆく街と彼女の歌− [絶対絶命都市3−壊れゆく街と彼女の歌−]
絶対絶命都市3−壊れゆく街と彼女の歌−の最新動画や評価レビュー、攻略情報なら「絶対絶命都市3−壊れゆく街と彼女の歌−」へ! [続きを読む]

受信: 2009.08.20 03:42

« movie plusで「バック・トゥー・ザ・フューチャー」シリーズを上映している件 | トップページ | またまたまたまた中国に行きます »