[ChatGPT Hack] Code Interpreter で訪日外客者数のデータ分析と PowerPoint のファイルを作ってみた

# 背景

Code Interpreter の可能性を探るシリーズです。今回はデータの分析を取り扱います。Python のコードと標準的なパッケージは入っているので、やれるのはわかっています。後はどこまで出来るのか?つまり**教養としての教育**どまりなのか、**実ビジネス**でも使えるのか?という可能性を探りたいわけです😊

データの分析の基礎情報については、こちらの Blog が大変参考になります。私も良くデータ分析の体験会・演習・ハンズオンなどで使っているコンテンツになります。

http://aka.ms/pbihol

データの分析の現場は、いつでも整形済みのデータを相手にできるわけじゃないです。というか、それは寧ろレアケースで。というか私そんなデータを1度も見たことはないです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/654d6be6-2612-a95e-6fd7-2852d160652f.png)

全部を一度に検証しきれないので。
技術的な難易度の低いところから検証していきます。

ここでのチャレンジは以下とします。

- 構造化データのデータクリーニングをどこまでやってくれるのか?
- データを理解するための基礎統計が出来るのか?
- 自分の見つけたデータで、どこまで分析をしてくれるのか?
- 最適なグラフを選んでくれるのか?
- 良いサマリーの文章を作成できるのか?
- 結果をPowerPoint のファイルに差し込めるのか?

くどいですが、**教育**や**ビジネス**で使えるレベルなのかに常に気を払ってみていきましょう。

# リソース

私の ChatGPT の Prompt 履歴。失敗も含めて晒します😊:

https://chat.openai.com/share/ad4c0fbb-6087-4d57-8f88-c6518d1a8669

Prompt 文字列。皆さんがコピペしやすいように:
https://github.com/dahatake/ChatGPT-Prompt-Sample-Japanese/blob/main/%5BPlugin%5D%20Code%20Interpreter/%E8%A8%AA%E6%97%A5%E5%A4%96%E5%AE%A2%E6%95%B0%E3%81%AE%E5%88%86%E6%9E%90.md

# 注意点

いつもの通りですけど。

:::note alert
注意点:
- ご自身のデータの投入は避けたほうがいいです。アップロードしたファイルについての扱いがどうなっているのかの文章を探せていないからです。
- sandbox 環境なので、アップロードしたファイルや作成したファイルは、セッションが終了すると削除されます。
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/79f8142d-bddc-9fc1-8389-6abec69d45ac.png)

:::

# 必要なもの

- ChatGPT の有償版が必要です
- Code Interpreter の Plugin の有効化

# 手順

## 0. Code Interpreter の有効化

ここでは、もう説明しませんよ😊

## 1. データの取得

以下よりファイルをダウンロードします。 ここでは「各国・地域別の推移」を選択します。

https://statistics.jnto.go.jp/graph/#graph--inbound--travelers--transition

ダウンロードしたファイルはこちらです。

https://github.com/dahatake/ChatGPT-Prompt-Sample-Japanese/blob/main/%5BPlugin%5D%20Code%20Interpreter/data/%E8%A8%AA%E6%97%A5%E5%A4%96%E5%AE%A2%E6%95%B0%E3%81%AE%E5%88%86%E6%9E%90.csv

## 2. ファイルのアップロード

いつもの通りで😊

## 3. データの理解。基礎解析

まずはアップロードしたのデータがどんな内容なのかを見ていきます。

Prompt:
```cmd
データ分析のプロフェッショナルとして振舞ってください。
このデータを分析します。基礎解析をしてください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/4f1d1727-79e5-78a7-7e0e-9d152408a3b4.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/c8939868-d27b-c90e-f811-78fe01c5bd7a.png)

最初の数行でも無いよりは理解が全然進みますね!


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/c8af7354-1b98-b46c-525d-0b85b9ce77dc.png)

マジですか!
この網羅性! まずデータの列が文字列などで**カテゴリー**として扱うものなのか? それとも数字や時間などで**数値**として扱えるものなのか? この分析項目を**説明**してくれているとともに、分析を実行する Python のコードを作成して、実行してくれています😍

神すぎますよね...


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/3ad6fe67-7d4d-eb20-db70-9de997965fe2.png)

もうね。**感動**しかないです❤️
データ型を揃えるための**クレンジング | クリーニング**を行ってくれています!

そして、エラーになったんですよ。途中で。「カンマ」が入っていた!「NaN」がはいっていた! これもよくあります😊

で、そのための方法は幾つかあります。特定列の平均値あるいは中央値に置き換えたり。あるいは対象データが少量だった場合には行ごと削除したり、と。

で、その対象方法である**行の削除** を提案してきています!

ちなみに、初回の Prompt でここまで実行して、説明文を作成してくれているんです。

もう、畠山無しで、結構できちゃうんじゃね? と思ってきました😎
全然いいと思います。私、皆様全員とお仕事ご一緒できるわけじゃないと思うので...

じゃ、不要行の削除をやってもらいましょう。
Prompt:
```cmd
はい、お願いします。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/0e53a18d-d81d-442c-33ce-eec2a04ca55b.png)

見事です。
再度、作成したプログラムのコードだと不足があってエラーになっていますね。

途中のコードを表示させてみますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/0e5b45db-bf65-1e83-c62a-6c148577f571.png)

因みに、プログラムコードに間違いというかバグがあるんじゃなくて。変なデータがあったので、追加の処理が必要になっているんです。これがデータの分析の現場で、何度も発生します。

ご自身は、この Python のエラーメッセージを読んで、ChatGPT + Code Interpreter よりも速く修正できるでしょうか?😎

データの型変換が終わって、使える状態になりましたね!

で、**基礎集計の結果**を表示してくれています!

これを作成するための Python のコードも見たほうがいいですよ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/26ddcf2a-43dd-fc0e-1b18-b11af6a757f4.png)

そう、これが見たかった😊

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/c4affeab-54ad-df13-c054-0cce143647e0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/c3472c25-12d3-96a6-3c96-cd8d3e4f34e4.png)

で、データの中身を。

国が6個しかないのですね。このデータは。つまり訪日外客者数の「一部分」しか扱ってないことがわかります。上位6か国なので、いいのかもしれませんが。**7位以下の国で増加傾向にあるものは、今回は対象外である**、という事を、この基礎集計から理解することが大事です。

## 3. データの分析の実行

網羅性をみたいので、その可能性を探るために、思考停止を演じてみますね。

Prompt:

```cmd
はい、考えられる全ての分析をしてください。それぞれについてグラフを作成してください。特に他と異なる傾向や割合を示すものについては、その説明文も作成してください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/5d1d3214-99c1-f548-a36a-d57dcd3abbb7.png)

すげぇ!
まずは時系列での増減を見てくれています。

**4つもの実行プラン**を作成してくれているところが神です。

- 投入データの列名は、もともと英語なんです!
- こちらから一切指定をしていません。つまり、ここまでのテキスト文字列から、分析する価値のある重要なサマリー文を作成したのかと推察をしています。GPT-4ですから!

そして1つめの「年別の訪日外国人観光客数の推移」のグラフを作成してくれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/e29ffbc3-224a-c2e8-211a-eafe5659d0b6.png)

マジか!
この作文は「数字」の羅列から、GPTが作文をする能力のある事を教えてくれます。マジですか!😍


2つ目のテーマ。「訪問目的別の訪問者数の割合」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/ca406e90-6c73-261c-2342-fca0bc757a33.png)

1つ目と2つ目が出来た段階で。後はソフトウェアとコンピューターの処理能力ですから。10個でも特徴があるようであれば、行けるかもしれません。

3つ目のテーマ。「訪問目的別の訪問者数の割合」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/1166b3c9-16cc-4def-405c-b163228bd053.png)

4つ目のテーマ。「各国・地域からの訪日外国人観光客数の成長率」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/0d4e0858-4244-c696-c8c9-d913607b2074.png)

何と、最後に要約まで。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/f732880c-eb29-42ad-39cc-9d9441545add.png)

これでいいんじゃね!!! と思っちゃいますよね。まずは概要を理解するのであれば。

## 4. 分析結果から PowerPoint のプレゼンテーションファイルの作成

Code Interpreter の環境には**python-pptx**がインストールされています。これがあるがゆえに、PowerPoint のファイル作成が出来ます。マジステキ!

Prompt:
```cmd
### 指示 ###
以下のプレゼンテーション構成とpython-pptxを使用して、PowerPointのスライドを作成してください。

プレゼンテーション構成:###
Step1: 全体のサマリーとFAQを作成して、最初のスライドに追加する
Step1: 特徴的な項目ごとに、スライドを作成する
Step2: それぞれのスライドはタイトル、データの概要説明、グラフの画像で構成する
Step3: それぞれのスライドのタイトル、データの概要説明の文章を作成する
Step4: 作成したグラフを画像として、それぞれのページに追加する
###
```

- Step1 が2つあって、間違えているんですが。ここが LLM というか 機械学習のいいところで。揺らぎを吸収してくれるんです😅

まずはテキスト文字列ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/13f43e17-fc55-e0f8-c8fc-645ba4923dbc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/6c082de6-1de8-4d5a-1be5-90f1343e9dff.png)

そして、図としてのグラフ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/330996be-86d6-ec11-e66b-eacb96e932ab.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/c02c3488-8845-b572-1aea-723605f63ed0.png)

PowerPoint のファイル作成までは行きませんでした。作業の続行を指示しましょう。

Prompt:
```cmd
作業を続けてください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/2489c760-03ea-f836-f7eb-2d7d7d94e0bc.png)

PowerPoint のファイルを作成してれました!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/39d27d34-1870-1c7f-c00a-2e28e4abe403.png)

ファイルはこちらからダウンロードできます。
https://github.com/dahatake/ChatGPT-Prompt-Sample-Japanese/blob/main/%5BPlugin%5D%20Code%20Interpreter/output/visitor_analysis_presentation.pptx

レイアウトはいまいちですが。でもこの程度ならプレゼンテーションまで仕上げるのは短い時間で済むと思います。

# まとめ

いかがでしたか?
BIツールであれば、複数のグラフでのハイライトをしたりといった、もっとその場で気づいた点への対応がしやすいです。今回はそこまでは行きませんが。基礎的な分析と、その結果の作成。しかもPowerPointのファイルの作成までやってくれました。
**作業時間**は、**10分程度**でしょうか。

- 圧倒的に高い網羅性。抜け漏れを減らせる可能性が高い
- ある程度丸投げして、思考停止に陥っても、サポートしてくれる
- Python 知らなくても、出来る
- Excel やBI ツールを使えなくても、出来る
    - ちなみに、WordやExcelのファイルも作成できます。皆さんの会社・組織に必要なファイルを作成してください。

教育やビジネスの現場の多くのシナリオで使える可能性が高いです。
課題は、入力ファイルの扱いですね。機微なデータが多い場合は、やはり Microsoft 365 Copilot が期待の星になりますね!**フォーマットを整えてくれる**ことも出来そうですしね!

https://news.microsoft.com/ja-jp/2023/03/17/230317-introducing-microsoft-365-copilot-your-copilot-for-work/

これだけじゃなく、はやく ChatGPT Plugin が、各種 Copilot エコシステムで動くようになってもらいたいですね...

コンピュータがお嫌いな方でも。データの分析をお任せできる日が到来したといっていいでしょう!