Описание проекта "Программа 'Анализатор выборки'"

Назначение и возможности программы

Программа «Анализатор выборки» предназначена для начальной обработки статистических данных о качественных и количественных признаках объектов. Признаки могут быть представлены целыми числами, вещественными числами, словами или символами. Результатом работы программы являются сведения о распределении данных (выборки) по диапазонам (интервалам) или просто об их количественном соотношении (для нечисловых типов).

Приведем примеры, когда может быть полезна данная программа.

Пример 1. Тип данных – слова. Опрос населения перед выборами о предпочитаемой партии. Полученные данные записываются в виде слов, которые играют роль названия партии. Допустим, было опрошено 5000 человек. Программа покажет процент «проголосовавших» за каждую партию.

Пример 2. Тип данных – символ. Если признак описывается не словом, а одной буквой, то принцип тот же, что в предыдущем примере. Иначе, программа может выполнить частотный анализ. Частотный анализ используется не только для расшифровки кодов простой замены, но и для компрессии текстовых файлов, когда, оценив частоту встречаемости букв в тексте, сжимают файл, используя короткие коды для распространенных букв и длинные коды – для редких.

Пример 3. Тип данных – числовой. Например, надо оценить, сколько тратят граждане на приобретение вычислительной техники и мобильных устройств в год. Допустим, была сделана выборка объемом примерно в 2000 опрошенных человек. Программа определит минимальное значение, например, 1000 руб., максимальное, например, 30 000 руб. Определив диапазоны от 1 000 до 10 000, от 10 000 до 20 000 и от 20 000 до 30 000 с помощью программы мы можем узнать, сколько человек по данному признаку находится в каждом диапазоне.

Основные возможности программы включают (приложение 1):

  • Возможность редактировать и изменять загруженные данные.
  • Автоматическое определение типа данных, объема выборки (количество элементов данных), минимального и максимального значения (для числовых типов).
  • В случае необходимости «ручное» задание типа данных, минимального и максимального значения, указание точности представления числа.
  • Для числовых типов данных задание интервалов тремя способами. 1. Можно указать общее количество диапазонов и программа вычислит границы каждого. 2. Задать размер интервала, и тогда программа вычислит не только границы диапазонов, но и их количество. 3. Существует возможность указывать границы диапазонов вручную, если требуется.
  • Анализ распределения элементов данных по диапазонам и вывод результата в специальное текстовое поле построчно в формате «интервал – количество – процент».
  • Вывод результата анализа на холст в виде столбчатой диаграммы.
  • Сохранение результата обработки данных в текстовый файл.

Интерфейс программы
Кроме всего вышеперечисленного программа включает так называемый «Генератор случайных объектов» (приложение 2). Если нет настоящей выборки или данных, то для тестирования возможностей программы можно получить список случайных объектов. При этом можно выбрать тип данных, будут ли объекты генерироваться равновероятно или нет. Данные, полученные с помощью «генератора», сразу попадают в текстовое поле «анализатора».
Генератор выборки

Пример последовательности шагов при работе с программой

  1. Загружаем данные из файла (например, integers.txt) или просто вставляем их в текстовое поле, предварительно скопировав, либо генерируем их, если нет настоящей выборки. При генерации данных необходимо нажать кнопку «Сгенерировать», откроется дополнительное окно, которое позволяет указать количество элементов выборки, максимальное и минимальное значение для чисел, или указать количество элементов, из которых состоят данные выборки для символов и слов.
  2. После того, как данные вставлены в многострочное текстовое поле, необходимо нажать кнопку «Обработать» и программа автоматически определит, к какому типу данных принадлежит выборка, максимальное и минимальное значения (для числовых данных), общее количество элементов. Если у пользователя есть необходимость поменять тип данных, например, рассматривать дробные числа как целые, или слова как набор символов, то можно задать тип данных вручную. Для этого нужно установить соответствующий флажок и выбрать тот тип данных, который нужен. Для вещественных чисел можно так же указать точность их округления. По умолчанию программа округляет числа до 3-х знаков после запятой.
  3. Далее следует указать диапазоны (только для числовых данных). Диапазоны (интервалы) можно задать тремя способами: указать длину диапазона, указать количество диапазонов, так же реализована возможность задавать определенные диапазоны вручную. Например, если данные содержат числа от 1 до 100, то пользователь может указать количество диапазонов равное пяти, и программа сформирует диапазоны [1, 20], [21, 40], [41, 60], [61, 80], [80, 100]. Приложение запрограммировано так, что обе границы входят в диапазон.
  4. После ввода данных и диапазонов надо нажать на кнопку «Выполнить».
  5. Обработанные данные будут выведены в текстовое поле и на холст. В текстовом поле данные выводятся разбитыми на три колонки: интервал (для числовых данных) или элемент (для слов и символов), количество единиц данных, которые принадлежат к данному диапазону, а так же процент, который составляет диапазон от общего количества единиц данных. На холст выводится график в виде столбчатой диаграммы.
  6. При необходимости сохранить полученную информацию, нужно нажать кнопку «Сохранить данные», данные сохранятся в текстовом формате, аналогично тому, как они представлены в текстовом поле для результата.

Особенности разработки программы

Программа написана на языке программирования Python с использованием библиотеки графического интерфейса Tkinter. Поэтому может быть запущена в большинстве операционных систем, содержащих эти компоненты.

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

Программа содержит следующие функции:

  • Функции, блокирующие и открывающие части интерфейса. Например, если тип данных символьный, то задавать диапазоны не надо и соответствующие поля и радиокнопки блокируются.
  • Загрузка данных из файла в текстовое поле.
  • Функция, определяющая минимальное, максимальное значение в выборке, а также ее объем.
  • Определение типа данных.
  • Определение диапазонов для целых чисел.
  • Определение диапазонов для дробных чисел. Несмотря на то, что алгоритм работы данной функции похож на предыдущую, есть существенные различия при определении границ диапазонов и зависимость от точности представления числа. Такой проблемы нет при обработке целых чисел.
  • Анализ элементов выборки целых и дробных чисел на принадлежность диапазонам.
  • Анализ встречаемости слов или символов в выборке.
  • Обработка результата и вывод его в текстовое поле. Осуществляется форматирование данных.
  • Функция, строящая диаграмму на холсте по полученным данным анализа выборки.
  • Сохранение данных в файл.
  • Функция, генерирующая случайные объекты, которая содержит в себе также несколько пользовательских функций и использует возможности модуля random. Для численных типов данных удалось реализовать возможность неравновероятной генерации элементов.
  • Ряд иных вспомогательных функций.

Поскольку программа содержит графический интерфейс, что предполагает событийно-ориентированное программирование, то последовательность вызова функций не всегда однозначна.

Выводы

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

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

Литература и web-ресурсы

  1. Н. Гифт, Д. М. Джонс «Python в системном администрировании». СПб.: Символ-Плюс, 2009
  2. М. Лутц «Изучаем Python». СПб.: Символ-Плюс, 2008
  3. М. Саммерфилд «Программирование на Python 3». СПб.: Символ-Плюс, 2009
  4. А.Н. Чаплыгин «Учимся программировать вместе с Python», pdf
  5. И.А. Хахаев. Практикум по алгоритмизации и программированию на Python. М: Альт Линукс, 2010. – 126 с.
  6. Википедия - http://ru.wikipedia.org/

Создано