ラベル AWS S3 の投稿を表示しています。 すべての投稿を表示
ラベル AWS S3 の投稿を表示しています。 すべての投稿を表示

2020年5月13日水曜日

Dataiku で台風進路を30分で可視化


台風進路を可視化したい

季節の移り変わりは早いもので、春も過ぎ、もうすぐ初夏を迎えようとしています。そう、夏といえば、台風が今年もやってくる(はず)です。
少し前にこんなツイートを見かけてせっかくなので、Dataikuで可視化ができないかをやってみました。

Dataikuで台風進路を可視化する

では、さっそくDataikuを使って台風進路をさっくりと可視化してみましょう。

上記Tweetのリンク先ページから台風進路のCSVデータを取得してきます。ヘッダー近くの「台風位置表(CSV形式)」からCSVをダウンロードしておきます。
次に、適当な場所に保存をしておきます。私の場合は、AWS S3のバケットに配置してみました。


データインポート・データハンドリング

次にデータインポートです。新しいDataikuプロジェクトを作成して、Dataiku内で事前に設定しておいたAWS S3の接続からデータを取得します。設定したS3バケット名とファイル名を指定して、インポートします。
合わせて、カラム名も日本語から英語に変更してみます。

データが問題なくDataikuにロードできたら、次はVisual RecipeのPrepare レシピを使って加工していきます。

今回のポイントとしては、緯度・経度を使ってDataiku内で位置情報を取り扱う「Geopoint」形式に緯度・経度情報を変換して利用します。とは言っても難しいことはなく、Prepareレシピ中にある関数を適応することで変換は簡単にできます。
画面中左下の「Add A New Step」をクリックすると以下の画面が出てきます。サーチボックスに「Geopoint」と入力すると、いくつかの候補が出てきますので、「Create Geopoints from lat / lon」を選択します。


そうすると、左ペイン中に関数が出てくるので、インポートしたデータのLatituteとLongtitudeを入力します。
結果がすぐに右側の列に表示されます。設定が終わったら、左下の「Run」をクリックして実行をします。
ここまでくれば後は可視化のみです。


Chartで可視化

Flowに戻るとこんな結果が表示されているはずです。この右側の四角のアイコンをクリックしてください。(*)
クリックした後はデータが見えてくるかとおもいます。
このツールバー内の「Chart」をクリックして台風進路のチャートを作成していきます。

Chartsを開き、チャート選択のアイコンで「Map」を選択して、今回はScatterを選択します。

選択したら軸をドラッグアンドドロップできる画面が表示されますので、必要な軸に必要な項目を入れてみてください。
そうすると、以下のような台風進路のチャートが作成できます。

一番上のShow Geo と書いてあるところに作成したGeopointの項目をおくと台風移動経路が見えます。
ちなみに、全部見せると非常に見にくいので、月・台風名称・上陸したかどうかを選択項目にして、台風の大きさのクラスを色に、中心気圧をバブルの大きさにしてみました。
これを見て、台風がどのぐらいの大きさで、どの月に、どのように推移しているかがわかるかが可視化できます。

ここまでおおよそ30分未満でできます!

聞くよりも実際に触ってみたほうが実感が湧くかと思いますので、ぜひ触ってみてください。フリーエディションはずっと使えて、機能的にも十分に利用することが可能です!

[フリーエディション]

2020年3月28日土曜日

RStudioからAWS S3 へオブジェクトをUpload、Download

RStudioからAWS S3へはいつかは試してみなければと思いながらだいぶ日が経ってしまったが、やっと試せるときがきたので、まとめてみました。






























IAMを使って認証情報を作成する

まずはともあれ、AWSのアカウントが無いと始まりません。AWSのアカウントを作成して、IAMにアクセスしてAWS S3にアクセスできるユーザーを作成してください。
この際、重要になるのが「AWS_ACCESS_KEY_ID」と「AWS_SECRET_ACCESS_KEY」です。これらの情報はこの後で使います。

{aws.s3}パッケージとSys.setenvへの登録

次にRStudio上で、{aws.s3}パッケージをインストールします。(install.packages() , library()を利用してください)
その後、上記で取得したAIMの情報を以下の内容に追記します。


Sys.setenv("AWS_ACCESS_KEY_ID" = "mykey",
           "AWS_SECRET_ACCESS_KEY" = "mysecretkey",
           "AWS_DEFAULT_REGION" = "us-east-1")

AWS_DEFAULT_REGONはAWS S3はグローバルで共通になっており、特にしてする必要はありまませんが、私はEC2を使う際に利用しているリージョンを指定しました。

接続できているか確認

うまく接続できているかを確認してみましょう。
RStudio上で、AWS S3のバケットがうまく取得できているかを確認します。

bucketlist()

の関数を実行すると、IAMで作成したユーザーがアクセスできるバケットのリストが参照されているはずです。

RオブジェクトのUpload

ここまでくれば、あとは実際にRの関数を適応していくだけです。

まずはみんな大好きirisデータフレームをAWS S3へUploadしてみます。
コマンドは以下を実行します。

s3save(iris, bucket = "[bucket_name]" , object = "iris.Rdata")

そうすると、AWS S3画面上に.Rdata ファイルが見えるはずです。
この中にirisが入っています。

RオブジェクトのDownload

次に、AWS S3にあるRオブジェクトをRStudioの環境にダウンロードします。

s3load("iris.Rdata" , bucket = "[bucket_name]")

この関数でirisが入っている.Rdataをダウンロードし、RオブジェクトがRStudioの環境にロードされます。

ローカルにあるデータファイルのUpload

RStudioで作業をしていると、CSVファイルなどの様々なファイルを作成することがあるかと思います。その場合もこのパッケージを使えばAWS S3へファイルをアップロードが可能です。

irisをwrite.csv()でCSVファイルに作成をしておいて、以下のコマンドを使ってCSVファイルをアップロードします。

put_object(file = "iris.csv" , object = "iris_from_RStudio.csv", bucket = "[bucket_name]")

file= にはアップロードしたいファイル名、object = には、AWS S3のオブジェクト名、bucket = にはAWS S3のバケット名を指定します。
今回はfileとobject の名前は異なってつけています。AWS S3の画面にはobject の名前が表示されます。

AWS S3にあるデータファイルのDownload

次にAWS S3 のデータファイルをダウンロードします。

save_object("iris_from_RStudio.csv", file = "[file path]" , bucket = "[bucket_name]")

関数がsave_objectとなっているので、わかりにくいですが、この関数を使って、AWS S3 → ローカルのファイルパスにファイルをダウンロードします。ファイル名を指定するだけだと、getwd() で表示されるディレクトリに保存されます。