:使用熊猫的DataReader的“雅虎”的方法,因为16日2017年我还没有测试此修复程序,雅虎财经雅虎财经URL一直没有访问https://pypi.python.org/pypi/fix-yahoo-finance那昨天刚刚发布,声明:“雅虎财经已停用他们的历史数据 API”。
编辑 2017 年 8 月 2 日:我已经按照https://pypi.python.org/pypi/fix-yahoo-finance 中的步骤操作:$ pip3 install fix_yahoo_finance --upgrade --no-cache-dir,将 pandas_datareader 升级为使用“fix-yahoo-finance 0.0.6”,并修改代码:
from pandas_datareader import data as pdr
import fix_yahoo_finance
data = pdr.get_data_yahoo('AAPL', start='2017-04-23', end='2017-05-24')
Run Code Online (Sandbox Code Playgroud)
请注意,最后 2 个数据列的顺序是“Adj Close”和“Volume”,即。不是以前的格式。出于我的目的,它们只是重置为原始格式:
cols = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
data.reindex(columns=cols)
Run Code Online (Sandbox Code Playgroud) 我在MultiIndex DataFrame中有一个带有时间序列数据的层次表-请参阅下面的示例数据-请注意1级索引的填充不均。
我如何对DataFrame进行重新采样,以产生一个每周时间序列,从当前日期开始每周一次向后采样。
我已经尝试过但是失败了:
df.index.levels[0].name = 'date'
df.reset_index().groupby(pandas.Grouper(key='date', freq='W'))
Run Code Online (Sandbox Code Playgroud)
样本数据:
Price Sector
2016-08-08 Equity(24 [AAPL]) 107.47 311
Equity(4151 [JNJ]) 124.19 206
Equity(5061 [MSFT]) 57.95 311
Equity(8347 [XOM]) 87.52 309
Equity(11100 [BRK_B]) 145.52 103
Equity(16841 [AMZN]) 765.87 102
Equity(26578 [GOOG_L]) 806.93 311
Equity(42950 [FB]) 125.11 311
2016-08-09 Equity(24 [AAPL]) 108.37 311
Equity(4151 [JNJ]) 123.69 206
Equity(5061 [MSFT]) 58.06 311
Equity(8347 [XOM]) 88.55 309
Equity(11100 [BRK_B]) 145.45 103
Equity(16841 [AMZN]) 766.56 102
Equity(26578 [GOOG_L]) 805.39 311
Equity(42950 [FB]) 125.26 311
2016-08-10 Equity(24 …Run Code Online (Sandbox Code Playgroud) 使用 np.polyfit 将曲线拟合到数据系列,并使用 np.polyval 进行评估,绘制为:
如何计算曲线上某点的切线,以及如何使用系列中的 x 和 y 值对沿着曲线的一系列切线进行动画处理?
ps:感谢 James Phillips 的解决方案,多项式曲线上的切线如下所示:
x y
0 21.05
1 21.21
2 20.76
3 20.34
4 20.27
5 20.78
6 20.60
7 20.55
8 19.95
9 19.23
10 19.64
11 19.92
12 19.91
13 19.56
14 19.39
15 19.31
16 19.35
17 18.97
18 18.69
19 19.00
20 19.15
21 19.08
22 18.97
23 19.26
24 19.52
25 19.56
26 19.28
27 19.47
28 19.85
29 19.77
Run Code Online (Sandbox Code Playgroud) 我对两种方法感到困惑,在此两种方法中,对数组进行规范化并且其总和必须为1.0:
要标准化的数组:
array([ 1.17091033, 1.13843561, 1.240346 , 1.05438719, 1.05386014,
1.15475574, 1.16127814, 1.07070739, 0.93670444, 1.20450255,
1.25644135])
Run Code Online (Sandbox Code Playgroud)
方法1:
arr = np.array(values / min(values))
array([ 1.25003179, 1.21536267, 1.32415941, 1.12563488, 1.12507221,
1.23278559, 1.23974873, 1.14305788, 1.00000000, 1.28589392,
1.34134236])
arr1 = arr / sum(arr) # Sum total to 1.0
array([ 0.09410701, 0.09149699, 0.09968761, 0.08474195, 0.08469959,
0.09280865, 0.09333286, 0.08605362, 0.07528369, 0.09680684,
0.1009812 ])
Run Code Online (Sandbox Code Playgroud)
方法2:
arr = np.array((values - min(values)) / (max(values) - min(values)))
array([ 0.73249564, 0.63092863, 0.94966065, 0.3680612, 0.3664128 ,
0.68197101, 0.70237028, 0.41910379, 0.0000000, 0.83755771,
1.00000000])
arr2 …Run Code Online (Sandbox Code Playgroud) 我有相同的元组(0,1)分配来定义3个输入值的限制:
bounds = ((0, 1), (0, 1), (0, 1))
Run Code Online (Sandbox Code Playgroud)
是否有Pythonic方法为N个输入分配相同的元组?例如:
bounds = ((0, 1), (0, 1), (0, 1), (0, 1), (0, 1), ...Nth(0, 1))
Run Code Online (Sandbox Code Playgroud) python ×4
checksum ×1
dataframe ×1
matplotlib ×1
multi-index ×1
numpy ×1
pandas ×1
python-3.x ×1
regression ×1