Создание интервалов как корзин - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть список цен, и я хочу создать диапазоны цен для моих корзин и индексировать их, если эта цена попадает в этот диапазон цен. Поэтому, если у меня есть:

list_1 = [10.16, 11.13, 15.01, 14.64, 13.8, 14.1, 14.65, 1.36, 1.43, 1.63, 1.7, 2.07]

Я хочу, чтобы ящики выглядели примерно так:

 bins
(0.0, 2.5]      5
(2.5, 5.0]      0
(5.0, 7.5]      0
(7.5, 10.0]     0
(10.0, 12.5]    2
(12.5, 15.0]    4
(15.0, 17.5]    1

Оттуда я sh построю гистограмму за то же самое

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

pandas.cut() - это очень простой способ указать произвольное граничное значение и разделить его.

import pandas as pd

list_1 = [10.16, 11.13, 15.01, 14.64, 13.8, 14.1, 14.65, 1.36, 1.43, 1.63, 1.7, 2.07]
rng = [0,2.5,5.0,7.5,10.0,12.5,15.0,17.5]
label = ['$0.00-$2.50','$2.50-$5.00','$5.00-$7.50','$7.50-$10.00','$10.00-$12.50','$12.50-$15.00','$15.00-$17.5']
data = pd.cut(list_1, rng, labels=label).value_counts()
data
$0.00-$2.50      5
$2.50-$5.00      0
$5.00-$7.50      0
$7.50-$10.00     0
$10.00-$12.50    2
$12.50-$15.00    4
$15.00-$17.50     1
dtype: int64
0 голосов
/ 22 апреля 2020

Если вы будете sh строить только гистограмму, вы можете использовать следующий код

  import matplotlib.pyplot as plt
  plt.hist(list1,bins=[0,2.5,5,7.5,10,12.5,15,17.5])

Иначе, если вы sh создадите кадр данных с ячейками, соответствующими их частоте, вы можете следуйте этому:

  import pandas as pd
  import numpy as np
  list1=[10.16, 11.13, 15.01, 14.64, 13.8, 14.1, 14.65, 1.36, 1.43, 1.63, 1.7, 2.07]
  binned=pd.cut(np.array(list1),bins=[0,2.5,5,7.5,10,12.5,15,17.5])

  '''output: [(10.0, 12.5], (10.0, 12.5], (15.0, 17.5], (12.5, 15.0], (12.5, 15.0], ..., (0.0, 2.5], (0.0, 2.5], (0.0, 2.5], (0.0, 2.5], (0.0, 2.5]]
    Length: 12
    Categories (7, interval[float64]): [(0.0, 2.5] < (2.5, 5.0] < (5.0, 7.5] < (7.5, 10.0] < (10.0, 12.5] < (12.5, 15.0] < (15.0, 17.5]]'''

  df=pd.DataFrame({'value':list1,'bins':binned})
  df.groupby('bins')['value'].count()

Объяснение: pandas .cut () помогает нам заменить ячейки, соответствующие значениям в list1. Затем создайте фрейм данных, используя «list1» и «binned». Сгруппируйте в «binned» и посчитайте частоту в list1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...