В задачах анализа данных информация, как правило, поступает из внешних источников. Программа Python не создаёт исходные данные самостоятельно – она получает их из файлов, баз данных, электронных таблиц или сетевых сервисов. К внешним источникам данных относятся:
· текстовые файлы;
· табличные файлы (CSV, Excel);
· структурированные документы (JSON, XML);
· реляционные базы данных;
· сетевые API.
Независимо от источника, перед выполнением анализа данные должны пройти несколько обязательных этапов подготовки:
1) Считывание в программу – получение доступа к данным.
2) Преобразование во внутренние структуры Python – списки, словари, массивы, таблицы.
3) Проверка корректности – выявление пропусков, ошибок формата, некорректных значений.
4) Подготовка к обработке – очистка, фильтрация, приведение типов.
Таким образом, работа с файлами – это не вспомогательная операция, а обязательный этап аналитического процесса.
Форматы хранения данных. Данные могут храниться в различных форматах. Выбор формата зависит от:
· структуры информации;
· объёма данных;
· требований к скорости обработки;
· области применения.
Основные форматы, используемые в аналитической практике, приведены в таблице 2.5.
Таблица 2.5 – Основные форматы хранения данных в анализе
|
Формат |
Назначение |
|
|
Простые текстовые файлы (журналы событий, списки значений) |
|
|
Табличные данные с разделителями |
|
|
Иерархические данные формата «ключ–значение» |
|
|
Электронные таблицы Microsoft Excel |
|
|
Структурированные документы с теговой разметкой |
|
|
Реляционные хранилища данных |
|
|
Колончатый формат хранения для больших объёмов данных |
|
|
Быстрый бинарный формат обмена табличными данными |
|
|
Данные, получаемые через сетевые сервисы |
В рамках данного раздела сначала рассматривается текстовый файл как базовую модель работы с внешними данными. На его основе формируется понимание логики загрузки и преобразования информации. Далее будут рассмотрены более сложные форматы – CSV, JSON и Excel.
Текстовый файл – это внешний носитель информации, в котором данные представлены в виде последовательности символов. Файл хранится на диске компьютера и не является объектом Python. Это означает, что программа не может выполнять вычисления с данными напрямую, пока они не будут считаны в память и преобразованы во внутренние структуры языка. Каждая строка текстового файла заканчивается специальным символом перевода строки \n. Например, файл может содержать:
10
25
17
32
Физически это последовательность символов:
"1""0""\n""2""5""\n""1""7""\n""3""2"
Даже если в файле записаны числа, Python при чтении воспринимает их как строки. Преобразование в числовой тип выполняется отдельно.
2. Логика обработки текстового файла
Работа аналитика с текстовым файлом включает последовательные этапы:
1) Получение доступа к файлу.
2) Выбор режима работы.
3) Считывание данных.
4) Преобразование строк во внутренние типы данных.
5) Проверка корректности.
6) Передача данных в дальнейший анализ.
Следует понимать, что чтение файла – это не один оператор, а осмысленных действий.
3. Функция open() и конструкция with
Для доступа к
файлу используется встроенная функция open(). Общий синтаксис:
open(имя_файла, режим, encoding="utf-8"),
где:
·
имя_файла
– путь к файлу;
·
режим –
способ работы;
·
encoding –
кодировка текста.
Пример открытия файла для чтения:
file = open("data.txt", "r",
encoding="utf-8")
Однако после работы файл необходимо закрыть:
file.close()
Если файл не закрывать, возможны проблемы с освобождением ресурсов операционной системы. Поэтому в аналитической практике применяется конструкция with, которая автоматически закрывает файл:
with
open("data.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
Конструкция with
гарантирует корректное завершение работы с файлом даже при возникновении
ошибки.
Выбор режима определяет допустимые операции (таблица 2.6).
Таблица 2.6 – Режимы работы с текстовыми файлами
|
Режим |
Назначение |
|
|
Чтение (ошибка, если файл отсутствует) |
|
|
Запись (создание нового файла или перезапись существующего) |
|
|
Добавление данных в конец файла |
|
|
Чтение и запись |
|
|
Бинарный режим (для не-текстовых данных) |
Пример записи:
with open("result.txt", "w",
encoding="utf-8") as file:
file.write("Результаты анализа\n")
Если используется
режим "w", существующее содержимое
файла будет удалено.
5. Основные методы работы с текстовым файлом
После открытия файла используются методы файлового объекта (таблица 2.7).
Таблица 2.7 – Основные методы работы с текстовым файлом
|
Метод |
Назначение |
Пример |
|
|
Чтение всего файла целиком |
|
|
|
Чтение одной строки |
|
|
|
Чтение всех строк в список |
|
|
|
Построчная обработка |
|
|
|
Запись строки |
|
Выбор способа чтения зависит от объёма данных. В аналитике наиболее часто применяется построчная обработка.
6. Построчная обработка данных
Рассмотрим пример преобразования текстового файла с числовыми данными в список. Корректно оформленный пример:
# Создаётся пустой список для накопления числовых значений
values = []
# Открытие файла data.txt в режиме чтения
#
encoding="utf-8" указывает кодировку текста
with
open("data.txt", "r", encoding="utf-8") as file:
#
Чтение файла построчно
for
line in file:
#
Удаление символа перевода строки и лишних пробелов
# Преобразование строки в вещественное число
number = float(line.strip())
# Добавление полученного числа в список
values.append(number)
# Вывод сформированного списка числовых значений
print(values)
Пояснения к коду
line.strip() – удаляет символ перевода
строки;
float() – преобразует строку в
число;
append() – добавляет значение в
список;
print(values) – формируется
выборка данных.
Теперь данные готовы для передачи в NumPy, Pandas или для вычисления статистик.
При работе с файлами возможны ошибки:
·
файл
отсутствует (FileNotFoundError);
·
данные имеют неверный формат (ValueError).
Для повышения
устойчивости программы применяется конструкция try-except:
# Блок try используется для перехвата возможных ошибок
try:
# Попытка открыть файл в режиме чтения
#
Если файл отсутствует, возникнет FileNotFoundError
with
open("data.txt", "r", encoding="utf-8") as file:
# Создание списка для хранения числовых значений
values
= []
#
Чтение файла построчно
for
line in file:
# Удаление символа перевода строки и преобразование строки в число
# Если строка не может быть преобразована в float, возникнет ValueError
values.append(float(line.strip()))
# Обработка ситуации, когда файл не найден
except
FileNotFoundError:
print("Файл не найден.")
# Обработка ситуации, когда данные имеют некорректный формат
except ValueError:
print("Обнаружены
некорректные данные.")
Обработка исключений предотвращает аварийное завершение программы и является обязательной частью профессиональной практики анализа данных.
Методический вывод. Текстовый файл является базовой моделью внешнего источника данных. Работа с ним включает:
· получение доступа к файлу;
· выбор режима работы;
· считывание данных;
· преобразование строк во внутренние структуры Python;
· контроль корректности данных.
Понимание этой логики необходимо для перехода к более сложным форматам хранения информации.