課題
e-Statに公開されている「中小企業実態基本調査」のExcel資料「調査の概況(集計結果)」の「第1-1表 中小企業の従業員数」シートを機械判読可能なデータ型CSVに加工する。
Excel:調査の概況(集計結果)※ダウンロードしてから利用する。
https://www.e-stat.go.jp/stat-search/file-download?statInfId=000040303371&fileKind=0
「第1-1表 中小企業の従業員数」シートを表示する。

加工ポイント
- ヘッダーが3行(6行目〜8行目)あり、階層に別れている。
- 7行目と8行目の組み合わせでヘッダーになる。
- 「年度」が横方向に展開されている。
- 時系列データとする場合、年度を縦に展開させたい。
データ考察
ヘッダー

- 1行目〜5行目は不要。6行目も不要
- 7行目〜8行目はヘッダーになる。
- 7行目は「項目名」を表す
- 8行目は「単位」を表す。
- 人、%
- 時系列にする場合、行と列を入れ替える。
- 年度が縦に並ぶようにする。
- A列〜G列は不要。
データ加工の考え方

余分な行・列
- 0行目〜5行目を削除する。
- 0列目〜6列目を削除する。
ヘッダー
- 6行目と7行目を結合する。
時系列
- 行と列を入れ替える。
ゴール(作成するCSV)
元データを加工して次のようなCSVを作成する。

項目ヘッダー
データ項目名
合計
合計_建設業
合計_製造業
合計_情報通信業
合計_運輸業,郵便業
合計_卸売業
合計_小売業
合計_不動産業,物品賃貸業
合計_学術研究,専門・技術サービス業
合計_宿泊業,飲食サービス業
合計_生活関連サービス業,娯楽業
合計_サービス業(他に分類されないもの)
行ヘッダー(0列目)
令和3年度_従業者数人
令和3年度_従業者数_構成比%
令和4年度_従業者数人
令和4年度_従業者数_構成比%
令和5年度_従業者数人
令和5年度_従業者数_構成比%
令和5年度_従業者数_前年度比%
解答(スクリプト)
スクリプトの解答例を示す。
解答例
スクリプトを1行ずつ適用して結果を確認しながら進めると、このようなスクリプトになる。
スクリプト
# 不要な列を削除する
del_col 0:6
# 不要な行を削除する
del_row 20:,0:5
# 仮ヘッダーを結合する
merge_row 0:1
# 行と列を入れ替える
transpose
# ヘッダーをセットする
set_header
説明
#
0〜6列目を削除する。
#
20行目以降と0〜5行目を削除する。
#
0〜1行目を結合する。
#
行と列を入れ替える。
#
先頭行をヘッダーにセットする。
まとめ
- 番号で指定する del_col, del_row などの更新系のスクリプトは、番号の大きな方から処理すると間違いが少なくなる。
- set_headerでCSVの項目ヘッダーをセットするとき、0行目のすべてのセルのデータが重複なく設定されていないと、エラーになる。
- 複数行のヘッダーを1つにまとめるmerge_rowは、セルのデータを機械的に結合するので、冗長な文字列になりやすい。
重複がなくなってヘッダーとして使える場合でも、CSVの項目ヘッダーとして問題ないか?を確認する。 - 必要に応じて、ヘッダーとなる0行目の文字列の修正を検討する。
set_col:セル単位でデータを書き換える。
set_row:行のデータを一括で書き換える。 - 時系列的に横方向(列方向)に伸びていくデータは、transposeスクリプトを使って、行と列を入れ替える。
BODIKエディタのスクリプトマニュアル
このページは、BODIK Utilityの BODIKエディタのスクリプト機能 のマニュアルです。 スクリプト一覧 区分 スクリプトコマンド 機能 記述例 列操作 hide_col 列を隠す hide_col <列 […]

