• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

【Python入門】Pythonを使った気象データ分析

    Home 技術解説 【Python入門】Pythonを使った気象データ分析
    python データ分析 入門

    【Python入門】Pythonを使った気象データ分析

    By James Cauchi | 技術解説, 技術ブログ&インタビュー | Comments are Closed | 18 1月, 2018 | 0

    データ分析を行うには、まず始めに有益なデータを取得し、そのデータを分析しやすくしたり、第三者に説明したりするために、グラフにして視覚化することが必要となります。
    ここでは、プログラミング未経験者でも比較的簡単にデータの取得から視覚化を行うことができるPythonを使って、気象データを取得して取得したデータをグラフにする実例を示します。

    気象データを使ったデータ分析は、商品の売上予測、再生エネルギーの電力予測、農作物の収穫高予測などで様々な分野で行われています。

    Pythonを使うには

    Anacondaを使うとPython本体だけでなくデータ分析に必要なライブラリーもインストールできます。Anacondaのダウンロード方法は、機械学習を用いた画像分類の記事内で説明しています。をご覧ください。Anaconda公式ページはこちらです。

    気象データの取得

    ここでは、Pythonライブラリのrequestsを使って簡単に気象データを入手できるPlanet OSを紹介します。
    Planet OS
    python planetOS
    Planet OSは世界各地の気象データが集積されており、RESTful APIが提供されています。
    Planet OSからデータを取得するには、アカウントの設定が必要です。名前とE-mailアドレスを入力するだけでアカウントの設定ができます。
    アカウントを設定すると、データの取得に必要なAPIキーが割り当てられます。以下の制限において無料でデータを入手できます。

    • 1日に100回までのAPIコール
    • 1ヶ月に5GBまでのデータ転送

    Pythonで以下のコードを実行すると、東京付近の気温の予測データを取得できます。

    [code lang=python]
    import requests
    # “noaa_gfs_global_sflux_0.12d”は気象データのID
    url = “http://api.planetos.com/v1/datasets/noaa_gfs_global_sflux_0.12d/point”
    querystring = {
    “lat”:”35.70″, # 緯度
    “lon”:”139.80″ # 経度,
    “var”:”Temperature_surface”, # 温度
    “count”:”500″, # データ取得数
    “apikey”:”xxxx” # xxxxはアカウント設定で取得したAPIキー
    }
    response = requests.request( “GET”, url, params=querystring )

    [/code]

    以下のJSON形式のデータが取得できます。

    [code lang=bash]
    {
    “stats”: {
    “offset”: 0,
    “count”: 500,
    “timeMin”: “2017-12-23T12:00:00”,
    “timeMax”: “2018-01-08T12:00:00”
    },
    “entries”: [{
    “context”: “reftime_time_lat_lon”,
    “classifiers”: {
    “reference_time”: “2017-12-23T12:00:00.000Z”
    },
    “axes”: {
    “reftime”: “2017-12-23T12:00:00”,
    “time”: “2017-12-23T12:00:00”,
    “latitude”: 35.67197799682617,
    “longitude”: 139.8046875
    },
    “data”: {
    “Temperature_surface”: 282.5
    }
    }, {
    ・・・

    [/code]

    データの視覚化

    上記で取得した気象データをPythonのpandasライブラリのプロット機能を使ってグラフにします。
    最初にデータをpandasで扱えるようDataFrame形式に変換します。

    1. JSON形式のデータをPythonで扱いやすくするために辞書型に変換します。

    [code lang=python]
    Import json
    data = json.loads( response.text )

    [/code]

    2. 階層化されているJSON形式のデータを正規化(階層化されていない状態に)します。

    [code lang=python]
    from pandas.io.json import json_normalize
    entry_data = json_normalize( data[‘entries’] )

    [/code]

    正規化を行うと以下のように階層化されていない平坦なデータとなり、pandasのDataFrameに変換できます。

    axes.latitude axes.longitude axes.time ・・・ data.Temperature_surface
    35.67197799682617 139.8046875 2017-12-23T12:00:00 ・・・ 282.5
    ・・・ ・・・ ・・・ ・・・ ・・・

    3. pandasのDataFrame形式に変換します。

    [code lang=python]
    import pandas as pd
    df = pd.DataFrame( entry_data )
    [/code]

    DataFrame形式にしたデータはpandasのプロット機能を使って簡単にグラフ化できます。
    横軸を時間、縦軸を気温のグラフを作成します。

    1. データ取得時の時間データをdatetime64形式に変換します。

    [code lang=python]
    df[‘axes.time’] = pd.to_datetime(df[‘axes.time’])

    [/code]

    2. 気温データを絶対温度から摂氏に変換します。

    [code lang=python]
    i = 0
    for temp in df[‘data.Temperature_surface’]:
    temp = temp – 273.15
    df.loc[i, [‘data.Temperature_surface’]] = temp
    i = i + 1

    [/code]

    3. DataFrame形式のデータをグラフにプロットして画像ファイル「weather.png」に保存します。

    [code lang=python]
    df.plot( x=’axes.time’, y=’data.Temperature_surface’, figsize=(16,4) )
    plt.savefig( “weather.png” )

    [/code]

    python data 視覚化
    【参考文献】
    ・Planet OS(https://planetos.com/)の「Product Guide」
    ・「PythonとJavaScriptではじめるデータビジュアライゼーション」Kyran Dale著

    あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

    社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

    採用情報
    Python, 技術, Pandas, Planet OS

    Related Post

    • G検定合格体験記

      G検定合格体験記

      By Avinton rk | Comments are Closed

      Read more

    • Kubernetes入門:初心者からプロフェッショナルへ – 学び方とおすすめリソース

      Kubernetes入門:初心者からプロフェッショナルへ – 学び方とおすすめリソース

      By Avinton rk | Comments are Closed

      Read more

    • deploying-postgresql-operator-in-Kubernetes

      PostgreSQL Operator on Kubernetes

      By Avinton rk | Comments are Closed

      Read more

    • AIモデルの最適化

      AIモデルの最適化

      By Avinton rk | Comments are Closed

      Read more

    • Pytorch Datasets & DataLoaders

      PyTorch – Datasets & DataLoaders

      By Avinton rk | Comments are Closed

      Read more

    採用情報

    採用情報

    Categories

    • 相互学習
    • 採用
    • 社員インタビュー
    • 学習&資格取得
    • 技術解説
    • イベント告知
    • 学内説明会&講義
    • 産学連携
    • 就職活動
    • イベントレポート
    • その他
    • 技術ブログ&インタビュー
    • mainpage
    • New Graduates Interviews
    • 中途エンジニア
    • カテゴリーなし
    • ニュースリリース&イベント

    Avinton SDGs

    SDGsへの貢献

    Search

    タグ

    AI時代の経営 AvintonAcademy on Campus AWS Docker DQN FINOLAB Git IoT James Cauchi LPIC LPIC-2 PM&PMO Predictive Maintenance Raspberry Pi Sound Analysis SSD イベントレポート インターン インフラ エッジコンピューティング エリクソン クラウトネイティブ セミナー ディープラーニング データ生成 データ解析 ファンダフルリレーマラソン モブワーク リスキリング リードエンジニア 中瀬幸子 企業説明会 勉強会 大学&専門学校 帰社日 強化学習、機械学習 技術ブログ 採用 掲載告知 未経験 田中 研之輔 画像分類 社員紹介 第一級陸上特殊無線技士 観光データ
    © 2023 Avinton | All Rights Reserved | プライバシーポリシー
    • サービス
      • Avinton Data Platform
      • エッジAIカメラ
        • 自動車ナンバープレート自動認識システム
      • プライベートクラウド
      • AIサービス開発
      • AIカメラ/画像解析無料体験版
    • 最新情報
      • ニュースリリース&イベント情報
      • 技術ブログ&インタビュー
    • アカデミー
      • Avintonアカデミー
      • Academy on Campus
      • Academy with Platform
    • 採用情報
      • Avintonジャパン 採用ページ
      • 求人一覧
      • よくある質問
      • 新卒採用
    • 企業情報
      • 会社概要
      • 代表からご挨拶
      • SDGsへの貢献
    • お問い合わせ
    • 日本語
      • English (英語)
    Avinton Japan