第10回 データビジュアライゼーション
はじめに
アンケート
授業アンケートを兼ねて、以下のアンケートへの回答をお願いします。重複回答防止のため、学籍番号を尋ねていますが、いただいた回答から学籍番号を除外したデータを、データ分析の練習用の素材として活用することを想定しています。
https://forms.gle/aHezd1KCQgziTPAt8
- タイプ別の比較ができるよう、5つのカテゴリーデータをとっています。
- 5段階評価では「3」を中心に、ネガティブかポジティブに振って下さい。
- 時間を問う質問では、30分刻みの5段階のいずれかに回答して下さい。
30分(以下)/ 1時間 / 1.5時間 / 2時間 / 2.5時間(以上)
今後の展開
- 第11回 データ分析・可視化の総合演習(アンケートの結果を素材として)
- 第12回 機械学習入門
- 第13回 様々な手法の紹介
- 第14回 データサイエンスとAI
データビジュアライゼーション
データビジュアライゼーション(Data Visualization)とは、物事の関係性を視覚的に捉えられるように、データを画像・グラフ・図表などに変換することを言います。その目的はデータから価値や知恵を生み出すことにあります。
Data → Information(構造化)→ Knowledge(知見)→ Wisdom(知恵)
Topics
- ナイチンゲールの鶏頭図(1858)
クリミア戦争における月別の死因を可視化したもの。赤色が負傷、青が病気、黒がその他を意味していて、グラフからは負傷による死亡よりも病気による死亡が圧倒的に多いことがわかります。
出典:
- データインク比
エドワード・タフテによる「良いグラフィック」の指標で、「グラフィック全体の印刷にかかったインク量のうち、データを伝えるために用いられたインク量の比率が 1.0 に近いほど良い・・と考えられます。Data-ink ratio = Data-ink / total ink used to print the graphic
Edward Tufte, 1992, The Visual Display of Quantitative Information
ビジュアライゼーションに関わるライブラリ
Pythonを用いたデータビジュアライゼーションには、様々な関連ライブラリーのインポート、データの読み込み、各種メソッドの活用が前提となります。以下、各種ライブラリの紹介です。
- matplotlib|グラフ描画の基本機能の提供
import matplotlib.pyplot as plt
- seaborn|matplotlib をベースにした美麗な可視化
import seaborn as sns
- folium|地図・位置情報の可視化
import folium from folium.plugins import HeatMap
- plotly|動的グラフ作成
import plotly.graph_objects as go import plotly.express as px
- pillow|画像処理
地理情報の可視化
統計データを、国や地域、道路など地図上に可視化する需要が高まっています。今回は、地図情報の活用と、地図上にデータをプロットする方法を体験します。
地理情報の可視化ライブラリ Folium
オープンソースのJavaScriptライブラリLeafletを用いて Pythonでインタラクティブな地図を生成するライブラリです。
緯度・経度の値を使ったマーカー表示や、ヒートマップの表示、また GeoJSON形式の地理情報と統計情報を合わせた各種の可視化が可能になります。
Foliumはデフォルトで OpenStreetMap を使用しています。
- folium.Map( ):ベースとなる地図を生成します
- folium.Marker( ):地図上にマーカーを表示します
- folium.Circle( ):地図上に円を表示します
- folium.Choropleth( ):コロプレス図を生成します
- HeatMap( ):ヒートマップを生成します
コロプレス図とは
コロプレス図とは、統計数値を地図上に表現したもので、区域単位(国別など)の情報を、統計値に応じた色彩や明暗によって表します。人口やGDP、生産高など、土地の上に分布するものを表現するのに適しています。
GeoJSONデータとは
- GeoJSONは、地理情報を JSON 形式で記述したものです。
> JSON#GeoJSON
緯度・経度情報を取得するには
- GoogleMap を使う
地図上で目的の場所をダブルクリックすると、マーカーが表示されるとともに住所と緯度・経度が表示されます。
- GeoJSON.io を使う
https://geojson.io/
地図上でマーカーツールを選択して目的の場所をクリックすると右サイドに GeoJSON形式のデータが表示されます。"coordinates" として表示される最初の数字が経度、次の数字が緯度になっています。
ワードクラウド
ワードクラウドとは
ワードクラウドは、文章の中に含まれる単語をカウントして、どのような単語が多く含まれるかを視覚的に表現します。
英語の場合は、単語間にスペースがあるので、解析が簡単ですが、日本語の場合はオリジナルの文章から単語間がスペースで区切られた「分かち書き」の状態に変換する作業が必要になります。
ライブラリ
- 公式サイト:https://amueller.github.io/word_cloud/
- ライブラリの読み込み
import wordcloud
参考
テキストマイニングは、以下のようなサイト(サービス)を利用することでも、簡単に実現可能です。
演習10-A|地理情報の可視化
ノートブックの新規作成
- Google Colaboratory でノートブックを新規作成
- Untitled0.ipynb というファイル名を変更 > GeographicVisualization.ipynb
サンプルデータ
- 全国の医療機関の医療提供状況(内閣官房 新型コロナ感染症対策)
- Data:covid-19_daily_survey.csv(20220823)
- 付記:2022年まで以下のURLで毎日更新公開されていましたが、現在は停止されているため、2022年8月23日に取得済みのデータを利用します。
- Annotated geo-json geometry files for the world
- 掲載サイト:https://github.com/johan/world.geo.json
- Data:countries.geo.json
- DataURL:https://raw.githubusercontent.com/johan/world.geo.json/master/countries.geo.json
- URLから直接読み込んで利用します。
- 世界各国の一人当たりのGDP(2007年)
- plotly に同梱されているものを読み込むため、準備不要です。
サンプルコード
- JupyterNotebook形式(.ipynb)でプログラムを提供します。
GeographicVisualization.ipynb
学科サイトにリンク掲載
ノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。
- 1. 自分のノートを開いた状態で、右上の「共有」をクリック
- 2. 共有設定を変更して、以下のように表示される状態にします。
このリンクを知っているインターネット上の全員が閲覧できます。
- 3. 「リンクをコピー」をクリックして、そのアドレスを、以下の形式で、学科サイトの「Jupyter Notebooks」の部分に掲載して下さい。
-[[地理情報の可視化>https://colab.research.go・・=sharing]]
- 4. 以下のようになればOKです。
https://design.kyusan-u.ac.jp/socialdesign/?JohnSmith/DataScience
演習10-B|ワードクラウド
ノートブックの新規作成
- Google Colaboratory でノートブックを新規作成
- Untitled0.ipynb というファイル名を変更 > WordCloud.ipynb
サンプルデータ
以下のような一般のテキストデータが利用できます。
- https://en.wikipedia.org/wiki/Python_(programming_language)
- https://www.aozora.gr.jp/cards/000148/files/776_14941.html
サンプルコード
JupyterNotebook形式(.ipynb)でプログラムを提供します。
https://github.com/koichi-inoue/DataScience/blob/main/WordCloud.ipynb
- カラーマップには以下のものが利用できます。
https://matplotlib.org/stable/tutorials/colors/colormaps.html
例:'viridis', 'plasma', 'inferno', 'magma', 'cividis'
学科サイトにリンク掲載
ノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。
- 1. 自分のノートを開いた状態で、右上の「共有」をクリック
- 2. 共有設定を変更して、以下のように表示される状態にします。
このリンクを知っているインターネット上の全員が閲覧できます。
- 3. 「リンクをコピー」をクリックして、そのアドレスを、以下の形式で、学科サイトの「Jupyter Notebooks」の部分に掲載して下さい。
-[[ワードクラウド>https://colab.research.go・・=sharing]]
- 4. 以下のようになればOKです。
https://design.kyusan-u.ac.jp/socialdesign/?JohnSmith/DataScience