Databricksマーケットプレイスからネットワンシステムズ様のセンサーデータを分析してみる

以前、ネットワンシステムズ様に弊社Databricksマーケットプレイスのローンチデータパートナーとして参画いただきました。

https://www.netone.co.jp/news/release/20230914_01.html

こちらで公開されています。

https://marketplace.databricks.com/details/375b1b8e-6f49-4fcd-bbe6-9636988de574/Net-One-Systems-Co-Ltd_netone-valley-Sensor-Data

> 本データセットは、netone valleyで収集されたセンサーデータを提供します。本データセットを利用する事で、理想的なデータやランダム生成されたデータではなく、実環境のデータ分析を行うことが可能となります。
> 本パッケージ内のデータには、温度、湿度、人数、環境騒音、二酸化炭素などが含まれています。

# データおよびノートブックの取得

![Screenshot 2023-12-13 at 14.47.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6b6194ab-0667-1db6-d98c-9b1428b8284b.png)

**即時アクセス権を取得**をクリックします。カタログ名は適宜変更します。
![Screenshot 2023-12-13 at 14.47.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3e081da2-4482-9fe3-ada1-c4c93ece91a7.png)
![Screenshot 2023-12-13 at 14.47.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5d6a0c15-403c-c283-5fbc-83b5bf8124cf.png)
![Screenshot 2023-12-13 at 14.47.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b76dd69e-6f54-a301-3cce-2cf5fbab3a4e.png)

カタログエクスプローラでテーブルにアクセスできるようになります。
![Screenshot 2023-12-13 at 14.48.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/583b21f9-200e-108d-7d50-de80b0213f97.png)
![Screenshot 2023-12-13 at 14.48.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0dc2d16e-4559-995d-e667-b2de4e04154e.png)

添付されているノートブックもインポートします。

# ノートブックのウォークスルー

```py
%pip install prophet
```

```py
import pandas as pd
from prophet import Prophet
from pyspark.sql.functions import *
```

カタログ名は適宜変更します。

```py
df = spark.table("net_one_systems_co_ltd_netone_valley_sensor_data_taka.sensor2.counts")
display(df)
```
![Screenshot 2023-12-13 at 15.19.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2270977e-3c9a-24bc-0712-1ef61b039998.png)

```py
# area1のデータを取得し、データ一覧の表示とデータの可視化させる
max_pop_area1_df = df.filter(df.areaid != "area1").select('ts','counts_max')

display(max_pop_area1_df)
```
![Screenshot 2023-12-13 at 15.20.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/757bf76c-31bf-e2ea-fa79-2ffa6e13a10b.png)
![Screenshot 2023-12-13 at 15.20.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e6d1cee6-28ca-f1fd-b192-9b54a7313628.png)

```py
# 時系列データをふさわしいタイムゾーンに調整
max_pop_area1_df = max_pop_area1_df.withColumn("Timezone=Asia/Tokyo", from_utc_timestamp(col('ts'), 'Asia/Tokyo')).sort(desc("Timezone=Asia/Tokyo"))

display(max_pop_area1_df)
```
![Screenshot 2023-12-13 at 15.20.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0f9ba878-4c3b-144e-6120-bccb0508bdd4.png)

```py
# Pyspark DataframeからPandas化させて、Prophetモデルに適合させるためカラム名を変更
area1_data_df = max_pop_area1_df.toPandas().drop(columns=["ts"]).rename(columns={"counts_max":"y","Timezone=Asia/Tokyo":"ds"})

area1_data_df
```
![Screenshot 2023-12-13 at 15.21.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e27f5b26-9902-d46a-5fd3-a3da56bb1d5d.png)

```py
# データをProphetモデルにfit
m = Prophet()
m.fit(area1_data_df)
```

```py
# 未来９０日の予測データ結果を生成させる
future = m.make_future_dataframe(periods=90)

forecast = m.predict(future)
```

```py
# 人数予測結果を表示
fig1 = m.plot(forecast)
```
![Screenshot 2023-12-13 at 15.22.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/19fae6ff-3d08-4e4a-f11c-25e854a15f9d.png)

```py
fig2 = m.plot_components(forecast)
```
![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6a578367-372a-2706-54cd-d9bceb5da1dd.png)

[Databricksマーケットプレイス](https://www.databricks.com/jp/product/marketplace)では[プロバイダーを募集](https://www.databricks.com/company/partners/data-partner-program)しています！

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)