私はパンダで遊んでいて、他のツールよりも優れた/高速な株価計算を実行できるかどうかを確認しています。単一株を持っている場合、毎日の計算を作成するのは簡単ですL
df['mystuff'] = df['Close']+1
ティッカー以上をダウンロードすると、複雑になります。
df = df.stack()
df['mystuff'] = df['Close']+1
df = df.unstack()
前日の「閉じる」を使用したい場合、それは私には複雑すぎます。戻って単一のティッカーをフェッチし、iloc [i-1]または同様の操作を実行して(まだ理解していません)、データフレームをマージする可能性があると思いました。
シングルティッカーの2つのデータフレームをマージしてマルチインデックスを作成するにはどうすればよいですか?そのため:
f1 = web.DataReader('AAPL', 'yahoo', start, end)
f2 = web.DataReader('GOOG', 'yahoo', start, end)
のようなものです
f = web.DataReader(['AAPL','GOOG'], 'yahoo', start, end)
編集:これは私が作成できるfに最も近いものです。まったく同じではないので、fの代わりに使用できるかどうかはわかりません。
f_f = pd.concat(['AAPL':f1,'GOOG':f2},axis=1)
単純なデータフレームで作業を分割するのではなく、マルチインデックスで作業する操作を試してみる必要があるかもしれません。
完全なコード:
import pandas_datareader.data as web
import pandas as pd
from datetime import datetime
start = datetime(2001, 9, 1)
end = datetime(2019, 8, 31)
a = web.DataReader('AAPL', 'yahoo', start, end)
g = web.DataReader('GOOG', 'yahoo', start, end)
# here are shift/diff calculations that I don't knokw how to do with a multiindex
a_g = web.DataReader(['AAPL','GOOG'], 'yahoo', start, end)
merged = pd.concat({'AAPL':a,'GOOG':g},axis=1)
a_g.to_csv('ag.csv')
merged.to_csv('merged.csv')
import code; code.interact(local=locals())
補足:2つのcsvを比較する方法がわかりません
これはまったく同じではありませんが、a_g
ケースのように使用できるマルチインデックスを返します
import pandas_datareader.data as web
import pandas as pd
from datetime import datetime
start = datetime(2019, 7, 1)
end = datetime(2019, 8, 31)
out = []
for tick in ["AAPL", "GOOG"]:
d = web.DataReader(tick, 'yahoo', start, end)
cols = [(col, tick) for col in d.columns]
d.columns = pd.MultiIndex\
.from_tuples(cols,
names=['Attributes', 'Symbols'] )
out.append(d)
df = pd.concat(out, axis=1)
更新
マルチインデックス列がある場合に新しい列を計算して追加する場合は、これに従うことができます
import pandas_datareader.data as web
import pandas as pd
from datetime import datetime
start = datetime(2019, 7, 1)
end = datetime(2019, 8, 31)
ticks = ['AAPL','GOOG']
df = web.DataReader(ticks, 'yahoo', start, end)
names = list(df.columns.names)
df1 = df["Close"].shift()
cols = [("New", col) for col in df1.columns]
df1.columns = pd.MultiIndex.from_tuples(cols,
names=names)
df = df.join(df1)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加