【PowerBIの実務基礎】PowerBIのみでデータ編集を行う

これからの時代はデータ分析が重要なのだ。
と聞きかじってきた経営陣が、どこかで聞きかじってきたPowerBIを使えと言い始める。どこの会社でもある姿だと思います。私の会社もです。

今の私はデータサイエンティストとは呼べない仕事をしているのですが、1年ほど前、データ分析できますと言い続けて面接バトルを制覇して入社しました。この会社の中では一番の分析スキルを持っていると信じていますし、前の会社では確実にそうでした。しかしデータ分析とは程遠い部署の配属となりました。
私ではない別の人間が初歩中の初歩で躓く姿を遠くから眺めながら、羨ましい羨ましいと呪詛を飛ばしつつ、会議室へ強制連行されて意識を失う日々を過ごしています。

面接でデータ分析のことしか語っていない人間を採用し、データ分析をさせない。何を期待して採用したのか純粋に謎ですね。人手不足らしいので、誰でも良かったんでしょうか。
社長も含めた経営層を招集し、これからの時代を勝ち抜くためのデータ活用推進説明会みたいな場では私が登壇しますので、私がデータマンということは会社の上層部にすら伝わっている思うのですが・・・やらせる気はない。なぜなのか。

さて、前置きが長くなりました。
私の会社はテキストエディタすらWindows標準のメモ帳しか存在しない、IT屋から見れば「20年前の方がまだマシだった」と言いたくなるような地獄の環境です。こんな世界でPowerBIのみ与えられた時、人はそれで何かできるのだろうかと非常に気になったんですね。同時に、会社ではやらせてもらえないこともあり、自分で試してみることにしました。

人口グラフを作ってみる

今回は私が住んでいる千代田区の人口データを使ってPowerBIで遊んで見ることにしましょう。
インストールとかPowerQueryエディターはどこからとか、そのへんは流石に省略します。

千代田区ホームページ - 年齢別人口(住民基本台帳)

2019年12月の年齢別人口エクセルデータを落としてきました。

おや、見事に「xls」ですね。
まぁ、どこの会社もだいたいxlsとxlsxは入り混じっているでしょう。私の会社もです。前の会社もです。

それでは早速、PowerBIにこのエクセルを読み込ませてみましょう。

即死しました。

PowerBIでxlsファイルは原則扱えないと思った方が良い

32bitOSはようやく会社の現場でも駆逐されつつあります。
そのためPowerBIもだいたい64bit版になるわけですが、平気で使われているxlsファイルは64bitOSなんて概念すらほぼ存在しなかった時代のファイルなんですよね。そのため、これを読み込む際に使われるAccessデータベースが32bitであるために発生するエラーがこれです。おそらくかなりの数の企業がここに直撃する気がします。私が知っている現場は、IT会社も事業会社も、普通にxlsファイルがありました。

一般的な回避策としては、PowerBIを32bit版にするか、xlsファイルをxlsxに変更するといったことが考えられます。クソみたいな企業はソフトのインストールに厳しく制限かけていますので、おそらく前者は不可能でしょう。そうなると後者が無難ですね。
IT知識が不足しているお偉いさん方は「xls?xlsx?なにそれ?」となるのが基本で、 現場のルールとして勝手にファイル名変更できるかが非常に厳しい課題になる気もしますが・・・以外とそこは大丈夫だろうと私は思っています。
というのも、xlsとxlsxの違いを知らないので、勝手にxlsxで保存しておいてやればバレることがないからです。人によっては拡張子自体表示していませんからね。個人的には、xlsファイルを勝手にxlsxに変えて保存して、互換性に問題が生じたという現場を見たことがないというのもあります。

データ整形が大変そう

さて、xlsxファイルにして保存してPowerBIに読み込ませた結果。こうなりました。
このまま使うのは無理ですね。

そもそも「データ」というよりは「帳票」と呼んだ方が適切な気がする構造のエクセルファイルなので、こうなって当然ですね。必要な部分だけエクセルで切り取って読み込ませてやればいいだけなのですが、会社で登場するのは「え!?PowerBIでできないの!?」という返事でしょう。
PowerBI側で切り貼りする方がおそらく面倒だと思うのですが、とりあえずPowerBIでできるだけ整形してみましょう。

最終的にはこんなグラフにしてみたいと思います。
積み上げ面グラフは私が個人的に好きなだけです。棒でも折れ線でもどうぞ。

まずは不要な行と列を削除

加工編集はPowerQueryエディターから実行します。GUIベースで誰でもできます。

まずは上2行を削除しました。

1行目に「年齢」「総数」「男」「女」が来たので、1行目をヘッダにします。

次はいらない列をゴッソリ削除しました。

更に下・・・。これは何でしょうか。
103歳以上で一旦まとめておきながら、その上で、103歳以上の内訳も110歳以上まで書いてる感じでしょうね。とりあえずこれも「行の削除」から削ります。

人数を数値型に変えておきます。

この状態で一度グラフ化してみました。
「年齢」に「歳」が入っているため、昇順でも降順でも文字としての昇順降順となってしまいましたね。0 100 … 10 11 12 … 19 1 20 … 29 2 30 …。さてこれはどう解消しましょうか。

色々とやり方がある気もするのですが、「区切り記号前のテキスト」を抽出するのが一番簡単だと思いました。「歳」を区切り記号とし、それよりも前の文字を抽出しましょう。

「歳」より前を切り出し、テキスト型を数値型にし、順番を頭にし、ヘッダ名も変えてみました。これでデータ整形は完了ですね。

テキトーに色を塗って完成しました。

これ「103歳以上」はどうなるのかな

とりあえずPowerQueryエディターで切り貼りすれば、エクセルでやった方が楽じゃねと思いつつも、一通り簡単な整形はできました。しかし今回は「103歳以上」がまとまってしまっていますね。ここを修正してみましょう。

PowerQueryエディターに戻り、行削除のステップまで戻りました。
こういう「一度行った編集に戻る」のいうのはエクセルだと難しいですね。途中作業をシートに残していたり、Ctrl+Zで戻ってやることもできますが、どちらにせよやり直しが生じます。
しかしPowerBIではステップの差し込みとして可能なのが便利です。

“103歳以上”より下の行を削除したところに戻ってきました。

なんかいい項目ないかなーと思った結果、「代替行の削除」が使えそうです。

104行目”103歳以上”から109行目までの6行を削除。
これは削除と残すを交互に繰り返すものみたいなので、とりあえず保持する行は100とぶちこみました。正しい使い方じゃない気がする。

更に、かつて”103歳以上”より下を削除するのに使ったステップを削除します。もういらないので。

これで103歳以上がまとまっていない、110歳までのグラフになりました。正確には、110歳以上なんですけど、0なのでOK!

ここまで”だけ”ならエクセルのみで良いので、少しだけ高度な作業をしてみる

ここまででやったことは、エクセルからデータ切り取ってグラフにしただけですね。この作業を一回やるだけなら、エクセルでコピペで切り取ってきた方が確実に早いです。
しかしPowerBI側でやれば加工編集処理の使い回しができますので、ここから少しデータ分析っぽいことをしてみましょう。

PowerQueryエディターから、クエリをコピーします。
あ、もともとシート名から「3」というクエリ名になってたんですが、2019年12月と名前変えてます。

コピーしたクエリ(2018年12月という名前にしました)のソースを選択し、2018年12月のエクセルファイルを指定します。

これで、2019年12月に施した加工内容と同じ加工を施した、2018年12月のグラフを作ることができました。
元データが変わっても、人間がまた同じ加工作業を繰り返す必要なく、ただデータソースを入れ替えるだけでOKなのは、エクセルだとできないことですね。(マクロ書けばできるけど・・・)。

更に、年齢でリレーションを貼りました。
(あまり賢いやり方ではない気がするのですが、今はこれでいいのです)

クイックメジャーから「2019年の男 – 2018年の男」をしました。
これで男性の増減数が分かります。同じように女性の計算も行います。

そして棒グラフにして、男 – 男と、女 – 女を設定。お、なんかカッコイイかも?
これで1年での増減がイイ感じに視覚化できた気がしますね。とりあえずこれでデータ見せると「50歳前半に何か起こったっぽいッス!」とかそれらしいことが言えるようになってきますし、このグラフを作ること自体が非常に早いです。
最初の仕込みこそ「エクセルでやった方が早いだろ」と面倒でしたが、一度仕込むとそれを活用しながら後続の作業が効率化されていきますので、なるべくPowerQueryに編集作業を集約すると良いかもしれないと感じました。

今回の記事は以上です。
次回の記事ではもう少し高度な編集をしていこうと思います。何をするかは決めていません。

ちなみに、これよりもっと簡単な、ただデータ読み込んで表示するだけレベルの超基礎研修を日本マイクロソフトで開催してみたのですが、参加者の4割程度の人はお手上げ状態になりました。もしかしたらこれができるだけで「凄いデータサイエンティスト!」という印象を得ることができるかも知れません。

コメント コメントは承認制です。

タイトルとURLをコピーしました