チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ13

の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。

fromListToDFメソッドの続きです。

def fromListToDF(self, candleStick):
  """
  Listのローソク足をpandasデータフレームへ.
  """
  date = [price[0] for price in candleStick]
  priceOpen = [int(price[1]) for price in candleStick]
  priceHigh = [int(price[2]) for price in candleStick]
  priceLow = [int(price[3]) for price in candleStick]
  priceClose = [int(price[4]) for price in candleStick]
  date_datetime = map(datetime.datetime.fromtimestamp, date)
  dti = pd.DatetimeIndex(date_datetime)
  df_candleStick = pd.DataFrame(
      {"open": priceOpen, "high": priceHigh, "low": priceLow,
       "close": priceClose},
      index=dti)
  return df_candleStick
date_datetime = map(datetime.datetime.fromtimestamp, date)

`map` でdate配列の値に順次 `datetime.datetime.fromtimestamp` メソッドを適用します。
mapは高階関数と呼ばれます。

>>> a = [1,2,3,4,5]
>>> def hoge(x):
...     return x + 1

例えば配列aと関数hogeがあるとして、

>>> b = map(hoge, a)
>>> print(list(b))
[2, 3, 4, 5, 6]

`map(hoge, a)` を実行すると、aのそれぞれの要素に1加算されたbが出力されます。
参考: https://www.sejuku.net/blog/24759

`datetime.datetime.fromtimestamp` メソッドは、unixtimestampをdatetime型に変換します。

>>> datetime.datetime.fromtimestamp(1534466705)
datetime.datetime(2018, 8, 17, 9, 45, 5)

例えば `1534466705` をfromtimestampすると `datetime.datetime(2018, 8, 17, 9, 45, 5)` になります。
括弧内は前から順番に、年・月・日・時間・分・秒です。

dti = pd.DatetimeIndex(date_datetime)

date_datetime配列を、pandasで利用しやすいDatetimeIndexに変換します。
参考: http://d.hatena.ne.jp/graySpace/20161216/1481864562

15分経ったので今日はここまで。

↓次


この記事が気に入ったらサポートをしてみませんか?