【发布时间】:2019-08-20 05:25:59
【问题描述】:
我正在尝试编写一个程序,用户输入多个股票代码,这些代码将(最终)绘制成图表。
import pandas as pd
import pandas_datareader.data as web
from datetime import datetime, timedelta
tickers = ['QQQ', 'SQQQ', 'RYCVX', 'RYCWX']
days = (datetime.now() - timedelta(5)).strftime('%Y-%m-%d')
data = {}
for t in tickers:
data[t] = web.DataReader (t, 'yahoo', days, end = None)
结果:
{'QQQ': High Low ... Volume Adj Close
Date ...
2019-08-14 185.949997 182.419998 ... 51000500 182.759995
2019-08-15 183.589996 181.160004 ... 36685000 182.550003
2019-08-16 185.949997 184.100006 ... 32781400 185.479996
2019-08-19 188.830002 187.500000 ... 22494100 188.429993
[4 rows x 6 columns],
'SQQQ': High Low Open Close Volume Adj Close
Date
2019-08-14 36.900002 35.000000 35.320000 36.730000 32427000 36.730000
2019-08-15 37.689999 36.230000 36.520000 36.849998 19184200 36.849998
2019-08-16 35.939999 34.830002 35.939999 35.110001 14002600 35.110001
2019-08-19 33.970001 33.220001 33.590000 33.529999 11745300 33.529999,
'RYCVX': High Low Open Close Volume Adj Close
Date
2019-08-14 89.489998 89.489998 89.489998 89.489998 0 89.489998
2019-08-15 90.290001 90.290001 90.290001 90.290001 0 90.290001
2019-08-16 92.489998 92.489998 92.489998 92.489998 0 92.489998
2019-08-19 94.290001 94.290001 94.290001 94.290001 0 94.290001,
'RYCWX': High Low Open Close Volume Adj Close
Date
2019-08-14 9.92 9.92 9.92 9.92 0 9.92
2019-08-15 9.83 9.83 9.83 9.83 0 9.83
2019-08-16 9.59 9.59 9.59 9.59 0 9.59
2019-08-19 9.40 9.40 9.40 9.40 0 9.40}
这将创建一个字典,其中股票代码是键,股票数据是值。我最初的想法是删除键:值对并分配给一个变量,但我刚刚了解到我最初的想法是不好的做法。我现在需要知道如何做的是:
- 我需要能够从特定键调用列值,例如键 QQQ 的“高”列。如果将列分配给变量,我通常会如何调用它:
QQQ["High"]
- 我需要一个循环来为每个数据帧迭代一个新列。如果将 df 分配给变量以创建新列,我会怎么做:
QQQ['15MA'] = QQQ['Close'].rolling(15).mean()
如何使调用和迭代适应字典?
【问题讨论】:
-
pop()方法从字典中移除指定项并返回移除的值 -
是的,这就是重点。我想要一个函数来按键从字典中删除数据并将其分配给变量
-
动态创建变量不是最佳实践。为什么要创建变量,为什么不能使用字典键作为参考?为什么不能使用 get() 方法来获取 key 的值,而不是使用 pop 删除项目?
标签: python pandas function datareader