
かーでぃさんのハジメの一歩会の宿題をPython(pandas)とPower BIでドヤドヤする - Power BIの入口かも!
こんにちは。出戻りガツオ🐟✨です!
「またこいつやりやがった案件」です。
Power BIでPython絡められることは存じていましたが、やったことなかったので今回やってみました!
Power BIは学習が必要ですが、SQL文と異なり、Excelに慣れていたら、入りやすいツールです。
もちろん勉強も必要ですが、とてもリッチなBIダッシュボードが作れる最高の相棒です!
↓が今回の宿題でのポートフォリオです。何のインサイトも得られないデータですが、雰囲気イケメン感は強いです!
本当に価値があるものを作るためにはステップが要ります。
今回はPythonの学習と合わせて、Power BIに触ってみる入門編のようにとらえて記事を見ていただければ嬉しいです。
Power BIのデータソースをPythonで作成する
正直、learn見ればわかります。
noteにするうえで意義を作るとすれば、ステップの要約なので、私なりのコトバで言い換えをします。
Pythonでデータソースを作る準備
Pythonをダウンロードする
必要なサードパーティーパッケージをインストールする
Power BI DesktopでPython スクリプトのオプションを設定する
python.exeが存在するローカルのパスを設定する
👆のようなイメージですね。
さて、考え方の問題ですが世の中にはPythonの本が溢れかえってます。
本によって実はPython.exeをどこから入手するか、二つに分かれます。
私の個人的な見解ですが、読んでいる本やブログで紹介されているものの多くはAnacondaです.
👆はJupyter Notebookというデバッグのしやすさなど、とても多くの人に好まれる便利ツールがまとめられた集合体です。
実は数冊本を読んで、私これあんま好きになれなかったんですよね。ぶっ叩かれそうですが。なんかソフトウェアが沢山ぶち込まれるって感覚、少し苦手です。使いこなせたら便利なんでしょうけど。
なので公式からダウンロードしています。
このロゴ、マジ好き。
公式からのダウンロードでは、サードパーティーパッケージが一切入っていません。
開発環境は、IDLEという統合開発環境が同梱されています。
シンプルですっきりしているので、最初はこれで勉強しました。
今は「Visual Studio Code」LOVEです。ここら辺は「誰が推し?」くらいの違いだと思うので、好きなもの使っていいと思います。
ツールについての持論展開されたい方は、私の見えないところですきにやってください。
Pythonのインストール
みんな大好き「みやさかしんや@Python/DX/エンジニア(@miyashin_prg)」さんの下記のつぶやきが全てです。
引用させていただきます🙇
デビューシリーズとして並べておきます☺✨ pic.twitter.com/y7RUVarCIS
— みやさかしんや@Python/DX/エンジニア (@miyashin_prg) October 9, 2022
pythonチャレンジの後押しをさせていただいた中で、大体インストールで躓くのは👆の「4. チェックを入れる」です。
もう一度書きますね。「4. チェックを入れる」「4. チェックを入れる」「4. チェックを入れる」「4. チェックを入れる」「4. チェックを入れる」
ここの何が重要かというと「環境変数PATH」なるものが、自動で設定されることです。
手動でやるには、初見では「ウ”ゥ”!!」ってなります。
ほかのツールを使う上で"「環境変数PATH」の設定"ということが必要になることがあるので、知っているのに越したことはないですが、、、
「Installerで自動でやってくれるなら自動でやってもらおうよ」と私は考えますので、説明は書きません。
サードパーティーパッケージのインストール
コマンドプロンプトを開き、下記のコマンドを入力します。
👆の「みやさかさん」のツイートに、コマンドプロンプトの起動も書いているので割愛。
黒い画面開いて
pip install pandas
pip install matplotlib
👆のコマンドを実行します。pip install ライブラリ名で「サードパーティーパッケージ」なるものがインストールされます。
なんか「pip」ってのも可愛いんですよね~、とにかくpythonは可愛い🐍なんか推せる。
ここまでで準備完了。字面にすると長いですがやってることは大したことないです。(作業時間は5~10分くらい)
さ!Power BIでやるためにコード書きますか!
Pythonスクリプトを書く
改めて宿題を見直してみましょう。
もういらん?(笑 pic.twitter.com/OBXAe27e79
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 10, 2022
これを「pandas」というライブラリでDataFrameという形に整形します。
import pandas as pd
data = [['A中学校',[30,28,29],[28,28,30],[31,30,30]],
['B中学校',[34,33],[35,35,36],[38,37,37]],
['C中学校',[32,31,32],[35,34,35],[38,39]]]
df = pd.DataFrame(data,columns=['school','1st','2nd','3rd'],dtype=float)
print (df)
👆がサンプルのコードです。図にするとこんな感じ!

df = pd.DataFrame(data,columns=['school','1st','2nd','3rd'],dtype=float)
👆でヘッダーを設定して、内訳書いてるんですね。1年生、2年生、3年生は「, (カンマ)」区切りでまとめて格納しちゃってます。
なんで標準で配列表現できるのに「pandas」でやるんですかね?
やっぱりpythonは🐼なの??
ここからPower BI Desktop
長かったですが、ここから「Power BI Desktop」の出番です!
無料でダウンロードできる信じられないアプリです。
実際、SaaSのPower BIにレポートを発行するにはライセンスが必要ですが、「Power BI Desktop」を使うのはお金💰がかかりません。
信じられないです。無料で誰でもインストールできるとは驚きです(*_*)
流れ!

👆では「データを取得」をクリックしましょう


エディタが出るのでPythonスクリプトをコピペ
- Pythonのエディタではないので、デバック機能などは一切ないです!注意
- ここで書くのではなく、開発環境で完成させましょう!

👆でOKすると・・・!!

ここからは俺たちの時間だぜ!
水曜日に試してましたので、👆の説明は一切間違っていません
隠しません🐟
ここで「データの変換」をすると・・・
我らがExcelerが使い慣れたPower Query Editorです!
もう、、、ここまで来たら「俺たちの時間」だ!!!!

let
Source = Python.Execute("import pandas as pd#(lf)data = [['A中学校',[30,28,29],[28,28,30],[31,30,30]],#(lf) ['B中学校',[34,33],[35,35,36],[38,37,37]], #(lf) ['C中学校',[32,31,32],[35,34,35],[38,39]]]#(lf)df = pd.DataFrame(data,columns=['school','1st','2nd','3rd'],dtype=float)#(lf)print (df)"),
df1 = Source{[Name="df"]}[Value],
UNPIVOT = Table.UnpivotOtherColumns(df1, {"school"}, "grade", "classes"),
REPLACE1 = Table.ReplaceValue(UNPIVOT,"[","",Replacer.ReplaceText,{"classes"}),
REPLACE2 = Table.ReplaceValue(REPLACE1,"]","",Replacer.ReplaceText,{"classes"}),
SPLIT = Table.SplitColumn(REPLACE2, "classes", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"class1", "class2", "class3"}),
SetTypes = Table.TransformColumnTypes(SPLIT,{{"school", type text}, {"grade", type text}, {"class1", type number}, {"class2", type number}, {"class3", type number}})
in
SetTypes
👆は英語で書いてますが、GUI操作です、全部。カッコつけて英語に直してるだけです。
データソースはPythonのDataFrame
ピボット解除して、「school、grade、classes」の3点の要素に切り替える
classesの余計な「[」「]」ブラケットを消す。
classesを「, (カンマ)」区切る
列が展開されるので、データ型を決める

Power Query Editorにまで来れば、もうこっちのもんです。これが強い。
メッチャ簡単にデータ整形できる。しかもGUIで。
SQLを学ばずとも、データ加工ができるって凄くないですか??
👆はM式。これに加えてData Analysis Expressions (DAX)でメジャーといった列の追加などができます。やればやるほど、面白い沼です。
好きです(謎の告白)
閉じて適用すると・・・

これをほかのマスタやトランザクションと組み合わせて、データを活かすことがBIの醍醐味です。
リレーションは下記の様な画面で定義できます。
-割愛-

BIガチる機会はまた今度ください🐟
豊富なビジュアルがそろっているので・・・

これを並べていくとこんな感じです

スライサーを導入して、感覚的にインサイトが得られます。
かーでぃさんの狙いかわかりませんが、「B中学校は何か事件でもあったのか?」と思う程の1年生の総数に注目が得られますね。(無理やり)

インサイトを得る
直感的な操作で動的にデータが見れます。ぽちぽちよろしければクリックしてみてください。
再掲
雑な言い方すると「超Cool」です。もう画面がイケてるもん。
インサイト得られなくても買っちゃうくらいの圧倒さを感じます。
詳しく知りたい方は・・・
本を読みましょう。
Igniteで写真撮らせていただいたので・・・自慢w

トライアンドエラーを繰り返して、スタースキーマを学べば、何職だろうがCoolなダッシュボードが作れます!
是非ちょこーっとでも触ってみてくださいね!!
- 私も会社でちょこちょこやってたりします。
最後に宣伝
開発の第一歩を踏み出すうえでおすすめの窓口をご紹介!
事務担当者でもツヨツヨエンジニア目指してもイイじゃない! - 私の目標です!!
まあ、参加してみてください!
それかTwitterでそういう活動したい人もいるのでFollowしてください。
私とか
最後に!!!
いつもお読みいただきありがとうございます!
ITを使って仕事を楽しくする一助になりたいと思ってますので
お読みいただいた方はぜひTwitterもフォローしてください!
Power PlatformやPythonやExcel、Google Apps Scriptなどなど雑多につぶやきます。よなよなエールが大好きです🍺
リプ、いいね👍、RT大歓迎です!
強く求めてます🐟😂🐟
業務改善フレンズ大歓迎!!切磋琢磨しましょ~♪♪
P.S
出戻りガツオ🐟を使ってこんなことがしたいな!っていうプロデュースしてくださる方や企画大歓迎です!
活躍の場広げたい!メッチャ動くので、お誘いしてくださる奇特な方募集!