我正试图完成此功能的编写
def plot_poisson(df, col='open', n_pts=100)
其中:
我正在尝试使用列的平均值和bar函数绘制列col的泊松分布的PMF。
我是一个初学者,即使看了https://pythonspot.com/matplotlib-bar-chart/,我也不了解plt.bar的工作原理,以及如何合并n_pts参数。
def plot_poisson(df, col='open', n_pts=100):
fig, ax = plt.subplots(figsize=(10, 5))
plt.bar
plt.xlabel("X")
plt.ylabel("P(X|\mu)")
plt.title("Poisson PMF")
return ax
答案 0 :(得分:1)
因此,如果我理解正确,您想从泊松分布中提取n_pts
个数字,该分布的每个间隔的平均事件数等于数据的平均值(来自dataframe列)。
然后您要绘制分布。
如果是这样,您可以使用numpy
轻松完成此操作,该功能提供了从分布中提取随机数的功能。例如,numpy.random.poisson从泊松分布中提取数字。
使用plt.hist比使用plt.bar
要容易得多。
使用bar
时,您必须选择一个容器大小和容器位置,自己计算每个容器中有多少数据,然后绘制直方图。 plt.hist
为您完成所有这一切。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_poisson(df, col='open', n_pts=100):
lm = df[col].mean() #get the mean value of your data
poisdata = np.random.poisson(lm, n_pts)
plt.hist(poisdata, density=True, alpha=0.5)
plt.xlabel("X")
plt.ylabel("P(X|\mu)")
plt.title("Poisson PMF")
plt.show()
此功能产生的示例图片:
答案 1 :(得分:0)
尝试这个:
def plot_poisson(df, col='open', n_pts=100):
pts=np.arange(n_pts)
fig,ax=plt.subplots(figsize=(10,5))
lm = df[col].mean() #get the mean value of your data
poisdata = np.random.poisson(lm)
ax.bar(pts,poisdata.pmf(pts))
ax.set_xlabel("X")
ax.set_ylabel("P(X|\mu)")
ax.set_title("Poisson PMF")
return ax