Python
PowerBI

Python × PowerBI データ分析事始め【データ準備編】

はじめに

と、いうことで、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のスクリプトを書くことになりますが、おススメは次のステップ。

  1. JupyterNotebookやVSCodeなど、自分の環境下でコード作成・テスト
  2. PowerBI Pythonスクリプトにコピペ
  3. 実行

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の手順は先ほど同様、自分のエディタで試行してから実装しましょう。

まずスクレイピングにあたって、lxmlhtml5libBeautifulSoup4のライブラリが必要なので、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から拝借させていただいています。