
ChatGPTのNoteableプラグインに任意のCSVを読み込ませて処理する方法(ChatGPT部, 大城)
こんばんは、ChatGPT部(チャットGPT部)の大城です。Noteableにファイルをアップロードしてあれこれ分析してもらう処理が結構便利でしたので、取り急ぎ記事化します。
Noteableプラグインについておさらい
こちら、Google ColabのようなWebノートブックのサービスで、無料で利用ができるのがNoteableなのですが、ChatGPTのプラグインとしても提供されています。
過去記事だとこのあたりでしょうか。
前回は 「APIでデータ取得->CSV書き込み」の実験をしてみましたが、今回は「CSVアップロード->CSVを読み込んで分析」を試してみたいと思います。
アップロードされたCSVをChatGPTが読むには
ChatGPTは通常、外部のファイルは読めず、プラグインを使ってもWebアクセス可能な場所のファイルしか読めません(Web Pilot等を利用など)。ただ、毎回Web上にファイルを設置するのも面倒ですよね。(一般公開したく無いファイルなどは特に)
今回は
「予め本家本元のNoteableにファイルをアップロードして、プロジェクトを指定してそこからCSVファイルを読み込ませる」というデモをしたいと思います。
アップロードするファイルの調達
まずはChatGPTを使わずに、本家のNoteableでプロジェクトを作成しましょう。今回データセットとしては国勢調査のこちらのデータを使ってみます。

ここの1番のCSVをダウンロードすると、「c01.csv」というファイルが得られます。中身としてはこんな感じのデータです。

本家のNoteableでプロジェクトを作成
ChatGPTで先にプロジェクトを作っても良いかもしれませんが、今回は先にNoteableでプロジェクトを作成して、後からそのプロジェクトをChatGPTで読み込む形を取ろうと思います。
本家のNoteableはこちら (要無料アカウント登録)
なんだかんだやったのち、プロジェクトを新規で作成します。今回は「20230619_test_project」とでもしましょうか。

作成したプロジェクトを開き、Uploadから先ほどのファイルを選択すると、プロジェクトフォルダにファイルがアップロードされます。

Uploadボタンから次の画面へ。その後ファイルをドラッグ&ドロップでアップロードすると、以下の画面。

無事、ファイルアップロードが確認できました(c01.csv)

ちゃんとプロジェクトのファイル一覧にも載ってますね。
ようやく出番:ChatGPTからプロジェクトを呼び出してnotebookの作成
ようやく出番です。先ほどのプロジェクトの画面でURLを取得すると、以下のようなURLが得られます。(privateモードのため、私以外は下記は開けませんが後参考まで)
https://app.noteable.io/p/4897e565-9f55-4364-9551-a7630e436403/20230619_test_project
この状態をChatGPTに指定して、notebookを作ってもらいます。
依頼のやり取りは以下。

指定されたnotebookのURLを開いてみましょう。

notebookが先ほどのプロジェクトに作成されました。
また左の同じフォルダに「c01.csv」も見えています。
次に、ファイルアクセスをしてみます。
ChatGPTからnotebookと同じディレクトリにあるCSVファイルを読み込み
では同じ階層にあるCSVファイルの冒頭5行を読み込ませてみましょう。
試してみたところ、文字コードの指摘が。

shift_jis指定で再度開き直してもらいます。

バッチリですね。ここまでできればもうあとは煮るなり焼くなり自由、というところではないでしょうか。
余談:それでも前処理は大事
試しにChatGPTに対し、先ほどのCSVファイルを読み込んで、ふわっとした形で分析依頼を投げてみました・・が、どうやら - という文字があるようですね。該当レコード見てもらうと1945年の沖縄・・。終戦の年、国勢調査どころではなかったのでは。

他にもNaNがあったりと、やはり前処理は大事だなぁという所感。
流石にこの辺りはちょっとローデータを見てみないと怖くて任せられないですね。

まぁひとまず総人口でプロット依頼(ただし、沖縄のデータは除外しているのでやや不自然かも?)

他にも色々できそうですが、ひとまずアップロードしたファイルを可視化できたので良しとしましょう。
所感:ファイルの読み込み処理で夢広がる
ChatGPTには通常のプロンプトベースではトークン数に上限があるため、大量のデータの処理は不向きでした。が、今回Noteableによるプログラミングの実行やファイルアップロードによる分析データの連携など、少しずつですが「ChatGPTに仕事を依頼しやすい環境」が整いつつあるように思います。
ただ一方で、ここに来てもデータサイエンティストが昔から言われる「前処理8割」の呪縛からはおそらく逃れられ無いのでは、とも思っています。
(前処理の自動化に成功した事例がありましたらぜひ情報お寄せください・・)
ということで今日は本家のNoteableにCSVファイルをアップして、ChatGPTから操作する、という記事でした。
皆様もどうぞ良いChatGPTライフを・・! (大城)