График столбца данных каждой записи, принадлежащей определенному диапазону чисел? - PullRequest
1 голос
/ 25 апреля 2020

У меня есть pandas фрейм данных следующим образом:

x = pd.DataFrame({'total':[100,340,238,394,5859,324,5545,75858,563,613,123,6654,253,7567]}) 

#actual number of entries can be in thousands

И я хочу сначала преобразовать их в диапазоны, какими бы они ни были, например диапазон 10 значений. Все значения будут помещены в соответствующие ячейки. Например,

[100-200]:[100, 123]
[200-300]:[238]

И затем я хочу построить гистограмму, чтобы увидеть, какой диапазон самый высокий, какой второй и т. Д.

Я до сих пор пытался вручную создать диапазоны и отсортировать. Но весь смысл анализа заключается в том, чтобы найти диапазоны, которые получаются из данных, а не давать их самому. Пожалуйста, помогите.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020
x = pd.DataFrame({'total': [100, 340, 238, 394, 5859, 324, 5545, 75858, 563, 613, 123, 6654, 253, 7567]})
m = x['total'].max()

jumps = []
# creating the jumps (ranges of 100)
for item in range(0, m, 100):
    jumps.append([item, item + 100])

# creating filter for each range
for item in jumps:
    filter_numbers = ((x['total'] >= item[0]) & (x['total'] < item[1]))
    print(x.loc[filter_numbers]) # you can save the data here and plot it later on

Здесь вы go, обратите внимание, что последняя строка кода - это то, что вы искали.

Теперь все, что вам нужно сделать, это сохранить их в pd и вывести на график, однако ты хочешь.

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

Для преобразования в диапазоны:

ranges = {}
for i in range(0, int(x.max()), 1000):
    start = i
    end = i + 1000
    r = '['+str(start)+'-'+str(end)+']'
    for value in x.values:
        if i<=value[0]<end:
            if r in ranges:
                ranges[r].append(int(value[0]))
            else:
                ranges[r] = [int(value[0])]

Данные в диапазонах имеют нужный формат. Теперь вы можете использовать эти данные для построения желаемого графика.

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