2
5

More than 3 years have passed since last update.

複数銘柄の日足株価データを週足の株価データに変換する方法

Last updated at Posted at 2021-08-06

1. この記事は

複数銘柄の日足データを銘柄ごとに週足データに算出するコードを掲載する。

2. コードの説明

pd.Grouperを使うのがポイントです。Multiindexの場合、groupbyを使用するとresampleのコードでエラーが発生します。よって、pd.Grouperを使用します。

sample.py
import pandas as pd
import numpy as np

dat=[
    [1570,"2021/7/5",15650,15670,15490,15520,3315590],
    [1570,"2021/7/6",15620,15690,15500,15560,3165551],
    [1570,"2021/7/7",15050,15340,15030,15260,6047534],
    [1570,"2021/7/8",15200,15280,14990,15020,4927900],
    [1570,"2021/7/9",14620,14880,14240,14850,15201967],
    [1570,"2021/7/12",15440,15500,15360,15460,8908945],
    [1570,"2021/7/13",15630,15780,15610,15640,6024571],
    [1570,"2021/7/14",15410,15610,15370,15510,4788303],
    [1570,"2021/7/15",15430,15480,15120,15160,6687459],
    [1570,"2021/7/16",14840,15090,14700,14890,8021962],
    [1570,"2021/7/19",14500,14650,14320,14470,8402245],
    [1570,"2021/7/20",14200,14400,14140,14220,8901150],
    [1570,"2021/7/21",14610,14730,14260,14380,7473282],
    [1305,"2021/7/5",2073,2076,2066,2074,155700],
    [1305,"2021/7/6",2080,2085,2072,2078,188890],
    [1305,"2021/7/7",2054,2070,2047,2058,740510],
    [1305,"2021/7/8",2020,2024,2007,2007,216620],
    [1305,"2021/7/9",1976,2004,1964,1999,403640],
    [1305,"2021/7/12",2035,2042,2028,2036,208860],
    [1305,"2021/7/13",2049,2060,2048,2051,655740],
    [1305,"2021/7/14",2041,2056,2038,2047,83270],
    [1305,"2021/7/15",2045,2045,2021,2022,132610],
    [1305,"2021/7/16",2014,2027,2008,2016,77810],
    [1305,"2021/7/19",1995,2001,1981,1991,162720],
    [1305,"2021/7/20",1969,1981,1964,1970,476450],
    [1305,"2021/7/21",2000,2009,1983,1985,91520]
    ]

#datをDataFrame型変数dfに格納する。
df = pd.DataFrame(dat,columns=["Code","Date","Open","High","Low","Close","Volume"])
df['Date'] = pd.to_datetime(df['Date'], format='%Y/%m/%d') #文字列型を日付型に変更する

print("### 銘柄番号1305,1570の日足株価データ")
display(df)


d_ohlcv = {'Open': 'first','High': 'max','Low': 'min','Close': 'last','Volume': 'sum'}
df_stock = df.groupby(['Code', pd.Grouper(freq='W', key='Date')]).agg(d_ohlcv)  #株価データ(週足)を取得する。


print("#### 銘柄番号1305,1570の週足株価データ")

display(df_stock)

実行結果

179.JPG
180.JPG

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