Урок курса
Загрузка и сохранение данных
Jupyter Notebook с нуля: бесплатный курсЧтение данных из файлов
Большинство проектов по анализу данных включает загрузку данных из внешних источников (файлов). Рассмотрим чтение самых распространённых форматов:
-
Текстовые файлы (TXT): Используем стандартные средства Python. Например:
with open("example.txt", "r", encoding="utf-8") as f: text = f.read() print(text[:100])Это откроет файл
example.txtна чтение и сохранив его содержимое в строкуtext(для демонстрации мы вывели первые 100 символов). Блокwithавтоматически закроет файл после чтения. -
CSV (Comma-Separated Values): Очень популярный формат табличных данных. Библиотека pandas делает работу с ним особенно простой:
import pandas as pd df = pd.read_csv("data.csv") df.head()Функция
pd.read_csvчитает CSV-файл и возвращает DataFrame. Методhead()покажет первые несколько строк, чтобы убедиться, что данные загрузились правильно (по умолчанию 5 строк). Если у CSV-разделитель не запятая или нет заголовка, есть параметры вродеsep=";",header=None. -
Excel (XLSX): Можно использовать
pd.read_excel("table.xlsx"), но нужна установка дополнительных пакетов (например, openpyxl). Похожим образомpd.to_excelсохраняет DataFrame в Excel. -
JSON:
pd.read_json("data.json")– прочитает JSON, если он в табличном формате, и сделает DataFrame. Иначе можно использовать модульjsonстандартной библиотеки.
Пример (CSV): Предположим, у нас есть файл students.csv с содержимым:
name,score Ann,87 Ben,90 Joe,78
Читаем его:
df = pd.read_csv("students.csv")
print("Всего строк:", len(df))
display(df)
Вывод будет:
Всего строк: 3
и таблица:
| name | score | |
|---|---|---|
| 0 | Ann | 87 |
| 1 | Ben | 90 |
| 2 | Joe | 78 |
Теперь DataFrame df содержит наши данные, и мы можем их анализировать (например, df["score"].mean()).
Чтение данных из интернета: В ноутбуке можно загружать данные по URL с помощью функций или системных команд:
-
Библиотека
requestsпозволяет скачивать файлы, либо можно использовать!wget/!curlкак shell-команду. Например:!wget -O data.csv https://raw.githubusercontent.com/пример/data.csvскачает файл по ссылке в текущую папку под именем data.csv.
-
В Google Colab и JupyterHub могут быть свои способы загрузки файлов (например, через интерфейс).
После скачивания файла таким образом, вы можете читать его обычными методами (например, pd.read_csv("data.csv")).
Предварительный анализ данных с pandas
После загрузки данных стоит получить общее представление о них:
-
Размерность таблицы:
df.shapeпокажет кортеж(число_строк, число_столбцов). -
Просмотр первых/последних строк:
df.head(n)иdf.tail(n)дают первые и последние n строк (по умолчанию n=5). Это помогает убедиться в структуре данных. -
Сводка информации:
df.info()выведет тип данных каждого столбца, сколько непустых значений и объём занимаемой памяти. Полезно для выявления пропусков и типов (например, убедиться, что числа не считались как строки). -
Описательная статистика:
df.describe()рассчитает основные статистики для числовых столбцов: count (количество), mean (среднее), std (стандартное отклонение), min, max, quartiles. Это даёт быстрое понимание диапазона и распределения чисел.
Например:
print("Размер датафрейма:", df.shape)
print("\nИнформация о данных:")
df.info()
print("\nСтатистики:")
display(df.describe())
(Здесь display используется для более красивого отображения таблицы статистик.)
Вы также можете обращаться к столбцам и выполнять операции:
-
df["score"]– серия (Series) со значениями столбца score. -
df["score"].mean()– среднее значение этого столбца. -
df["name"].unique()– уникальные имена из столбца name. -
Логические условия:
df[df["score"] > 80]– отфильтрует строки, где score > 80 (в нашем примере вернёт Ann и Ben).
Группировка и агрегирование: Pandas позволяет легко группировать данные и применять агрегатные функции:
# Если бы был столбец, например, класс класса, можно так:
# Средний балл по каждому классу
# df.groupby("class")["score"].mean()
В нашем случае класса нет, но сама возможность пригодится на реальных данных.
Применение: если у нас DataFrame df по ирисам (как в примере iris далее), можно сделать df.groupby("species").agg({"sepal_length": ["mean", "std"], "petal_length": "mean"}) – это рассчитает среднее и стд. отклонение для sepal_length и среднее для petal_length по каждому виду species.
Сохранение результатов вычислений
После анализа часто нужно сохранить полученные данные или результаты:
-
CSV/Excel: Если вы обработали DataFrame и хотите записать его:
-
df.to_csv("result.csv", index=False)– сохранит DataFrame в файл CSV без индексов (номеров строк). -
df.to_excel("result.xlsx", index=False)– экспорт в Excel (потребуетсяopenpyxl).
-
-
JSON:
df.to_json("result.json"). -
Запись текста: Для текстовых данных можно снова использовать
open(...):with open("summary.txt", "w") as f: f.write("Средний балл: " + str(df["score"].mean()))Это создаст/перезапишет файл
summary.txtс вашим текстом (например, итоговой статистикой). -
Сохранение графиков: о сохранении изображений поговорим в модуле 4 (через
plt.savefig). -
Сохранение самого ноутбука: Jupyter Notebook хранится в
.ipynb. При нажатии «Сохранить» он уже сохраняется. Для экспорта в другие форматы (HTML, PDF) воспользуемся инструментами, о которых тоже пойдёт речь в модуле 4.
Если работаете на удалённом сервере (например, Colab), чтобы скачать файл на свой компьютер, нужно использовать их интерфейс (в Colab files.download). Локально же файлы сохраняются на ваш диск автоматически.
Контроль версий данных/кода: Рекомендуется хранить оригинальные данные неизменными, а результаты или обработанные данные — в новых файлах, чтобы всегда можно было восстановить исходное. При использовании Git, не забывайте, что CSV или Notebook — текстовые файлы, их можно версионировать, но большие двоичные файлы (Excel, изображения) в гит лучше не класть или использовать LFS.
Продолжить с проверкой и прогрессом
Откройте интерактивный раннер с заданиями урока.
