2023/12/03
ChatGPT4を使う(8)
前回の続きです。クレジットカードで決済をした場合の月毎の支出を集計する話です。前回、集計に用いるデータセットの作成まで終わりましたので、今回はデータの可視化と分析です。今回もChatGPT4にプログラムを書いてもらい、マイナー修正して使える形にしました。2.データの可視化
前回作成したデータセットを添付して、以下のプロンプトを投げました。ChatGPT4のData Analysisを用いました。



日本語表記に対応するため、結局、自身のローカルPC(Mac Mini)のPython環境で、今回GPT4が作成してくれたコードを動かしました。コードは19行目の日本語フォントの設定を20行目に修正するだけで他に修正する箇所はありませんでした。すごいですね。
import pandas as pd描画結果は以下の通りで、楽にグラフを作成することができました。
import matplotlib.pyplot as plt
# Load the data from the uploaded CSV file
file_path = 'Card_statement.csv' # CSVファイルのパスを適宜変更してください
card_data = pd.read_csv(file_path)
# Convert the '利用日' column to datetime
card_data['利用日'] = pd.to_datetime(card_data['利用日'])
# Extract year and month for grouping
card_data['年月'] = card_data['利用日'].dt.to_period('M')
# Group by year-month and user, and sum the amounts
monthly_usage = card_data.groupby(['年月', '利用者'])['利用金額'].sum().unstack(fill_value=0)
# Set the font to support Japanese characters
# Note: The font setting may need to be adjusted based on your environment
#plt.rcParams['font.family'] = 'IPAexGothic'
plt.rcParams['font.family'] = 'Hiragino Sans'
# Create a stacked bar plot
plt.figure(figsize=(12, 6))
monthly_usage.plot(kind='bar', stacked=True, ax=plt.gca())
plt.title('月別利用金額(利用者別積み上げ)')
plt.xlabel('月')
plt.ylabel('利用金額')
plt.xticks(rotation=45)
plt.legend(title='利用者')
plt.tight_layout()
# Show the plot
plt.show()

3.データの分析
次に同じデータセットについて、以下の質問を投げかけました。一つ目のプロンプトは「本人」の利用額ベスト10の質問です。





ちなみに、同じ内容をPandasAIで行わせても結果は同じでした。OpenAIのGPT4用APIのアカウントを私自身、所持していないので、おそらくGPT3.5でもPandasAIで正しい回答が導き出せているのでしょうね。PandasAIのプログラムは以下の通りです。
import pandas as pd15行目の回答はこんな感じです。GPT4のData Analysisのものと同じ回答でした。
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
# Instantiate a LLM
OPENAI_API_KEY = "my openai key"
llm = OpenAI(api_token=OPENAI_API_KEY)
pandas_ai = PandasAI(llm)
df = pd.read_csv('Card_statement.csv') # dataset read
column_names = df.columns.tolist()
print(column_names)
# 利用者が「本人」のデータについて、利用額が多い順に10件出力してください。
pandas_ai(df, prompt='利用者が「本人」のデータについて、利用額が多い順に10件出力してください。')
# 利用金額を本人、家族、ETCに分けて月単位で集計し出力してください。
pandas_ai(df, prompt='利用金額を本人、家族、ETCに分けて月単位で集計し出力してください。')
# 利用金額を「利用店名・商品名」毎に集計して、利用金額が多い順に10件出力してください。
pandas_ai(df, prompt='利用金額を「利用店名・商品名」毎に集計して、利用金額が多い順に10件出力してください。')

最後に、Bing ChatとGoogle Bardも試しましたが、双方NGでした。
Bing Chat: 文字数4000文字制限で、添付データすべてを読み込めずにNG。土俵に上がれず・・。
Google Bard: プロンプトは受け付けたので、文字数制限はパスしたが、得られた回答がデタラメで使えない。
今回、ChatGPT4のData Analysisでデータセットを食わせて、可視化や分析ができることがよく分かりました。どれだけ、高度のことができるのか、今後さらに触って確認してみようと思いました。