我能够从Pandas数据帧中获得直方图,看起来很好。我还希望在同一图上将PDf / CDF显示为折线图。
我的代码:
import scipy.stats as stats
from scipy.stats import norm
samples=twentyandmiddle['age']
print samples.head(5)
plt.hist(samples, bins=40, normed=True)
#samples=samples[0]
plt.plot(samples,norm.pdf(samples), 'r-', lw=5, alpha=0.6, label='sample pdf')
plt.plot(samples,norm.cdf(samples), 'k-', lw=2, alpha=0.6, label='sample cdf')
plt.legend(loc='best', frameon=False)
plt.show()
我的问题是:图表中的cdf / pdf行只有0,如下所示:
出了什么问题?
head
输出:
0 59
1 58
2 57
3 54
4 51
Name: age, dtype: int64
答案 0 :(得分:1)
norm.pdf(x)
计算标准正态分布的PDF,均值为0和std。开发。 1.看起来你的值都大于20. norm.pdf(20)
是5.52e-88。同样,norm.cdf(20)
为1.0。
您的意思是首先将正态分布拟合到数据中,并绘制拟合分布的PDF和CDF吗?如果是这样,您需要在调用中包含拟合参数;例如norm.pdf(x, loc=mu, scale=stddev)
和norm.cdf(x, loc=mu, scale=stddev)
。