Анализ целочисленной выборки на Python

fname = input('Имя файла: ')
ffile = open(fname)
sample = [] # список значений
for i in ffile:
    i = i.split()
    for j in i:
        j = int(j)
        sample.append(j)
 
length = len(sample)
minimum = min(sample)
maximum = max(sample)
print('Длина последовательности:',length)
print('Минимальное значение:',minimum)
print('Максимальное значение:',maximum)
 
def make_urange(urange,uranges): # заполняет список диапазонов
    i = minimum
    while i <= maximum:
        l = []
        l.append(i)
        i = i + urange
        if i < maximum:
            l.append(i-1)
        else:
            i = maximum + 1
            l.append(maximum)
        uranges.append(l)
 
uranges = []
way_range = input('Размерность диапазона(a), количество диапазонов(b), \
\nyказать диапазоны(c): ')
if way_range == 'a': # по размеру диапазона
    urange = int(input('Размерность диапазона: '))
    make_urange(urange,uranges)
elif way_range == 'b': # по количеству диапазонов
    qty_range = int(input('Количество диапазонов: '))
    urange = round((maximum-minimum+1)/qty_range)
    make_urange(urange,uranges)
elif way_range == 'c': # по указанным вручную диапазонам
    i = 1
    srange = input(str(i)+'-й диапазон (n - конец): ')
    while srange != 'n':
        i = i + 1
        srange = srange.split()
        srange[0] = int(srange[0])
        srange[1] = int(srange[1])
        uranges.append(srange)
        print(uranges)
        srange = input(str(i)+'-й диапазон (n - конец): ')
 
analysis = [] # количество значений в диапазонах
length = len(uranges) # сколько диапазонов
i = 0
while i < length: # Колич. значений в каждом диапазоне...
    analysis.append(0) # устанавливается в 0.
    i += 1
 
for i in sample: # Проверка каждого элемента в списке значений...
    j = 0
    for k in uranges: # на принадлежность к каждому диапазону.
        if k[0] <= i <= k[1]:
            analysis[j] = analysis[j] + 1
            #break элемент может входить в несколько диапазонов
        j += 1 # переход к следующему диапазону
 
print('Количество значений в диапазонах:')
k = 0
for i,j in uranges:
    pct = round((analysis[k]/len(sample))*100,2)
    print(str(i)+'-'+str(j)+':',str(analysis[k]),'('+str(pct)+'%)')
    k += 1

Функция определения диапазонов (make_urange)

  1. В качестве аргумента принимает размер диапазона и пустой список, куда будут добавляться границы вычисленных диапазонов.
  2. Обе границы каждого диапазона являются его допустимыми значениями («включительно»). Поэтому, прибавив размер диапазона, требуется вычесть единицу, иначе диапазон будет больше указанного размера (из-за включенного крайнего значения).
  3. Получившееся i — это начало следующего диапазона.
  4. Когда вычисленное i превосходит или равно maximum, i присваивается значение больше максимума, чтобы прервать цикл, а в правую границу диапазона записывается максимум.
  Менеджеры компоновки в PyQt на Python
Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x