Панды: написание функции, которая возвращает среднюю точку интервала бина вместе со средним значением - PullRequest
0 голосов
/ 21 мая 2019

Я написал следующую функцию:

def binning(df, end, numberofbins):
    df = df[df['xaxis'] <= end]
    bins = np.linspace(df['xaxis'].min(), df['xaxis'].max(), numberofbins)
    groups = df.groupby(pd.cut(df['xaxis'], bins))
    return groups.mean()['yaxis']

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

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

РЕДАКТИРОВАНИЕ ДОБАВИТЬ: Я пытался заранее добавить retbin=True в конце pd.cut(), но получил ошибку.Я предполагаю, что это связано с тем, что функция df.groupby не может справиться с этим.

1 Ответ

0 голосов
/ 22 мая 2019

РЕДАКТИРОВАТЬ: Это настраивает вашу функцию так, чтобы она возвращала ряд средних, индекс которых является средней точкой интервалов вместо интервалов:

def binning(df, end, numberofbins):
    df = df[df['xaxis'] <= end]
    bins = np.linspace(df['xaxis'].min(), df['xaxis'].max(), numberofbins)
    labels = np.diff(bins)/2 + bins[:-1]
    groups = df.groupby(pd.cut(df['xaxis'], bins))
    return pd.Series(groups.mean()['yaxis'].values, index=labels)

Если вы просто ищете средние точки корзин, вы используете только информационный кадр для поднабора с помощью 'end' и для получения нижней и верхней границ корзин. Если это так, это должно работать:

def binning_mid(df, end, numberofbins):
    df = df[df['xaxis'] <= end]
    bins = np.linspace(df['xaxis'].min(), df['xaxis'].max(), numberofbins)
    intervals = pd.IntervalIndex.from_arrays(bins[:-1], bins[1:])
    midpoints = np.diff(bins)/2 + bins[:-1]
    return pd.Series(midpoints, index=intervals)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...