見出し画像

v0のPythonで日本語表示!ーGoogleサイトで作るグループウェア(196)ー

🙇🏻いつも、Googleサイトで作るグループウェアを見ていただき、ありがとうございます!

この記事を読んで欲しい方

企業DXや学校DXの進め方に悩んでいる方
クラウドアプリの導入に悩んでいる方
自分だけのGoogleサイトを作ってみたい方
AIの利用に悩んでいる方

①v0のPythonで日本語表示!

 みなさんこんにちは。
 v0使ってますか?
 前回は、v0でもpythonが使えるようになったことをお伝えしました。
 ただ、まだ吐き出すコードが不安定であり、日本語が文字化けしたり、色々な不都合がおきますが、今回はそれをプロンプトで修正していきます。

②一連のプロンプト

 まず、前回使ったTESTS.CSVをv0に添付してください。その後、以下のプロンプトを実行します。
「Pythonでライブラリのインストールを分析コードの最初に入れてください。
最初にpipでjapanaize-matplotlibをインストールします。
CSVの文字コードはUTF8です。
pd.set_option('display.unicode.east_asian_width', True)を設定してください。
グラフを作成するコードを作って実行してくださいますか?」
 そして、以下が出力されたパイソンコードです。

import sys
import subprocess

# 必要なライブラリをインストール
subprocess.check_call([sys.executable, "-m", "pip", "install", "pandas", "matplotlib", "japanize-matplotlib", "requests"])

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
import requests
from io import StringIO

# CSVファイルのURLを指定
url = "https://hebbkx1anhila5yf.public.blob.vercel-storage.com/TESTSS2-qMtJpgmG0JMoxe7K1vsCbJO0vA2DEN.csv"

# URLからCSVファイルの内容を取得
response = requests.get(url)
csv_content = response.content.decode('utf-8')

# CSVデータを読み込む
df = pd.read_csv(StringIO(csv_content))

# 日付列をdatetime型に変換
df['日付'] = pd.to_datetime(df['日付'])

# データの基本情報を表示
print(df.info())
print("\nデータの先頭5行:")
print(df.head())

# 科目ごとの平均点を計算
subject_avg = df.groupby('科目')['点数'].mean().sort_values(ascending=False)

# グラフの作成
plt.figure(figsize=(10, 6))
subject_avg.plot(kind='bar')
plt.title('科目別平均点')
plt.xlabel('科目')
plt.ylabel('平均点')
plt.xticks(rotation=45)
plt.tight_layout()

# グラフを保存
plt.savefig('subject_average_scores.png')
print("\n科目別平均点のグラフを 'subject_average_scores.png' として保存しました。")

# 日付ごとの平均点の推移
daily_avg = df.groupby('日付')['点数'].mean()

plt.figure(figsize=(12, 6))
daily_avg.plot(kind='line', marker='o')
plt.title('日付ごとの平均点の推移')
plt.xlabel('日付')
plt.ylabel('平均点')
plt.xticks(rotation=45)
plt.tight_layout()

# グラフを保存
plt.savefig('daily_average_scores.png')
print("日付ごとの平均点の推移グラフを 'daily_average_scores.png' として保存しました。")

# 表示オプションを設定
pd.set_option('display.unicode.east_asian_width', True)

# データフレームの表示
print("\n科目別平均点:")
print(subject_avg)

print("\n日付ごとの平均点:")
print(daily_avg)

③足りない外部ライブラリのインストール

 ライブラリのインストールを分析コードの最初に入れてください。
最初にpipでjapanaize-matplotlibをインストールします。
 この部分が、matplotlibのグラフ上での文字化けを解消させる部分です。
 足りない外部ライブラリをv0のpython実行環境にインストールさせます。
 そして、以下のコードが出力されました。(コードは、その都度変わることがあります。不安定ですね・・・)

import sys
import subprocess

# 必要なライブラリをインストール
subprocess.check_call([sys.executable, "-m", "pip", "install", "pandas", "matplotlib", "japanize-matplotlib", "requests"])

④ライブラリのインポート

 コードの最初のライブラリのインポートはこの部分です。japanize_matplotlibもきちんと動きます。

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
import requests
from io import StringIO

⑤CSVファイルの読み込み

CSVの文字コードはUTF8です。
 この部分がCSVをUTF-8で読み込ませる部分です。(Windowsの場合はShift-JISになるかもしれません。)
 添付したTESTSS.csvのURLが作成され、UTF-8でデコードされ、pd.read_csvでデータフレーム型のdfに読み込まれます。
 ちなみにデータフレームとは、表計算のシートのようにデータを一括で格納できる変数の型です。
 データ分析が得意な言語は、データフレーム型を持っています。(R言語など)

# CSVファイルのURLを指定
url = "https://hebbkx1anhila5yf.public.blob.vercel-storage.com/TESTSS2-qMtJpgmG0JMoxe7K1vsCbJO0vA2DEN.csv"

# URLからCSVファイルの内容を取得
response = requests.get(url)
csv_content = response.content.decode('utf-8')

# CSVデータを読み込む
df = pd.read_csv(io.StringIO(csv_content))

⑥Outputコンソールの文字化け対策

 Outputで出力されるコンソール内の文字化け対策、実際にはpandasライブラリのデータフレーム内の日本語文字化け対策には、pd.set_option('display.unicode.east_asian_width', True)を設定します。

# 表示オプションを設定
pd.set_option('display.unicode.east_asian_width', True)

⑦グラフ作成

pltの部分でmatplotlib.pyplotライブラリでグラフを作成しています。

# グラフの作成
plt.figure(figsize=(10, 6))
subject_avg.plot(kind='bar')
plt.title('科目別平均点')
plt.xlabel('科目')
plt.ylabel('平均点')
plt.xticks(rotation=45)
plt.tight_layout()
# 日付ごとの平均点の推移
daily_avg = df.groupby('日付')['点数'].mean()

plt.figure(figsize=(12, 6))
daily_avg.plot(kind='line', marker='o')
plt.title('日付ごとの平均点の推移')
plt.xlabel('日付')
plt.ylabel('平均点')
plt.xticks(rotation=45)
plt.tight_layout()

 グラフの保存はpngで保存されています。保存場所は不明ですが一時ファイルの様です。

# グラフを保存
plt.savefig('subject_average_scores.png')
print("\n科目別平均点のグラフを 'subject_average_scores.png' として保存しました。")
# グラフを保存
plt.savefig('daily_average_scores.png')
print("日付ごとの平均点の推移グラフを 'daily_average_scores.png' として保存しました。")

⑧実行(Run Code)

まず、チャット画面のSTOPが消えてからRuncodeボタンを押してください。ただし最初はエラーになる可能性が高いので、再度Output画面のメニューの右側にあるRunを押して再実行してください。
 うまくいくと、以下のような画面が出てきます。
 まだ、エラーが起きやすいコードを吐きますので、その時は②のコードにまるっと入れ替えるとうまく動くはずです。

⑨おわりに

 このように、v0の出力するパイソンコードはまだまだ不安定です。
 とくに外部ライブラリのインストールと、必要なライブラリのインポートの部分のコード出力が安定せず、エラーが起きやすくなっています。
 今回、グラフやコンソールの日本語文字化け問題もとりあえず解決できました
 これが安定してきたら、Reactと組み合わせることで、かなり強力なデータ分析Webアプリが作れるようになるでしょう。


いいなと思ったら応援しよう!

この記事が参加している募集