0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Snowflakeのpythonワークシートでデータ生成してみた

Posted at

はじめに

先日SnowflakeのpythonワークシートがPublic Previewになりました。
ちょうどSnowflakeでテストデータを作成する必要があったので、良い機会だと思いpythonワークシートで簡単なテストデータを生成してみました。

概要

SnowflakeはSnowparkというフレームワークを提供しており、これを用いることでPythonなどのプログラミング言語を用いてデータを操作できます。
元々Snowparkを使うには自分で環境を構築する必要がありましたが、pythonワークシートがPublic PreviewになったことでSnowflakeのUI上からpythonコードを実行できるようになりました。

今回はそのpythonワークシートを用いて、機械学習の説明でよく見かけるような線型関数にノイズを加えた2次元データを生成します。

手順

まずSnowflake UI上のサイドメニューのBilling & TermsからAnacondaを有効化します。
そうすることでNumPyやPandasといったパッケージが利用できるようになります。

pythonワークシートを開くとサンプルのコードがすでに記載してあり、そのコードを実行することでpackagesビューから利用できるパッケージやバージョン一覧を取得することができます。
スクリーンショット 2023-04-11 2.21.20.png

では本題ですが、今回テストデータを生成するために実行したコードは以下です。

python worksheets
import snowflake.snowpark as snowpark
import numpy as np
import pandas as pd

def main(session: snowpark.Session): 
    X = np.arange(100).reshape(100, 1)
    Y = 2 * X + np.random.randint(0, 50, (100, 1))
    XY = np.concatenate([X, Y], axis=1)
    pd_df = pd.DataFrame(XY, columns=['x', 'y'])
    df = session.create_dataframe(pd_df)
    df.write.mode("overwrite").save_as_table("tbl")

    return df

解説

pythonやSnowparkが分かる方であれば何をしているか分かると思いますが、main関数内でやっていることを説明します。

  • まずデータを操作するにはSnowflakeデータベースとのセッションを確立する必要があるので、snowparkのSessionクラスを引数として与える
  • Xには0~99の値を持つ1×100の2次元配列を入れる
  • YにはXを2倍し、0~49のランダムな数値を加算した1×100の2次元配列を入れる
  • XYを横に結合し、一度PandasのDataFrameに変換してからSnowparkのDataFrameを作成する(ndarrayからはSnowparkのDataFrameを直接作成できないため)
  • 最後にsave_as_tableメソッドを使って、tblという名前のテーブルにデータを書き込む

(参考)
https://docs.snowflake.com/ja/developer-guide/snowpark/python/working-with-dataframes

実行結果

実行すると、無事データが作成されました。
スクリーンショット 2023-04-11 2.31.43.png

グラフで見てみると、想定通り線型関数にノイズが加えられたようなデータを生成できていることが分かります。
スクリーンショット 2023-04-11 2.32.16.png

まとめ

今回は簡単なデータ生成をしてみましたが、プログラミング言語を用いることで柔軟なデータ操作ができると思うので、ぜひpythonワークシートを活用してみてください!

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?