Функция matplotlib, выдающая странную ошибку - PullRequest
0 голосов
/ 09 мая 2019

У меня есть фрейм данных с именем 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.

Я подтвердил, что оба столбца являются числовыми и даже вставил две функции в функцию, чтобы убедиться, что они оба числовые, поэтому мне неясно, как используются временные метки.

Странно, если я пытаюсь запустить точно такой же код (не в функции), тогда кажется, что построение графика работает.

Я понимаю, что это немного расплывчато, но мне интересно, было ли это замечено ранее, и есть ли решение или я что-то упустил.

...