AIと最適化を用いたサプライチェーン最適化ソリューションを提供 - ログ・オプト -
ログ・オプトは研究者および技術者のプロフェッショナル集団です.
  • Home
  • Solution
    • Webシステムデモ&トライアル
    • Optimization Solver
      • 制約最適化ソルバーSCOP
      • スケジューリング最適化ソルバーOptSeq
      • 数理最適化ソルバーGurobi Optimizer
      • 配送最適化ソルバーMETRO
    • Web System
      • サプライ・チェイン基本分析
      • 在庫最適化
      • 生産ロット最適化
      • ロジスティックネットワーク設計
      • 幹線輸送ネットワーク最適化
      • 人員配置(シフト)最適化
      • 配送最適化
      • サプライ・チェインリスク分析
      • 需要予測
    • Consulting
  • News/Blog
  • Resource
  • About us
    • 会社概要
    • お問い合わせ
    • プライバシーポリシー
    • 情報セキュリティポリシー

ENGLISH CHINESE

  • ENGLISH
  • CHINESE

LOG OPT(ログオプト)は研究者および技術者のプロフェッショナル集団です.

pandas-logo
2019-03-04

時系列データのpandasでの処理方法

AI, Python, 最適化

pandasやscikit-learnのビデオ講義でこんなものがある。

Python Programming Tutorials
Python Programming tutorials from beginner to advanced on a mpythonprogramming.net

Udacityにパクられて怒っていたビデオがあって笑ったが、Jupyterでうちながらの解説はフランクで良い。(scikit-learnの解説ビデオをみていたら、R^2は0以上だと言っていた。プログラミングは上手そうだが、理論はわかっていないようなので、注意を要する。有償で教えていている日本の深層学習や統計のビデオも同様だが。。。)

ただし余り綺麗なコードではない。時系列データの解析はよくやるので、自分はこう書くよというのをOR学会誌で紹介したことがあるので、それにならって、pandasらしく高速に時系列データを可視化する方法を紹介する。(より詳しくし知りたい人はORのバックナンバーを探してみてください。)

例に使うのはアボガドの例題でKaggleから落としてくる必要がある。

Avocado Prices
Historical data on avocado prices and sales volume in multiplwww.kaggle.com

まずはデータを読み込み,Date列を日付型に変換し、インデックスにする。

import pandas as pd 
df = pd.read_csv("avocado.csv")  
df["Date"] = pd.to_datetime(df["Date"])
df.set_index("Date", inplace=True)

ここまでは同じだが、私の場合にはpivot_tableを使う。行を日付、分析したいregionを列にして、値は平均価格に設定する。生成したデータフレームを1日単位でリサンプルして合計し、NaNを0で置換すれば出来上がりだ。

pt = pd.pivot_table(df, index="Date", columns=["region"], values ="AveragePrice")
resamp = pt.resample("1d").sum().fillna(0)

このままプロットしても良いが、移動平均をとってから描画するとこんな感じになる。(最初の12日がNaNになるので、それをdropnaで消す。)

rolling = resamp.rolling(12).mean().dropna()
%matplotlib inline
rolling.plot.line(legend=False)

実際問題では、解析したい軸が複数ある場合があるが、それらは全て列に入れる。例えば、regionとtypeの2つを列にするとmulti-indexの列になる。

pt = pd.pivot_table(df, index="Date", columns=["region","type"], values ="AveragePrice")

これを切り出して使うのは、xsを使う。以下では、regiionが”Albany”のものを切り出してから、1週間でリサンプリングしてプロットしている。冒頭にあげたのがこの図だ。

pt.xs("Albany", level="region", axis=1).sum(axis=1)
TF-Agentsによる強化学習

Related Posts

AI, その他, 最適化

巡回セールスマン問題の最先端

AI, Python, SCMOPT, サプライ・チェイン, 実務

PyCaretによる自動機械学習(AutoML)

case_gannt_for_shift

Python, SCMOPT, サプライ・チェイン, 可視化, 実務, 最適化

シフト最適化(ケーススタディ7)

カテゴリー

  • AI
  • Python
  • SCMOPT
  • サプライ・チェイン
  • その他
  • 可視化
  • 実務
  • 最適化
AIと最適化を用いたサプライチェーン最適化ソリューションを提供 - ログ・オプト -
Copyright © 2019 Log Opt Co., Ltd.