課題

観光庁の「旅行・観光消費動向調査」のExcel資料「2025年7-9月期 集計表(1次速報)」の「表題」シートを機械判読可能なデータ型CSVに加工する。

Webサイト:https://www.mlit.go.jp/kankocho/tokei_hakusyo/shohidoko.html

Excel:「2025年7-9月期 集計表(1次速報)」
https://www.mlit.go.jp/kankocho/content/001968902.xlsx

「表題」シートを表示する。

「表題」シート

加工ポイント

  • 2行目がヘッダーであり、1行目は不要。
  • B列に、その行のIDに相当する情報(表番号)がある。
  • A列は、データの区分を表しているが、先頭の行にのみ記載されている。

データ考察

ヘッダーらしき部分を表示する。

ヘッダー部分

ヘッダー

  • 1行目はこのシートのタイトルで、データとしては不要。
  • 2行目がヘッダーになる。

  • B列に、その行のIDらしき情報(表番号)が記載されている。
    • 第1表、第2表、第3表、、、
  • A列は、データの切れ目に区分を表している。
    • (旅行・観光の動向)、(国内旅行の動向)、(国内旅行の地域別動向)

データ加工の考え方

「表題」シートをBODIKエディタで表示する。

余分な行・列

  • 0行目は削除する。
  • 20行目以降を削除する。
  • 表の中にも不要な行がある
    • 2行目(旅行・観光の動向)
    • 12行目(国内旅行の動向)
    • 17行目(国内旅行の地域別動向)
  • 0列目の「動向の種類」は、今回は不要として削除する。

ヘッダー

  • 1行目をヘッダーにセットする。

ゴール(作成するCSV)

元データを加工して次のようなCSVを作成する。

項目ヘッダー

表番号
表頭
表側
集計事項

解答(スクリプト)

スクリプトの例を示す。

解答例1

スクリプトを1行ずつ適用して結果を確認しながら進めると、このようなスクリプトになる。

スクリプト
# 上下の不要な行を削除する
del_row 20:,0
# 表の中の不要な行を削除する
del_row 16,11,1
# 0列目を削除する
del_col 0
# 0行目をヘッダーにセットする
set_header
説明
#
20行以降、0行を削除する。
#
16行目、11行目、1行目を削除する。
#
0列目を削除する。
#
先頭行をヘッダーにセットする。

解答例2

行を削除すると、削除した行の後ろの行番号が「考え方」で記載した番号とずれてしまう。
行を削除するときは、行番号の大きな行から削除すると、後から見たときにわかりやすい。

スクリプト
# 不要な行を削除する
del_row 20:
del_row 17
del_row 12
del_row 2
del_row 0
# 0列目を削除する
del_col 0
# 0行目をヘッダーにセットする
set_header
説明
#
20行目以降を削除する。
17行目を削除する。
12行目を削除する。
2行目を削除する。
0行目を削除する。
#
0列目を削除する。
#
先頭行をヘッダーにセットする。

まとめ

  • 番号で指定する del_col, del_row などの更新系のスクリプトは、番号の大きな方から処理すると間違いが少なくなる。
    • 特に行を削除するスクリプト(del_row、merge_rowなど)を実行すると、削除した行より後ろの行番号が変更されることに注意が必要。
BODIKエディタのスクリプトマニュアル

このページは、BODIK Utilityの BODIKエディタのスクリプト機能 のマニュアルです。 スクリプト一覧 区分 スクリプトコマンド 機能 記述例 列操作 hide_col 列を隠す hide_col <列 […]