【kaggle】データの視覚化 - Hello, Seaborn【備忘翻訳】

# はじめに
当記事はkaggleのLearnの[Intro to Machine Learning](https://www.kaggle.com/learn/intro-to-machine-learning)の[Hello, Seaborn](https://www.kaggle.com/code/alexisbcook/hello-seaborn)を翻訳して備忘としたものです。
拙い英語力なので間違い等あればご指摘いただけたらと思います。

まとめ:[【kaggle】翻訳記事まとめ【備忘翻訳】](https://qiita.com/leafeon00000/items/71e57af5b2d9b0b7c846)
前:[【kaggle】中級機械学習 - データリーク【備忘翻訳】](https://qiita.com/leafeon00000/private/5745f0a4678469cd8dca)
次:[【kaggle】データの視覚化 - 折れ線グラフ【備忘翻訳】](https://qiita.com/leafeon00000/private/6ff5e946e56cc42803e0)

:::note warn
当記事に含まれるコードはkaggle内のnotebook内で正常に動作します。動作を試したい場合はkaggleのnotebookで試してください。
:::

----

# Hello, Seaborn
データ視覚化のためのコーディング入門

## データ視覚化へようこそ！
このハンズオンコースでは、強力でありながら使いやすいデータ可視化ツールである[seaborn](https://seaborn.pydata.org/index.html)を使用して、データ視覚化を次のレベルに引き上げる方法を学びます。seabornを使用するには、人気のプログラミング言語であるPythonでコードを書く方法についても学びます。
* このコースはプログラミング経験のない人を対象としており、
* 各チャートは短くてシンプルなコードを使用しているため、seabornは他の多くのデータ可視化ツール(Excelなど)よりもはるかに高速で簡単に使用できます

したがって、コードを1行も書いたことがなく、今日からより高速で魅力的なプロットを作成するために***最低限***の知識を習得したいのであれば、ここが最適な場所です。作成するチャートの一部を除いてみたい場合は以下の図をご覧ください。

![54BoIBW.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/a6b288fc-4010-5dcd-a8c1-1d80f30ad9e4.png)

## コーディング環境
このページを素早く上下にスクロールしてみましょう。次のような様々な種類の情報があることに気が付くでしょう。([実際のkaggleページ](https://www.kaggle.com/code/alexisbcook/hello-seaborn)を参照してください)
1. **text** (今読んでいるテキストのように)
1. **code** (コードセルと呼ばれる灰色のボックス内に書かれています)
1. **code output** (対応するコードのすぐ下に常に表示される実行コードからの出力結果)

これらのページを**Jupyter notebooks**(または、単に**notebook**と呼ばれることが多い)と呼び、コース全体でこれらを操作します。notebookの実際の例を以下の画像に示します。

![ccJNqYc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/9ecda9d8-7c31-a4b0-a124-d65f80b5e180.png)

今読んでいるnotebookでは、すでに全てのコードが実行されています。すぐに、独自のコードを記述して実行できるnotebookを操作できるようになります。

```python
import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
print("Setup Complete")
```

```console:console
Setup Complete
```

## データのロード
このnotebookでは、アルゼンチン(ARG)、ブラジル(BRA)、スペイン(ESP)、フランス(FRA)、ドイツ(GER)、イタリア(ITA)の6か国の過去のFIFAランキングデータセットを使用します。データセットはCSVファイルとして保存されます。EXcelでCSVファイルを開くと、日付ごとに1行、国ごとに1列が表示されます。

![W0E7GjV.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/f7dc918f-e3f9-c3cc-ecf1-0135f03eb3ef.png)

データをnotebookにロードするには、以下のコードセルに実装されている2つの異なる手順を使用します。
* まずデータセットにアクセスできる場所(またはファイルパス)を指定してから、
* ファイルパスを使用してデータセットの内容をnotebookに読み込みます。

```python
# Path of the file to read
fifa_filepath = "../input/fifa.csv"

# Read the file into a variable fifa_data
fifa_data = pd.read_csv(fifa_filepath, index_col="Date", parse_dates=True)
```

![I6UEDSK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/3c77c757-cd98-0528-d7ca-d744ad668220.png)

上記のコードセルには4つの異なる行があることに注意してください。

### コメント
ポンド記号(#)が先頭についている2行は、テキストが薄く斜体で表示されています。

これらの行は両方とも、コードの実行時にはコンピューターによって完全に無視され、コードを読む人間がすぐに理解できるようにするためにのみ表示されます。これらの2行は**コメント**と呼ばれ、コードが容易に解釈可能になるように書いていくことをお勧めします。

### 実行可能コード
他の2行は**実行可能コード**、つまりコンピューターによって実行されるコードです(この場合はデータセットを見つけて読み込むコード)。

最初の行は、`fifa_filepath`の値をデータセットにアクセスできる場所に設定します。この場合、ファイルパス(引用符で囲んで)を指定しました。この実行可能コード行のすぐ上のコメントに、それが何を行うかの簡単な説明が記載されています。

実行可能コードの2行目は、`pd.read_csv`にてデータセット内の全ての情報が含まれるように`fifa_data`の値を設定しています。その直後に、カッコで囲まれ、カンマで区切られた3つの異なるテキスト(上の画像では下線が引かれています)があります。これらは、データセットがnotebookに読み込まれるときの動作をカスタマイズするために使用されます。
* `fifa_filepath` - データセットのファイルパスは常に最初に指定する必要があります。
* `index_col="Date"` - データセットをロードするときに、インデックスとして使用する列を指定します。`index_col`の値を最初の列の名前(EXCELでファイルを開いたときにセルA1にある`"Date"`)に設定します
* `parse_dates=True` - notebookはラベルを(数字やテキストではなく)日付として認識するようになります

これらの詳細は、実践的な演習で独自のデータセットをロードする機会があれば、すぐに理解できるようになります。

> 現時点では、両方のコード行を実行した結果、`fifa_data`を使用してnotebookからデータセットにアクセスできるようになったことを覚えておくことが重要です。

ところで、これらのコード行には出力がないことに気が付いたかもしれません(一方、notebookで先ほど実行したコード行は、出力として「Setup Complete」 を返しました)。これは想定される動作です。すべてのコードが出力を返すわけではなく、このコードはその好例です。

## データを調査する
ここで、`fifa_data`のデータセットを簡単に確認して、適切にロードされているかどうかを確認します。

次のように1行のコードを記述して、データセットの最初の5行を出力します。
* データセットを含む変数(この場合は`fifa_data`)から始まり、次に
* `.head()`を続けます

以下のコード行で確認できます。

```python
# Print the first 5 rows of the data
fifa_data.head()
```

| |ARG|BRA|ESP|FRA|GER|ITA|
|-----|-----|-----|-----|-----|-----|-----|
|Date| | | | | | |
|1993-08-08|5.0|8.0|13.0|12.0|1.0|2.0|
|1993-09-23|12.0|1.0|14.0|7.0|5.0|2.0|
|1993-10-22|9.0|1.0|7.0|14.0|4.0|3.0|
|1993-11-19|9.0|4.0|7.0|15.0|3.0|1.0|
|1993-12-23|8.0|3.0|5.0|15.0|1.0|2.0|

最初の5行が、上記のデータセットのイメージ(Excelでどのように表示されるかを確認したときのイメージ)と一致していることを確認します。

## データをプロットする
このコースでは、様々なプロットタイプについて学習します。多くの場合、チャートを作成するのに必要なコードは1行だけです。

内容を少しだけ確認するには折れ線グラフを生成する以下のコードを確認してください。

```python
# Set the width and height of the figure
plt.figure(figsize=(16,6))

# Line chart showing how FIFA rankings evolved over time 
sns.lineplot(data=fifa_data)
```

```console:console
<AxesSubplot:xlabel='Date'>
```

![__results___7_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/922d8de4-3ce8-970e-5fc5-e1fc72e2becf.png)

このコードはまだ意味をなさないかもしれませんが、今度のチュートリアルでさらに詳しく学習します。とりあえず、最初の演習に進み、コーディング環境を自分で試してみる機会を作りましょう！