はじめに
と、いうことで、PowerBIでPythonが利用できるようになりました。
※機能はプレビュー段階
Python使いたかったデータサイエンティストの方々も多かったでしょう。
ニッチなデータ加工をPowerQueryではなくPython/Pandasを使えるのはとても喜ばしい。
ところで、PythonもPowerBIも興味あったけど、あまり取組めていなかった人も多いのではないかと。
せっかく両方使えるようになったので、両者の特徴解説していきながら、
データの取得~加工~可視化をやっていきたいと思います!
Python & PowerBI 初心者さんのためのデータ分析事始めスタート!
PCにPowerBIDesktopとPythonをインストールしよう
まずは環境構築、自身のPCにPowerBIDesktopとPythonをインストールしましょう。
それぞれ以下の記事を参考に進めてください。
PowerBIDesktopはコチラ
Pythonはコチラ
PowerBIでPythonが使える準備をしよう
2018/8時点で、Pythonはプレビュー機能のため、オプションで有効化することが必要です。
有効化したら、Pythonを実行するホームディレクトリを選択します。
下記手順でAnaconda経由で環境構築した場合は、だいたい以下のようなディレクトリ名で指定できるはずです。
C:\Anaconda3\envs\"つくった環境名"
だめな場合は、pythonで以下を実行してパスを確認しましょう。
import sys
sys.path
表示されるエラーが消えたら、準備できています。
データを取得しよう
PowerBIでの分析を始めるには、データを取得することがスタートライン。
データの取得に関してはPowerBIに備わっているクエリ(PowerQuery)が超優秀で、正直Pythonの出番はあまりありません。
でも、Pythonによるデータ取得→反映ももちろんできます。
両方試してみましょう。
ローカル環境からCSVファイルを取得
PowerBI
PowerBIのデータ取得は超簡単&高機能です。
仮に取り込みたいデータがCSV形式でデスクトップ上にある場合、
画面上のリボンから「データを取得」→「テキスト/CSV」→お目当てのCSVを選択するだけ。
データ取り込み後、データの加工をしていくのが本来のステップ。
PowerBIは、レポートとしてビジュアルを作ったり、データモデルを集計したりする画面「レポート画面」と、集計対象のデータを加工する画面「クエリエディター」の大きく2種で構成されています。
先ほどのデータも、きちんとクエリエディター上で確認・加工できるようにすでに整備されています。
クエリエディターの「詳細エディター」というところをクリックしてみましょう。
これが、PowerQuery原文です。
1つ1つの加工ステップが、すべて1行のコードとして対応していることが分かります。
GUI上での操作が全部コード化されて適用されているイメージですね。
さて、加工はまたいずれにして、「閉じて適用」をクリックしてレポート画面に戻りましょう。
レポート画面右側をみてみると、「フィールド」に先ほど取り込んだデータが格納されていることがわかります。
このフィールドを使って、ビジュアルを作っていくことになります。
Python
さて、Pythonでローカル環境にあるデータを取り込む手順にうつります。
Pythonのスクリプトを書くことになりますが、おススメは次のステップ。
- JupyterNotebookやVSCodeなど、自分の環境下でコード作成・テスト
- PowerBI Pythonスクリプトにコピペ
- 実行
PowerBI上のエディタでは絶対に書かないでください。
※初心者殺し的な意味で。
さあやってみましょう。
まずは自分の環境下で、ローカル環境に置いたCSVファイルをデータフレームとして取り込むスクリプトを作ります。
といっても、以下2行です。
# pandasというデータフレームを扱うためのライブラリをインポートします
import pandas as pd
data = pd.read_csv("C:/Users/hogehoge/Desktop/winequality-white.csv", sep=";")
# 絶対パスで指定するのを忘れずに。
無事に読み込みができていたらOK。
PowerBIに戻って、
「データを取得」→「Pythonスクリプト」→コピペ・OK
で、ナビゲーターが起動し、
データフレームを格納した変数名を選択することができるようになります。
あとはチェックして読み取りだけ。
なんかめっちゃ遠回り感ありますが、同じことができました!
WEB上の情報(HTML)をスクレイピング
さてさて、PowerBIといえば高度なスクレイピング機能。
UCI Machine Learning RepositoryのHTML情報から、データテーブルを作成してみましょう。
対象はデータセット一覧のコチラのURL
PowerBI
tableタグなどを自動で読み取ってくれたりするんですが、
WEBページ見ながら欲しい情報入力すると、
自動で「お前欲しいのコレやろ(どやぁ)」してくれる機能を紹介
「データを取得」→「WEB」→URLをコピペ→「列を使用してテーブルを追加」
すると、WEBの画面を見ながら自分が欲しい情報をいくつか入力すると、自動でHTML・CSS情報を抽出してくれるぶっとび機能。
詳細はこちらの記事を参照「例を使用してテーブルを抽出するとは」
簡単にデータセット情報が抽出できちゃいました。
Python
Pythonの手順は先ほど同様、自分のエディタで試行してから実装しましょう。
まずスクレイピングにあたって、lxml
、html5lib
、BeautifulSoup4
のライブラリが必要なので、pipでインストールしておきます。
※Pythonで以下を実行すればOK
!pip install pandas lxml html5lib BeautifulSoup4
コピペコードは以下のとおりです。
import pandas as pd
url = 'https://archive.ics.uci.edu/ml/datasets.html'
df_list= pd.io.html.read_html(url)
ucidata2 = df_list[5]
ucidata2 = ucidata2[[0]]
ucidata2.columns=["Name"]
ucidata2 = ucidata2.dropna().drop(0)
これで、ucidata2という、先ほどスクレイピングしたデータセットとまったく同じものができあがりました。
次回
通常は加工のステップをやるべきですが、退屈です。
なので、お先にPowerBIビジュアルと、Pythonビジュアルで遊んでみましょう!
おわりに
利用データは、主にUCI Machine Learning Repositoryから拝借させていただいています。