我有一个名为df的数据框,在jupyter笔记本中有两个数字变量。
df.head()
responseRates_Outgoing_Messages responseRates_Outgoing_Messages
22640 0 0
181487 5 5
327672 1 1
254919 19 19
136942 14 14
我正在尝试编写一个函数,该函数将用户定义的平滑应用于数据,然后返回绘图。这是该功能:
from matplotlib import pyplot
%matplotlib inline
def determineSmoothness(df, numX = 0, denomX = 0, subsetDenom = 0):
df["responseRates_Outgoing_Messages"] = pd.to_numeric(df["responseRates_Outgoing_Messages"])
df["responseRates_Messages_Received"] = pd.to_numeric(df["responseRates_Messages_Received"])
df = df.query('responseRates_Outgoing_Messages < @subsetDenom')
df["responseRates_Outgoing_Messages"] = df["responseRates_Outgoing_Messages"] + denomX
df["responseRates_Messages_Received"] = df["responseRates_Messages_Received"] + numX
pyplot.hist(df["responseRates_Messages_Received"], alpha = 0.5, label = 'Messages Received')
pyplot.hist(df["responseRates_Outgoing_Messages"], alpha = 0.5, label = 'Messages Sent')
pyplot.legend(loc = "upper right")
当我在jupyter笔记本中运行此功能时,会出现以下错误:
df = training_data.copy()
ef.determineSmoothness(df, 12, 100, 400)
ValueError: Cannot add integral value to Timestamp without freq.
我已经确认这两列都是数字的,甚至已经在函数中插入了两行以确保它们都是数字,所以我不清楚如何涉及时间戳。
奇怪的是,如果我尝试运行完全相同的代码(不在函数中),则绘图似乎可以正常工作。
我知道这有点含糊,但想知道这是否以前曾见过,是否有解决方案,或者我是否完全错过了一些东西。