LoginSignup
2
5

More than 5 years have passed since last update.

【IBM Watson】気象観測データをPandasでCSV読み込みする

Last updated at Posted at 2019-03-27

環境

Watson Studio
Python3.5

Pandasとは

  • Numpyと同様に行列を加工しやすくするライブラリです。
  • 数表や時系列データを操作しやすくする為の機能が提供されています。
  • BSDライセンス

気象観測データ

IBM WatsonのNotebook 側の処理

  • 今回は、IBM Watson のWatson Studioを使用して、気象観測データを読み込んでみたいと思います。
  • アカウントをお持ちでない方は、こちらにてアカウントを作成してください。ライトアカウントが用意されています。ライトアカウントですと、クレジットカード不要で無期限・無料で利用できます。(2019年3月27日時点)
  • 有料アカウントと比較すると、利用できるサービスが限定されていますが、AIの取っ掛かりとしては十分すぎるほど利用できます。利用できるサービスを以下にリストアップしました。
    • Watson Knowledge Studio
    • IBM API Connect™
    • Cloud Foundryのアプリ
    • IoTプラットフォーム
    • Watson Discovery
    • Cloudant®
    • Watson Personality Insights
    • プッシュ通知
    • 音声からテキストへの変換

image.png

  • 上記で、アカウントが用意できたら、処理を進めていきましょう。

  • ログイン後、メニューの「カタログ」リンクをクリックしてください。
    image.png

  • カタログ画面が表示されたら、サイドメニューから「AI」リンクをクリック。詳細画面から「Watson Studio」をクリックし、Watson Studio を起動します。

image.png

  • New Project ボタンを押下

image.png

  • Standard を選択

image.png

  • 任意のプロジェクト名などを入力、ストレージを選択。ここでは、ストレージの箇所はマスクをかけていますが、任意のストレージを作成して選択してください。その後、create ボタンを押下してください。

image.png

  • Add project ボタンを押下、展開されたメニューから Notebookを選択します。

image.png

  • 任意のNotebook の名前を入力し、Create Notebook ボタンをクリックします。

image.png

  • Notebook が作成されたら、メニュー上部の「データ」アイコンをクリックし、先ほど気象庁のサイトからダウンロードしたCSVファイルをアップロードします。

image.png

  • CSVファイルのアップロードが終わると、CSVファイル名の下に、[Insert to code]リンクが現れるので、クリック。展開されたメニューから[Insert pandas DataFrame]リンクが現れるのでクリックします。

image.png

  • PandasCSVファイルを読み込みするコードが自動生成されます。便利ですね。
  • 簡単に中身を見てみます。import pandas as pd でPandasライブラリをインポートしています。その後、pd.read_csv(body)でCSVファイルを読み込み、df_data_1変数に格納し、df_data_1.head()で規定のヘッダ行を出力しています。

image.png

import types
import pandas as pd
from botocore.client import Config
import ibm_boto3

def __iter__(self): return 0

# @hidden_cell
# The following code accesses a file in your IBM Cloud Object Storage. It includes your credentials.
# You might want to remove those credentials before you share your notebook.
client_xxxxxxxxxxxxxxxxxxxxxxxxxxx = ibm_boto3.client(service_name='s3',
    ibm_api_key_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    ibm_auth_endpoint="https://iam.bluemix.net/oidc/token",
    config=Config(signature_version='oauth'),
    endpoint_url='https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.com')

body = client_xxxxxxxxxxxxxxxxxxxxxxxxxxxx.get_object(Bucket='xxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx-pr-xxxxxxxxxxxxxxxxxxxxxxx',Key='pre1h00_rct.csv')['Body']
# add missing __iter__ method, so pandas accepts body as file-like object
if not hasattr(body, "__iter__"): body.__iter__ = types.MethodType( __iter__, body )

df_data_1 = pd.read_csv(body)
df_data_1.head()
  • Run ボタンをクリックして、実行してみます。

image.png

  • 成功と思いきや、エラーです。
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-1-72cf346b6559> in <module>()
     20 if not hasattr(body, "__iter__"): body.__iter__ = types.MethodType( __iter__, body )
     21 
---> 22 df_data_1 = pd.read_csv(body)
     23 df_data_1.head()
     24 

(中略)

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._get_header()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8a in position 0: invalid start byte
  • どうも、気象庁からダウンロードしたファイルはSJISですが、Unicodeで読み込みをしようとして、UnicodeDecodeErrorが発生しているようです。
  • では、自動生成されたコードを以下のように修正して、SJISで読み込むように直しましょう。
#df_data_1 = pd.read_csv(body)
df_data_1 = pd.read_csv(body,encoding="SHIFT-JIS")
  • 成功しました。

image.png

  • ちなみに、df_data_1.head()は先頭5行のみ読み込みます。df_data_1.tail()で末尾5行の読み込みを行います。
  • Pandasの詳しい使用方法は10 Minutes to pandasを参照してください。
2
5
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
2
5