課題

e-Statに公開されている「中小企業実態基本調査」のExcel資料「調査の概況(集計結果)」の「第1-1表 中小企業の従業員数」シートを機械判読可能なデータ型CSVに加工する。

Webサイト:中小企業実態基本調査
https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00553010&tstat=000001019842&cycle=7&tclass1=000001231005&tclass2=000001231006&tclass3val=0

Excel:調査の概況(集計結果)※ダウンロードしてから利用する。
https://www.e-stat.go.jp/stat-search/file-download?statInfId=000040303371&fileKind=0

「第1-1表 中小企業の従業員数」シートを表示する。

第1-1表 中小企業の従業員数シート

加工ポイント

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

データ考察

ヘッダー

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

データ加工の考え方

余分な行・列

  • 0行目〜5行目を削除する。
  • 0列目〜6列目を削除する。

ヘッダー

  • 6行目と7行目を結合する。

時系列

  • 行と列を入れ替える。

ゴール(作成するCSV)

元データを加工して次のような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 <列 […]