1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricksアシスタントを用いたEDA(探索的データ分析)

Last updated at Posted at 2024-01-31

Databricksアシスタントでコードの生成はできるのは嬉しいのですが、個人的には「手元にあるデータのEDA(Explanatory Data Analysis)をクイックにできないかな」と思ってます。

なので、試行錯誤ですが、データの可視化を含むEDAをアシスタントの助けを借りてどこまでできるか探ってみます。

注意
大規模言語モデルの性質上、常に同じ回答、常に正しい回答が得られるわけではありません。必ず回答の動作を確認して活用してください。

Unity Catalogのテーブルの可視化

難易度低そうなところから。

テーブルtakaakiyayoi_catalog.japan_covid_analysis.covid_casesを可視化したいので、Pythonコードを作成してください。

Screenshot 2024-01-31 at 14.54.49.png

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()

良さそう。だがしかし。
Screenshot 2024-01-31 at 14.55.47.png

豆腐になってしまいました…。こちらですね。

%pip install japanize-matplotlib
dbutils.library.restartPython()
import japanize_matplotlib

直りましたがコードを書いてしまいました。
Screenshot 2024-01-31 at 14.57.18.png

Databricksアシスタントはこれまでのやりとりを覚えているので、追加でお願いします。

上のコードでは日本語が化けてしまうので直してください。

Screenshot 2024-01-31 at 14.58.45.png

直りましたが、これはjapanize-matplotlibがインストールされていることを前提にしてます。
Screenshot 2024-01-31 at 14.58.45.png

japanize_matplotlibのインストール方法を教えてください。

Screenshot 2024-01-31 at 15.00.33.png

なるほど。一度チャットセッションをクリアして最初からトライしてみます。
Screenshot 2024-01-31 at 15.01.23.png

テーブル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()

いけました。具体的に伝えること大事。
Screenshot 2024-01-31 at 15.05.15.png

別のグラフを描かせる

都道府県別の感染者数比率を表す円グラフをプロットしたい

これですと、都道府県名の列が「都道府県」になってしまい、うまくいきませんでした。実際には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()

いけた!と思ったらvalue_countしてる…。
Screenshot 2024-01-31 at 15.18.31.png

都道府県別の感染者数比率を表す円グラフをプロットしたい。都道府県は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()

Screenshot 2024-01-31 at 15.20.22.png

ちなみに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()

Screenshot 2024-01-31 at 16.45.00.png

今日の学び

  • アシスタントはチャットセッションにおける過去のやりとりを覚えているので、うまく動かない場合には前の文脈を踏まえてお願いする
  • データ構造が伝わっていないときには明示的に列名などを伝える
  • エラーが起きたら診断エラーボタンを活用

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?