我一直在敲打这个,我似乎无法做到正确而且我不明白是什么问题......所以我试着做以下事情:
#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
import quandl
btc_usd_price_kraken = quandl.get('BCHARTS/KRAKENUSD', returns="pandas")
btc_usd_price_kraken.replace(0, np.nan, inplace=True)
plt.plot(btc_usd_price_kraken.index, btc_usd_price_kraken['Weighted Price'])
plt.grid(True)
plt.title("btc_usd_price_kraken")
plt.show()
eur_usd_price = quandl.get('BUNDESBANK/BBEX3_D_USD_EUR_BB_AC_000', returns="pandas")
eur_dkk_price = quandl.get('ECB/EURDKK', returns="pandas")
usd_dkk_price = eur_dkk_price / eur_usd_price
btc_dkk = btc_usd_price_kraken['Weighted Price'] * usd_dkk_price
plt.plot(btc_dkk.index, btc_dkk) # WHY IS THIS [4785 rows x 1340 columns] ???
plt.grid(True)
plt.title("Historic value of 1 BTC converted to DKK")
plt.show()
正如你在评论中看到的那样,我不明白为什么我得到一个有大小的结果(我试图绘制):[4785行x 1340列]?
无论如何,代码会产生很多错误信息,比如说。
> Traceback (most recent call last): File
> "/usr/lib/python3.6/site-packages/matplotlib/backends/backend_qt5agg.py",
> line 197, in __draw_idle_agg
> FigureCanvasAgg.draw(self) File "/usr/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py",
...
> return _from_ordinalf(x, tz) File "/usr/lib/python3.6/site-packages/matplotlib/dates.py", line 254, in
> _from_ordinalf
> dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC) ValueError: ordinal must be >= 1
我读了一些帖子,我知道使用multiply时Pandas / Dataframe能够自动只对数据对进行元素乘法,其中日期相同(所以如果一个DF有时间序列,例如1999-2017而另一个只有例如2012-2015,那么只有2012-2015之间的公共日期将成倍增加,即数据集的交集子集) - 所以这个问题有关理解错误消息(和解决方案) - 整个问题与计算btc_dkk变量并绘制它(这是比特币在货币DKK中的价格)有关...
答案 0 :(得分:0)
这应该有效:
usd_dkk_price.multiply(btc_usd_price_kraken['Weighted Price'], axis='index').dropna()
您在列上而不是索引(这是因为您将数据帧与系列相乘,如果您在usd_dkk_price中选择了该列,则不会发生这种情况)。然后用NaN放下行。