Зачем использовать массив np.linspace в качестве входных данных для функции вырезания панд, вместо того, чтобы задавать бинам целое число? - PullRequest
0 голосов
/ 22 апреля 2019

Зачем использовать np.linspace () для генерации массива интервалов, который будет использоваться функцией pd.cut () в ее параметре 'bins', когда параметр 'bins' принимает int в качестве входных данных и возвращает тот же результат?

Сейчас я изучаю навыки анализа данных на питоне из онлайн-курса и смущен методологией объединения данных.

Курс научил нас использовать np.linspace () для генерации массива интервалов с номерами срезов, а затем передать его в функцию pd.cut () с параметром 'bins'. Но я обнаружил, что могу просто ввести int для «bin» (количество интервалов) и получить тот же результат, что и при передаче массива интервалов np.linspace ().

Я прочитал в Интернете статью, в которой делается то же самое (используя np.linspace вместо того, чтобы просто вводить 'bin' int).

Какая методология стоит за этим и Что я здесь упустил? Это похоже на избыточную работу.

мой df для проверки

n = pd.DataFrame([1,5,3,4,5,5,7,2,9,10],columns = ['col'])

дать pd.cut int номер в качестве ввода (интервал номер, который я хочу 4)

n['col_cut'] = pd.cut(n['col'],bins= 4)

генерирует интервальный граничный массив с 5 разрезами (4 интервалами). Метод, изложенный в моем курсе и предложенный в некоторых статьях

bins = np.linspace(n['col'].min(),n['col'].max(),5)

n['cut_lin'] = pd.cut(n['col'],bins = bins, include_lowest = True)

номера назначаются одинаковым интервалам с использованием обоих методов.

print(n)

col col_cut cut_lin
0 1 (0.991, 3.25] (0.999, 3.25]
1 5 (3.25, 5.5] (3.25, 5.5]
2 3 (0.991, 3.25] (0.999, 3.25]
3 4 (3.25, 5.5] (3.25, 5.5]
4 5 (3.25, 5.5] (3.25, 5.5]
5 5 (3.25, 5.5] (3.25, 5.5]
6 7 (5.5, 7.75] (5.5, 7.75]
7 2 (0.991, 3.25] (0.999, 3.25]
8 9 (7.75, 10.0] (7.75, 10.0]
9 10 (7.75, 10.0] (7.75, 10.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...