2.2 РАБОТА С ФАЙЛАМИ И ФОРМАТАМИ ДАННЫХ

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

·       текстовые файлы;

·       табличные файлы (CSV, Excel);

·       структурированные документы (JSON, XML);

·       реляционные базы данных;

·       сетевые API.

Независимо от источника, перед выполнением анализа данные должны пройти несколько обязательных этапов подготовки:

1)      Считывание в программу – получение доступа к данным.

2)      Преобразование во внутренние структуры Python – списки, словари, массивы, таблицы.

3)      Проверка корректности – выявление пропусков, ошибок формата, некорректных значений.

4)      Подготовка к обработке – очистка, фильтрация, приведение типов.

Таким образом, работа с файлами – это не вспомогательная операция, а обязательный этап аналитического процесса.

Форматы хранения данных. Данные могут храниться в различных форматах. Выбор формата зависит от:

·       структуры информации;

·       объёма данных;

·       требований к скорости обработки;

·       области применения.

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

 

Таблица 2.5 – Основные форматы хранения данных в анализе

Формат

Назначение

TXT

Простые текстовые файлы (журналы событий, списки значений)

CSV

Табличные данные с разделителями

JSON

Иерархические данные формата «ключ–значение»

XLSX

Электронные таблицы Microsoft Excel

XML

Структурированные документы с теговой разметкой

SQL (базы данных)

Реляционные хранилища данных

Parquet

Колончатый формат хранения для больших объёмов данных

Feather

Быстрый бинарный формат обмена табличными данными

API (HTTP-ответы)

Данные, получаемые через сетевые сервисы

 

В рамках данного раздела сначала рассматривается текстовый файл как базовую модель работы с внешними данными. На его основе формируется понимание логики загрузки и преобразования информации. Далее будут рассмотрены более сложные форматы – CSV, JSON и Excel.

2.2.1 Текстовый файл как базовая модель работы с данными

1. Что такое текстовый файл

Текстовый файл – это внешний носитель информации, в котором данные представлены в виде последовательности символов. Файл хранится на диске компьютера и не является объектом 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 гарантирует корректное завершение работы с файлом даже при возникновении ошибки.

4. Режимы открытия файла

Выбор режима определяет допустимые операции (таблица 2.6).

 

Таблица 2.6 – Режимы работы с текстовыми файлами

Режим

Назначение

"r"

Чтение (ошибка, если файл отсутствует)

"w"

Запись (создание нового файла или перезапись существующего)

"a"

Добавление данных в конец файла

"r+"

Чтение и запись

"b"

Бинарный режим (для не-текстовых данных)

 

Пример записи:

with open("result.txt", "w", encoding="utf-8") as file:

    file.write("Результаты анализа\n")

Если используется режим "w", существующее содержимое файла будет удалено.

5. Основные методы работы с текстовым файлом

После открытия файла используются методы файлового объекта (таблица 2.7).

 

Таблица 2.7 – Основные методы работы с текстовым файлом

Метод

Назначение

Пример

read()

Чтение всего файла целиком

file.read()

readline()

Чтение одной строки

file.readline()

readlines()

Чтение всех строк в список

file.readlines()

Итерация

Построчная обработка

for line in file:

write()

Запись строки

file.write("text")

 

Выбор способа чтения зависит от объёма данных. В аналитике наиболее часто применяется построчная обработка.

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 или для вычисления статистик.

7. Обработка исключений

При работе с файлами возможны ошибки:

·           файл отсутствует (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;

·       контроль корректности данных.

Понимание этой логики необходимо для перехода к более сложным форматам хранения информации.