Databricksアシスタントでコードの生成はできるのは嬉しいのですが、個人的には「手元にあるデータのEDA(Explanatory Data Analysis)をクイックにできないかな」と思ってます。
なので、試行錯誤ですが、データの可視化を含むEDAをアシスタントの助けを借りてどこまでできるか探ってみます。
注意
大規模言語モデルの性質上、常に同じ回答、常に正しい回答が得られるわけではありません。必ず回答の動作を確認して活用してください。
Unity Catalogのテーブルの可視化
難易度低そうなところから。
テーブルtakaakiyayoi_catalog.japan_covid_analysis.covid_casesを可視化したいので、Pythonコードを作成してください。
import seaborn as sns
import matplotlib.pyplot as plt
# テーブルをSparkデータフレームにロード
df = spark.read.table('takaakiyayoi_catalog.japan_covid_analysis.covid_cases')
# データフレームをPandasデータフレームに変換
pandas_df = df.toPandas()
# エリアごとの感染者数をプロット
sns.barplot(x='Area', y='Cases', data=pandas_df)
plt.xticks(rotation=45) # エリアの名前を45度回転して表示
plt.xlabel('Area')
plt.ylabel('Cases')
plt.title('COVID-19 Cases per Area')
plt.show()
豆腐になってしまいました…。こちらですね。
%pip install japanize-matplotlib
dbutils.library.restartPython()
import japanize_matplotlib
Databricksアシスタントはこれまでのやりとりを覚えているので、追加でお願いします。
上のコードでは日本語が化けてしまうので直してください。
直りましたが、これはjapanize-matplotlib
がインストールされていることを前提にしてます。
japanize_matplotlibのインストール方法を教えてください。
なるほど。一度チャットセッションをクリアして最初からトライしてみます。
テーブルtakaakiyayoi_catalog.japan_covid_analysis.covid_casesを可視化したいので、Pythonコードを作成してください。matplotlibでは日本語が化けてしまうので最初に必要なライブラリをインストールするようにしてください。
%pip install japanize_matplotlib
import japanize_matplotlib
import seaborn as sns
import matplotlib.pyplot as plt
# テーブルをSparkデータフレームにロード
df = spark.read.table('takaakiyayoi_catalog.japan_covid_analysis.covid_cases')
# データフレームをPandasデータフレームに変換
pandas_df = df.toPandas()
# エリアごとの感染者数をプロット
sns.barplot(x='Area', y='Cases', data=pandas_df)
plt.xticks(rotation=45) # エリアの名前を45度回転して表示
plt.xlabel('エリア')
plt.ylabel('感染者数')
plt.title('エリア別 COVID-19 感染者数')
plt.show()
別のグラフを描かせる
都道府県別の感染者数比率を表す円グラフをプロットしたい
これですと、都道府県名の列が「都道府県」になってしまい、うまくいきませんでした。実際にはPrefectureです。なので、
都道府県別の感染者数比率を表す円グラフをプロットしたい。都道府県はPrefecture列に入っています。
import pandas as pd
import matplotlib.pyplot as plt
# テーブルをSparkデータフレームにロード
df = spark.read.table('takaakiyayoi_catalog.japan_covid_analysis.covid_cases')
# データフレームをPandasデータフレームに変換
pandas_df = df.toPandas()
# 都道府県別の感染者数を集計
cases_by_prefecture = pandas_df['Prefecture'].value_counts()
# ラベルとして都道府県を取得
labels = cases_by_prefecture.index.tolist()
# 感染者数の割合を取得
sizes = cases_by_prefecture.values.tolist()
# 円グラフを作成
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('都道府県別COVID-19感染者数比率')
plt.axis('equal') # アスペクト比を揃える
plt.show()
都道府県別の感染者数比率を表す円グラフをプロットしたい。都道府県はPrefecture列に入っています。感染者数はCasesに入ってます。
import pandas as pd
import matplotlib.pyplot as plt
# テーブルをSparkデータフレームにロード
df = spark.read.table('takaakiyayoi_catalog.japan_covid_analysis.covid_cases')
# データフレームをPandasデータフレームに変換
pandas_df = df.toPandas()
# 都道府県別の感染者数を集計
cases_by_prefecture = pandas_df.groupby('Prefecture')['Cases'].sum()
# ラベルとして都道府県を取得
labels = cases_by_prefecture.index.tolist()
# 感染者数の割合を取得
sizes = cases_by_prefecture.values.tolist()
# 円グラフを作成
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('都道府県別COVID-19感染者数比率')
plt.axis('equal') # アスペクト比を揃える
plt.show()
ちなみにplotly使えば文字化けに悩むことなかったですね。
takaakiyayoi_catalog.japan_covid_analysis.covid_casesをplotlyで可視化したいので、Pythonコードを作成してください。
# 必要なライブラリをインポート
import plotly.express as px
import pandas as pd
# データを読み込み
df = spark.table("takaakiyayoi_catalog.japan_covid_analysis.covid_cases")
# Spark DataFrameからPandas DataFrameに変換
df_pd = df.toPandas()
# Plotlyを使って可視化
fig = px.line(df_pd, x='date_timestamp', y='Cases', color='Prefecture', title='COVID-19 Cases by Prefecture')
fig.show()
今日の学び
- アシスタントはチャットセッションにおける過去のやりとりを覚えているので、うまく動かない場合には前の文脈を踏まえてお願いする
- データ構造が伝わっていないときには明示的に列名などを伝える
- エラーが起きたら診断エラーボタンを活用