One of my favorite things is ...

2019.09.03
XML
テーマ: 天気の話!(1700)
カテゴリ: データ分析
​​​​  気象庁のサイトに「世界の月平均気温偏差(℃)」というデータがあります ​。これは、各月の平均気温の基準値との差を示すものです。基準値は「1981〜2010年の30年平均値(℃)」です。 

 世界の2019年7月の月平均気温偏差(℃)は、「1981〜2010年の30年平均値」に対して「+0.44℃」で、過去最高を記録しました。6月の月平均気温偏差も、基準値に対して「+0.45℃」で、過去最高を記録しています。

 世界的に、今年の夏は暑かったようです。
​​
▼7月の世界の月平均気温偏差(℃)




▼6月の世界の月平均気温偏差(℃)



▼1980年からの世界の月平均気温偏差の時系列推移(月別:7月まで)



▼Power BIやExcelの「Power Query(パワークエリ)」とは何?

 今回、世界の月平均気温偏差(℃)のデータは、気象庁のサイトから
Power BIの 「Power Query(パワークエリ)」を利用して取得しました。

では、 「Power Query(パワークエリ)」とはどういうものなのでしょうか。

 一言で言うと、「Power Query」は「データの読み込みや前処理などを行うツール」ということになります。データの整形、抽出、削除、置き換え、結合など、データを操作するのが 「Power Query」です。

「R言語」などでは、コードを記述して、データの取得や前処理を行いますが、「Power Query(パワークエリ)」ではかなりの作業をGUI(グラフィカルユーザーインターフェース)で行うことができます。そのGUIの裏側には、「Power Query」のコード(M言語) があるので、見かけと使い勝手は「R」と異なりますが、機能的には「Rの前処理のコード」と同類のものになります。

 「R」の前処理のコードは、同じ作業を繰り返す場合に役立ちますが、「Power Query(パワークエリ)」も同様に、データの処理手順が記録されているので、同じ作業を繰り返す場合に役立ちます。

 つまり、「Power Query」は、あるデータを整形、クレンジングして、「分析対象データ」を得るためのツールで、下記のように「R」コードと同じような働きをします。

 「データ」 → 「クエリによる前処理」 → 「分析対象データ」

 「データ」 → 「Rコードによる前処理」 → 「分析対象データ」 


▼クエリが対象とするのは、「データベーステーブル」です

 Excelのシートにあるデータをクエリの対象にする場合は、「データ」メニューの「データの取得」から始めますが、その際、データの表が「テーブル」に変換されます。

 「テーブル」は、データベースアプリのAccess(アクセス)の「テーブル」をイメージするとわかりやすいと思いますが、一種のデータベースです。

 「テーブル」は、「列が変数で、1行が1レコード」の形のデータベースで、データを「テーブル(データベース)」形式にすることによって、単に数字が並んでいるシートとは異なり、「列(変数)」単位でのデータ操作ができるようになります。




▼Power BIやExcelの「データの取得」メニューでは、Webページからデータをスクレイピングできます​​

 取得したいデータのあるページのURLを記入するだけです。



 Power BIが、対象のページを解析して、「データ表」を表示します。



Power BIの「データの取得」で、Webページ内の表からデータを得る場合、右下の「データの変換」ボタンをクリックすると、Power Query エディターの画面になります。

 Power Query エディターで、「1行目をヘッダーにする」「列名の設定・変更」「列のピボットの解除」「年のテキストから年の数字の抽出」「月のテキストから月の数字の抽出」などの前処理をGUIで設定することができます。​

 Power Query エディターの画面では、データが表示されますが、あくまでもデータのイメージが表示されているだけで、Power Query エディターの画面で個々のセルのデータを書き換えたりするわけではありません。

 Power Query エディターの画面では、列単位、行単位でどのような前処理を行うのか、という処理の内容を設定するだけです。 


▼Power Query エディターで、「1行目をヘッダーとして使用」の処理をすると、取得対象データの1行目が列名になります

​​​


▼1月から12月の列を選択した状態で、右クリックし、「列のピボット解除」を選択して、月別のデータが横方向(行方向)になっているのを、縦方向(列方向)のデータに変換します




▼「列のピボット解除」を行うと月別のデータが縦方向(列方向)に変換されます




クエリの処理は、画面の右端の「処理のステップ」欄に処理の順に一覧が表示されています。この「処理のステップ」を削除すれば、処理を取り消すことができます。処理を簡単に取り消すことができるので、気軽に試行錯誤をすることもできます。


▼年のテキスト「1891年」から数字「1891」を取り出した列を追加する

Power BIの グラフ作成では、年や月の「数字」だけのデータがあると便利なので、年や月の数字だけを取り出した列を追加します。 

 年の列を選択し、右クリックで表示されるメニューで「例から列を追加する」を選択します。サンプル値の入力窓が開いたら、「1891年」の行から「1891」を取り出すので、抽出後のイメージの「1891」を入力して「OK」をクリックします。すると、年の列から年の数字だけを抽出した列が追加されます。
 プルダウンで候補が表示されるので、候補から選ぶこともできます。




月のテキスト「1月」から数字「1」を取り出した列を追加する場合も、同様の方法で、サンプル値に「1」を入力して「OK」をクックします。

 このように、Power Query エディターには、よくある処理のパターンがメニューに登録されていて、GUIで選択するだけで適用できるようになっています。 

 Power Queryの設定が終了したら、「閉じて適用」をクリックします。元のデータに対して、設定したクエリの処理が行われ、クエリ処理後のデータを得ることができます。

 Power BIは、クエリ処理後のデータを用いて、グラフ作成などを行います。 なお、元のデータは変更されず、元の形で残っています。



▼Power BIとExcelのPower Query エディターは、全く同じではないようです

 Power BIとExcelのPower Query エディターは、基本機能は同じだと思いますが、ExcelのPower Query エディターでできたことが、Power BIでできない場合がありました。

 Power BIのPower Query エディターで、「年月」のテキスト型の列を「年月日」の日付型の列に変換しようとしましたが、エラーになってしまいます。ExcelのPower Query エディターでは変換できるので、アプリによって違いがあるようです。

 Excelには、「10-23」というセルも強制的に「10月23日」にしてしまうような、きわめて強力な「日付の重力」があるので、「なるほど、Excelらしい」と、妙に納得してしまいました。

 Power BIとExcelのどちらのPower Query エディターを利用すればいいのか、悩ましいところです。​​​

 Power BIのグラフ・レポート作成機能はすぐれているので、Power BIでアウトプットすることを想定すると、Power BIで前処理もできれば、Power BIで一連の処理が完結するので、シンプルで一番よいと思います。
 しかし、Power BIでエラーになる前処理は、Excelで試してみるということも必要かもしれません。

 Power BI以外でもデータを利用したい場合は、当然
Excelの Power Query エディターを利用することになります。今のところ、Power BI Desktopから前処理済みのデータを書き出す機能がないようです。

Excelでデータを入手する方法はあります。

 今回のようにWebサイトからデータを取り込むようなクエリの場合でも、Power BIの「詳細エディター」で表示される処理コードを、Excelの「空のクエリ」の「詳細エディター」に貼り付ければ、Power BIと同じようにExcelでもWebサイトからデータを取得することができます。逆に、 Excelで作成したクエリの「処理コード」を Power BIに貼り付けることもできます。

 とりあえず、クエリで前処理したデータの汎用性を考えると、 Power Query エディターを利用するのがよさそうです。


※気象庁のサイト(http://www.data.jma.go.jp/cpdinfo/temp/list/mon_wld.html)

▼下記は、今回の
Power Queryの処理コードの例です(GUIの操作で自動的に作成されたコードです。このコードが、 Power Queryの正体のようなものです ):このコードを「詳細エディター」に貼り付ければ、気象庁のサイトからデータをスクレイピングして、データの前処理をすることができます。
​​

let
    ソース = Web.Page(Web.Contents("https://www.data.jma.go.jp/cpdinfo/temp/list/mon_wld.html")),
    Data0 = ソース{0}[Data],
    変更された型 = Table.TransformColumnTypes(Data0,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}, {"Column12", type text}, {"Column13", type text}}),
    昇格されたヘッダー数 = Table.PromoteHeaders(変更された型, [PromoteAllScalars=true]),
    変更された型1 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"Column1", type text}, {"1月", type number}, {"2月", type number}, {"3月", type number}, {"4月", type number}, {"5月", type number}, {"6月", type number}, {"7月", type number}, {"8月", type number}, {"9月", type number}, {"10月", type number}, {"11月", type number}, {"12月", type number}}),
    #"名前が変更された列 " = Table.RenameColumns(変更された型1,{{"Column1", "年"}}),
    ピボット解除された列 = Table.UnpivotOtherColumns(#"名前が変更された列 ", {"年"}, "属性", "値"),
    #"名前が変更された列 1" = Table.RenameColumns(ピボット解除された列,{{"属性", "月"}, {"値", "平均気温偏差"}}),
    追加されたカスタム = Table.AddColumn(#"名前が変更された列 1", "カスタム", each Text.Combine({[年], "年",[月]})),
    挿入された年 = Table.AddColumn(追加されたカスタム, "年.1", each Date.Year(Date.From([年])), Int64.Type),
    追加されたカスタム列 = Table.AddColumn(挿入された年, "カスタム.1", each Text.Combine({Text.Start([カスタム], 5), Text.Middle([カスタム], 6), "1日"}), type text),
    挿入された月 = Table.AddColumn(追加されたカスタム列, "月.1", each Date.Month(Date.From([月])), Int64.Type),
    #"名前が変更された列 2" = Table.RenameColumns(挿入された月,{{"月.1", "月_n"}}),
    変更された型2 = Table.TransformColumnTypes(#"名前が変更された列 2",{{"カスタム.1", type date}}),
    #"名前が変更された列 3" = Table.RenameColumns(変更された型2,{{"年.1", "年_n"}})
in
    #"名前が変更された列 3"



▼温暖化が進行している地球の夏を乗り切るためのグッズを楽天市場で検索​

楽天市場で「冷却枕」を見る

楽天市場で「Nクール」を検索する​

​楽天市場で「USB扇風機」のランクイン商品を検索する​​​

楽天市場で「ネッククーラー」を見る​


☆関連記事
​​ ▼「世界の平均気温偏差(℃)」のデータの前処理が、ExcelのPower Query エディターでもできました:Power Queryエディターは便利です!:簡単に行方向のデータを列方向にできます

▼気象庁の「世界の月平均気温偏差(℃)」のデータを、Accessのユニオンクエリで、横方向から縦方向にデータ形式を変換し、簡単に複数グラフの一覧を作成しました


▼世界の月平均気温偏差:6月は、2019年が過去最高になりました:7月も今年が過去最高水準に?



​​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2019.11.03 08:21:36
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: