- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-08-27T17:30:14+09:00;2021-02-11T19:11:36+09:00","default:inoue.ko","inoue.ko")
#author("2021-11-04T11:41:33+09:00;2021-02-11T19:11:36+09:00","default:inoue.ko","inoue.ko")
#settableborder(line)
*可視化
Data Visualization
~
***概要
可視化とは、物事の関係性を視覚的に捉えられるように、データを画像・グラフ・図表などに変換することを言います。その目的は以下のように、データから価値や知恵を生み出すことにあります。
''Data'' → ''Information''(構造化) → ''Knowledge''(知見)→ ''Wisdom''(知恵)
~
***様々なグラフ
-[[ヒストグラム>GoogleImage:ヒストグラム]]:縦軸に度数、横軸に項目を対応させ、事項間の度数を比較するもの。度数分布図、柱状グラフともいう。
-[[散布図>GoogleImage:散布図]]:縦軸、横軸に変数を対応させて、データを点でプロットしたもの
-[[ボックスプロット(箱ひげ図)>GoogleImage:箱ひげ図]]:データのばらつきを、箱(box)と、その両側に出たひげ(whisker)で表現する図。特に品質管理でよく用いられる。
-[[円グラフ>GoogleImage:円グラフ]]:円図形を扇形に分割し、事項の構成比率を表すもの
-[[折れ線グラフ>GoogleImage:折れ線グラフ]]:時系列の推移を表すもの
-[[ヒートマップ>GoogleImage:ヒートマップ]]:2次元データの個々の値を色や濃淡として表現したもの
~
~
**Python ビジュアライゼーション
~
***基本データ処理用のライブラリの読み込み
-[[numpy>https://numpy.org/]]|数値計算
import numpy as np
-[[pandas>Pandas]]|データフレームの活用
import pandas as pd
-[[janome>https://mocobeta.github.io/janome/]]|日本語の形態素解析器
import janome
~
***ビジュアライゼーション用のライブラリの読み込み
-[[matplotlib>https://matplotlib.org/]]|グラフ描画
import matplotlib.pyplot as plt
-[[seaborn>https://seaborn.pydata.org/]]|matplotlib をベースにした美麗な可視化
import seaborn as sns
-[[plotly>https://plotly.com/python/]]|動的グラフ作成
-[[folium>https://python-visualization.github.io/folium/]]|地図・位置情報の可視化
-[[wordcloud>https://amueller.github.io/word_cloud/]]|ワードクラウドの描画
-[[pillow>https://pillow.readthedocs.io/]]|画像処理
&small(開発が停止しているPIL(Python Image Library)からフォークされたライブラリ);
~
&color(red){以下、書きかけです。};
~
~
***データの準備
はじめに対象となるデータを''データフレーム''として読み込む必要があります。データの読み込み方法については、__[[Pandas]]__ のページをご覧下さい。
df = pd.read_excel('DataSample.xlsx')
~
***ヒストグラム
#image(hist.png,right,30%)
データフレーム(以下 df )からヒストグラムの生成は非常に簡単です。
df.hist() 全項目一挙表示
df["GPA"] .hist( ) 特定カラムの表示
~
***散布図
#image(scatter.png,right,30%)
x軸とy軸にカラム項目を指定して表示します。
df.plot.scatter(x='GPA', y='Attendance')
~
***ボックスプロット
#image(box.png,right,30%)
対象カラム(GPA:成績)を、グループ別(Prefecture:出身県)に分けて表示します。
df.boxplot( column="GPA", by="Prefecture")
~
***棒グラフ
グラフにしたい内容によっては、事前に「データの平均値を出す」、「クロス集計する」といった処理を行って、新しいデータフレーム(表)を作成します。
# 性別ごとに国語・英語・数学の平均値を算出
df_mean = df.groupby("Gender", as_index=False).mean()
df_mean
||Gender|Japanese|English|Mathematics|h
|0|F|62.350000|58.475000|39.800000|
|1|M|56.420455|41.142045|39.539773|
#image(bar.png,right,30%)
生成された df_mean を使うと、簡単に積み重ね棒グラフができます。
df_mean.plot.bar(stacked=True)
~
~
**サンプルノート
以下に、Matplotlib を用いたグラフ表示のサンプルを掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。
-1. 数式(乱数を含む)により生成したデータの可視化
--GitHub:[[DataVisualization01.ipynb>https://github.com/koichi-inoue/JupyterNotebook/blob/master/DataVisualization01.ipynb]]
--nbviewer:[[DataVisualization01.ipynb>https://nbviewer.jupyter.org/github/koichi-inoue/JupyterNotebook/blob/master/DataVisualization01.ipynb]]
-2. 統計サンプル irisデータの可視化
--GitHub:[[DataVisualization02.ipynb>https://github.com/koichi-inoue/JupyterNotebook/blob/master/DataVisualization02.ipynb]]
--nbviewer:[[DataVisualization02.ipynb>https://nbviewer.jupyter.org/github/koichi-inoue/JupyterNotebook/blob/master/DataVisualization02.ipynb]]
~
~