LoginSignup
0
1

More than 1 year has passed since last update.

Power BI Desktopでちょっとしたデータクレンジング手順メモ:「ピボット解除」「列の分割」利用【M言語コード掲載】

Last updated at Posted at 2021-12-12

<今回行った手順っで生成されたコード:Power QueryのM言語>

let
    ソース = Csv.Document(Web.Contents("https://covid19.mhlw.go.jp/public/opendata/requiring_inpatient_care_etc_daily.csv"),[Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.None]),
    昇格されたヘッダー数 = Table.PromoteHeaders(ソース, [PromoteAllScalars=true]),
    変更された型1 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"Date", type date}}),
    ピボット解除された他の列 = Table.UnpivotOtherColumns(変更された型1, {"Date"}, "属性", "値"),
    区切り記号による列の分割 = Table.SplitColumn(ピボット解除された他の列, "属性", Splitter.SplitTextByDelimiter(")", QuoteStyle.Csv), {"属性.1", "属性.2"}),
    置き換えられた値 = Table.ReplaceValue(区切り記号による列の分割,"(","",Replacer.ReplaceText,{"属性.1"}),
    変更された型2 = Table.TransformColumnTypes(置き換えられた値,{{"値", Int64.Type}}),
    ピボットされた列1 = Table.Pivot(変更された型2, List.Distinct(変更された型2[属性.2]), "属性.2", "値", List.Sum),
    #"名前が変更された列 " = Table.RenameColumns(ピボットされた列1,{{"属性.1", "Prefecture"}, {" Requiring inpatient care", "Requiring inpatient care"}, {" Discharged from hospital or released from treatment", "Discharged from hospital or released from treatment"}, {" To be confirmed", "To be confirmed"}}),
    変更された型 = Table.TransformColumnTypes(#"名前が変更された列 ",{{"Date", type date}, {"Prefecture", type text}, {"Requiring inpatient care", Int64.Type}, {"Discharged from hospital or released from treatment", Int64.Type}, {"To be confirmed", Int64.Type}})
in
    変更された型

クレンジング準備

厚労省が提供するオープンデータのフォーマットが最近変わり、データの取り直しをしました。
その手順をメモしておきます。

入院治療等を要する者等推移のデータを例にその手順を記します。

  • 列名に件名と計測対象の人のステータス(入院化退院かなど)が記載されているの列として分離

することが目的です。
「Powwer BI Desktop」で取り込みます。

image.png

列名は以下のように英語表記で県別、さらに各県ごとに以下の内容に分かれています。

  • Requiring inpatient care
  •  : 入院治療が必要
  • Discharged from hospital or released from treatment
  •  : 退院または治療から解放
  • To be confirmed
  •  : 確認中
(列名)
Date
(ALL) Requiring inpatient care
(ALL) Discharged from hospital or released from treatment
(ALL) To be confirmed
(Hokkaido) Requiring inpatient care
(Hokkaido) Discharged from hospital or released from treatment
(Hokkaido) To be confirmed
(Aomori) Requiring inpatient care
(Aomori) Discharged from hospital or released from treatment
(Aomori) To be confirmed
・・・(以下県ごと)

ピボット解除と区切り記号による列の分割

「変換」→「1行目を列のヘッダーとして使用」を選択します。

image.png

Dateの他の列を2列にまとめます。
Date列のみ選択し、「変換」→「列のピボット解除」→「その他の列のピボット解除」を実行します。

image.png

他の列が2列にまとまります。

image.png

エリア(県)の文字列と分けます。
「ホーム」→「列の分割」→「区切り記号による列の分割」を使います。
区切り記号として「)」(半角)を指定します。

image.png

image.png

エリア情報の列の先頭に「(」が入っているので、「""」(ブランク)と置換してなくします。
(列の先頭に半角スペースが入る場合は、同様に置換してなくします)

image.png

image.png

値が文字列になっているので「整数」にします。

image.png

これで、後は列名を指定して、グラフ作成に移ります。
複数の要素がが1列にまとまったので、縦に長くなります。
この後の使い方によっては、後ろ2つの列を選択し「変換」→「列のピボット」で、まとめた列を元に戻します(横長の表に戻します)。

image.png

image.png

作成したグラフ例です。
「Requiring inpatient care」(入院治療が必要)の推移です。

image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1