下午好,
我是新手。我试图绘制一个扩散返回的直方图,然而,matplotlib拒绝绘制直方图而没有相应的错误。你会这么好解释一下,我在代码中的错误在哪里。感谢。
import numpy as np
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt
goog = web.DataReader('GOOG', data_source='google',
start='3/14/2009', end='4/14/2014')
goog.tail()
goog['Ret'] = ((goog['Close'] - goog['Close'].shift(1)) /
goog['Close'].shift(1))*100
goog[['Close','Ret']].tail()
WY = web.DataReader('WY', data_source='google',
start='3/14/2009', end='4/14/2014')
WY.tail()
WY['Ret'] = ((WY['Close'] - WY['Close'].shift(1)) /WY['Close'].shift(1))*100
WY[['Close','Ret']].tail()
a=goog['Ret']
a = a[~np.isnan(a)]
b=WY['Ret']
b = b[~np.isnan(b)]
%matplotlib inline
my_array = [i/m for i,m in zip(a, b)]
plt.hist(my_array, bins=25)
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
答案 0 :(得分:1)
这是因为你的数组中有treeGrid.getEl().getScrollTop()
个值。
如果你阻止0分裂,你可以解决这个问题:
inf
或与:
my_array = [i/m for i,m in zip(a, b) if m!=0]
答案 1 :(得分:-1)
嗯,我不确定你想要绘图,但是看到你用两列压缩两个列表,然后你可以用hist()绘制它
您的代码中还有另一个错误我更改了第10行,goog['Ret']=((goog['Close'].shift(1)))
plt.hist(a, bins=25)
plt.hist(b, bins=25)
此第40行的问题是参数my_array
。
a
和b
是您在my_array = [i/m for i,m in zip(a, b)]
制作没有直方图标签的列表时的字典。
然后最后代码是:
import numpy as np
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt
goog = web.DataReader('GOOG', data_source='google',
start='3/14/2009', end='4/14/2014')
goog.tail()
#print(goog['Ret'])
goog['Ret']=((goog['Close'].shift(1)))
#goog['Close'].shift(1))*100
#print(((goog['Close'].shift(1)),goog['Close'].shift(1))*100)
#print(((goog['Close'].shift(1))))#,goog['Close'].shift(1)))
goog[['Close','Ret']].tail()
WY = web.DataReader('WY', data_source='google',
start='3/14/2009', end='4/14/2014')
WY.tail()
WY['Ret'] = ((WY['Close'] - WY['Close'].shift(1)) /WY['Close'].shift(1))*100
WY[['Close','Ret']].tail()
a=goog['Ret']
a = a[~np.isnan(a)]
b=WY['Ret']
b = b[~np.isnan(b)]
#matplotlib inline
my_array = [i/m for i,m in zip(a, b) if m!=0] # This works too
#print (a)
#print (b)
plt.hist(my_array, bins=25)
#plt.hist(a, bins=25)
#plt.hist(b, bins=25)
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
plt.show()
我真的希望这可以帮助你。
祝你好运,如果这有助于你不要忘记接受答案和/或投票。