为什么我在绘制分布时会得到多行?

时间:2018-03-24 02:41:12

标签: python matplotlib scipy statistics distribution

我有数据,我试图适应正常和对数正态分布。 df.head(10)

year    Q
1885     7241
1886     9164
1887     7407
1888     6870
1889     9855
1890    11887
1891     8827
1892     7546
1893     8498
1894    16757
Name: Q, dtype: int64

拟合分布

from scipy import stats
mean = df['Q'].mean()
std = df['Q'].std()
print(mean, std)
6636.172413793103 3130.779541854595

#Fitting
distnormal = stats.norm.pdf(df['Q'], loc = mean, scale = std)
distlognormal = stats.pearson3.pdf(df['Q'], skew = 1, loc = mean, scale = std)

# Plotting
df.hist(bins=10, edgecolor='#4aaaaa', density = True)
plt.plot(df['Q'], distnormal, color = 'red')
plt.plot(df['Q'], distlognormal, color = 'blue')
plt.show()

但是我得到的情节太多了。如何正确配合分销? enter image description here

1 个答案:

答案 0 :(得分:1)

您将df['Q']作为x参数传递给plt.plot。正如数据摘要显示的那样,df['Q']中的值未排序 - 这是导致问题的原因。在绘制数据框之前,请尝试按Q列对数据框进行排序。