У меня есть фрейм данных с именем 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.
Я подтвердил, что оба столбца являются числовыми и даже вставил две функции в функцию, чтобы убедиться, что они оба числовые, поэтому мне неясно, как используются временные метки.
Странно, если я пытаюсь запустить точно такой же код (не в функции), тогда кажется, что построение графика работает.
Я понимаю, что это немного расплывчато, но мне интересно, было ли это замечено ранее, и есть ли решение или я что-то упустил.