【问题标题】:Python: Visualize a normal curve on data's histogramPython:可视化数据直方图的正态曲线
【发布时间】:2014-11-24 22:41:56
【问题描述】:

提前感谢您提供任何帮助或提示。

我正在尝试将拟合法线可视化到我的数据框列之一。到目前为止,我已经能够通过以下方式绘制直方图:

df.radon_adj.hist(bins=30)

我有这个“template”,但我遇到了错误。

import pylab as py
import numpy as np
from scipy import optimize

# Generate a 
y = df.radon_adj
data = py.hist(y, bins = 25)

# Equation for Gaussian
def f(x, a, b, c):
    return a * py.exp(-(x - b)**2.0 / (2 * c**2))

# Generate data from bins as a set of points 
x = [0.5 * (data[1][i] + data[1][i+1]) for i in xrange(len(data[1])-1)]
y = data[0]

popt, pcov = optimize.curve_fit(f, x, y)

x_fit = py.linspace(x[0], x[-1], 100)
y_fit = f(x_fit, *popt)

plot(x_fit, y_fit, lw=4, color="r")

【问题讨论】:

标签: python pandas


【解决方案1】:

我不会通过定义高斯方程来重新发明轮子。站在 scipy 包的肩膀上:

from scipy.stats import norm  
df = pd.DataFrame({'A': np.random.normal(size=100)})

df.A.plot(kind='hist', normed=True)

range = np.arange(-4, 4, 0.001)
plt.plot(range, norm.pdf(range,0,1))

请注意,这里唯一的“魔术”是确保直方图是规范的。

【讨论】:

  • pandas v0.23.3 中,normed kwarg 已被弃用,并已被 density kwarg 所取代,使用 df.A.plot(kind='hist', density=True)
猜你喜欢
  • 1970-01-01
  • 2011-10-21
  • 2019-11-24
  • 2020-04-14
  • 1970-01-01
  • 2021-12-04
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多