ex exxam.ruВсе задания
практикагенератор таблицPythonбез регистрации

Тренажёр: читаем файл с таблицей

Прежде чем решать задачу, надо понять, что лежит в файле: сколько строк, какие колонки, где пропуски, какой диапазон значений. Тренажёр ведёт по шагам и учит это узнавать командами Python.

Зачем разбирать файл

Пока не знаешь, что внутри файла, задачу не решить: сколько там строк, какие колонки, есть ли пустые значения, какой у данных диапазон. Сначала файл «разведывают» — и только потом пишут программу-решение.

Читаем строки и колонки

Файл читают целиком и разбивают на строки, а строку — на поля по разделителю (здесь это ;):

lines = open("table.csv").read().splitlines()
header = lines[0].split(";") # список колонок
rows = [l.split(";") for l in lines[1:]]

Считаем и проверяем

Число строк — len(rows); уникальные значения — len(set(vals)); минимум и максимум — min и max; сумма — sum. Пропуск — это пустое поле: его находят сравнением == "".

Порядок разбора

Разумно идти так: колонки и шапка → число строк → пропуски в колонке → диапазон (min/max) → уникальные значения. После этого видно, какие команды нужны в решении.

Как пользоваться этим режимом. На каждом шаге прочитайте вопрос, напишите команду в песочнице и нажмите «Выполнить», затем «Проверить»: вывод сверится с эталоном. Если трудно — откройте подсказку и решение, вставьте команду в песочницу.

Мини-разбор: что обычно смотрят в файле

Перед вами одни и те же данные в двух видах: текстовый файл — как он лежит на диске (построчно, поля через разделитель ;) — и таблица, как её читает программа. Это не два разных набора, а одно и то же. Идите по шагам: активный шаг подсвечивает нужное в обоих видах и показывает код с результатом.

1Смотрим первые строки — разделитель и шапка

Прежде чем что-то считать, посмотри на файл «глазами»: выведи первые строки как текст. Так видно, что разделитель — ;, а первая строка — заголовок.

2Заголовок — какие колонки

Первая строка — это названия колонок. Раздели её по ; и получишь список.

3Сколько строк данных

Строка-заголовок не считается. Число строк данных — базовая величина: от неё зависят средние и проценты.

4Есть ли пропуски в колонке

Пустое поле между разделителями — это пропуск. Проверь важную колонку: данные могут быть заполнены не везде.

5Пропуски по всей таблице

Полезно знать общее число пропусков — сколько полей пустые во всех колонках.

6Диапазон числовой колонки

Минимум и максимум показывают масштаб значений и помогают заметить выбросы.

7Уникальные значения

Сколько разных значений в колонке — иначе «сколько городов», «сколько групп». Пропуски не считаем.

8Сумма значений колонки

Итоговая величина по колонке — часто именно она и нужна в задаче.

шапка + первые 2 строки данных
Текстовый файл · table.csv
0 id; name; city; score
1 1; Аня; Москва; 17
2 2; Борис; ; 23
3 3; Вера; Москва; 9
4 4; Глеб; Казань; 42
5 5; Дима; Сочи; 31

Первая строка (0) — заголовок. Дальше по строке на запись, поля разделены ;.

Таблица
idnamecityscore
1АняМосква17
2Борис23
3ВераМосква9
4ГлебКазань42
5ДимаСочи31

Клик по шапке — шаг «колонки», по строке — «сколько строк», по пустой ячейке — «пропуски».

Код программы
lines = open('table.csv').read().splitlines()
for l in lines[:3]:
    print(l)
Вывод
id;name;city;score
1;Аня;Москва;17
2;Борис;;23
Код программы
header = open('table.csv').readline().strip()
print(header.split(';'))
Вывод
['id', 'name', 'city', 'score']
Код программы
lines = open('table.csv').read().splitlines()
print(len(lines) - 1)
Вывод
5
Код программы
rows = [l.split(';') for l in open('table.csv').read().splitlines()[1:]]
print(sum(1 for r in rows if r[2] == ''))   # колонка city
Вывод
1
Код программы
rows = [l.split(';') for l in open('table.csv').read().splitlines()[1:]]
print(sum(1 for r in rows for v in r if v == ''))
Вывод
1
Код программы
rows = [l.split(';') for l in open('table.csv').read().splitlines()[1:]]
vals = [int(r[3]) for r in rows if r[3] != '']
print(min(vals), max(vals))
Вывод
9 42
Код программы
rows = [l.split(';') for l in open('table.csv').read().splitlines()[1:]]
vals = [r[2] for r in rows if r[2] != '']
print(len(set(vals)))
Вывод
3
Код программы
rows = [l.split(';') for l in open('table.csv').read().splitlines()[1:]]
print(sum(int(r[3]) for r in rows if r[3] != ''))
Вывод
122
Загрузка практикума…

Частые вопросы

Чему учит этот тренажёр?
Читать файл-таблицу командами Python: получать список колонок, число строк, пропуски, минимум и максимум, уникальные значения и сумму. Это разведка данных перед решением задачи.
Почему файла не видно целиком?
Так и задумано: файл лежит в песочнице, но не показан — его нужно исследовать командами. Одна из ключевых ошибок на экзамене — решать, не поняв, что в файле.
Обязателен ли pandas?
Нет. На экзамене для задания 17 достаточно стандартной библиотеки Python. pandas — удобный второй способ; его тренажёр — отдельный режим.

Разбор задания 17Все задания