pythonではじめるデータ分析 (データの可視化3 )

#はじめに
初心者向けにpythonでのデータ解析について解説しています。
本記事が3つ目になります。

##### ------------------過去の記事----------------------
pythonではじめるデータ分析 (データの可視化１）
https://qiita.com/CEML/items/d673713e25242e6b4cdb
pythonではじめるデータ分析 (データの可視化2）
https://qiita.com/CEML/items/e932684502764be09157

ソースコード
https://gitlab.com/ceml/qiita/-/blob/master/src/python/notebook/first_time_data_analysis.ipynb
# おさらい
このシリーズでは
無料で公開されているデータセットを使用して、データの読み込みから簡単なデータ解析までを解説します。

##### データセットについて
・提供元：カルフォルニア工科大学
・内容：心臓病患者の検査データ
・URL :https://archive.ics.uci.edu/ml/datasets/Heart+Disease
・上記URLにあるprocessed.cleveland.dataのみを使用します。

##### 解析目的
データセットは患者の病態を5つのクラスに分類しています。
各クラスの特徴を掴む事を目的に解析を進めてみようと思います。

<font color="Red">※　データのダウンロード等は過去記事を参照ください。</font>

# 本記事の内容
１．カテゴリー変数のダイアグラムを作成
２．3D plot

### データの読み込み
```python
#データの読み込み
columns_name = ["age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak","slope","ca","thal","class"]
data = pd.read_csv("/Users/processed.cleveland.data", names=columns_name)
# 病態のclassでグループ化
class_group = data.groupby("class")
```

### １．カテゴリー変数のダイアグラム
今回のデータセットでカテゴリー変数は'sex', 'cp', 'fbs', 'restecg', 'exang', 'slope', 'ca', 'thal'の8変数になります。

```python
import plotly.express as px
categorical_feature = ['sex', 'cp', 'fbs', 'restecg', 'exang', 'slope', 'ca', 'thal']
fig = px.parallel_categories(data, 
                             dimensions= categorical_feature,
                             color="class",)
fig.show()
```

<div>
    <a href="https://plotly.com/~Hiroki_Furuyama/5/?share_key=C6fZb1GfQ3dF07rPDtvox2" target="_blank" title="test3" style="display: block; text-align: center;"><img src="https://plotly.com/~Hiroki_Furuyama/5.png?share_key=C6fZb1GfQ3dF07rPDtvox2" alt="test3" style="max-width: 100%;width: 600px;"  width="600" onerror="this.onerror=null;this.src='https://plotly.com/404.png';" /></a>
    <script data-plotly="Hiroki_Furuyama:5" sharekey-plotly="C6fZb1GfQ3dF07rPDtvox2" src="https://plotly.com/embed.js" async></script>
</div>
<font color="Red">※　図をクリックしてインタラクティブな操作を是非体感下さい。</font>

リンク先で操作してもらえばわかりますが、各カテゴリーの組み合わせがいくつあるかなどよくわかります。
色は病態のクラスで色分けされています。
例えば病態の重いクラス4では全ての組み合わせがユニークとなっていることがわかります。

### 2. 3D plot
今回のデータセットで連続変数は'age', 'trestbps', 'chol', 'thalach', "oldpeak"の5変数になります。
例として、'chol', 'thalach', "oldpeak"でプロットしてみます。

```python
import plotly.express as px
fig = px.scatter_3d(data, x='chol', y='thalach', z='oldpeak',
              color='class',  opacity=0.5)
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.update_traces(marker=dict(size=2))
fig.show()
```

<div>
    <a href="https://plotly.com/~Hiroki_Furuyama/7/?share_key=wb8TXZhzHmDoqSsx72mlUE" target="_blank" title="test4" style="display: block; text-align: center;"><img src="https://plotly.com/~Hiroki_Furuyama/7.png?share_key=wb8TXZhzHmDoqSsx72mlUE" alt="test4" style="max-width: 100%;width: 600px;"  width="600" onerror="this.onerror=null;this.src='https://plotly.com/404.png';" /></a>
    <script data-plotly="Hiroki_Furuyama:7" sharekey-plotly="wb8TXZhzHmDoqSsx72mlUE" src="https://plotly.com/embed.js" async></script>
</div>
<font color="Red">※　図をクリックしてインタラクティブな操作を是非体感下さい。</font>

各クラスあまりきれいに分かれていないことがわかります。
この3変数だけでは上手くクラスを分類することはできないと思われます。


# おわりに
今回と前回でplotlyを使用してデータを可視化してきました。
使用したのはほんの一部なので、色々試してみると面白い発見があるかもしれません。