← Все курсы · Курс Python

Упражнения на Python для аналитиков: двадцать минут в день за одним маленьким столом

Майкл Носито · Обновлено в августе 2026 г. · Все числа на этой странице были обработаны до их публикации.

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

Что вы делаете: держите одну небольшую таблицу и каждый день печатаете на ней небольшой набор упражнений. Двадцать минут, шесть подходов и предугадывайте каждый ответ, прежде чем нажать «Выполнить».

Краткая версия. Практика есть практика только в том случае, если вы могли ошибиться.

Стол

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

import pandas as pd

df = pd.DataFrame({
    'order_id': [101, 102, 103, 104, 105, 106, 107, 108],
    'region':   ['North','North','South','South','East','West','West','East'],
    'month':    ['Jan','Feb','Jan','Feb','Jan','Jan','Feb','Feb'],
    'amount':   [120, 80, 200, 50, 300, 90, 60, 150],
    'status':   ['shipped','shipped','cancelled','shipped',
                 'shipped','pending','shipped','cancelled'],
})

Восемь рядов, всего 1050. Четыре региона, два месяца, три статуса. Каждый ответ ниже достаточно мал, чтобы его можно было сначала продумать в уме, и в этом весь смысл.

Шесть комплектов

Набор 1: посмотрите на это

df.shape            # (8, 5)
df.dtypes
df.head(3)
df['region'].value_counts()
df.describe()

Делайте это каждый день, даже если знаете ответ. На реальных данных эти пять строк — это первые пять вещей, которые вам следует выполнить, и привычка стоит больше, чем синтаксис.

Набор 2: фильтр

df[df['amount'] > 100]
df[(df['region'] == 'North') & (df['month'] == 'Jan')]
df[df['status'] != 'cancelled']
df.query("amount > 100 and region == 'East'")

Скобки вокруг каждого условия не являются обязательными: & связывает крепче, чем == в Python, поэтому версия без них вызывает ошибку. Несколько раз ошибиться — вот как это приживется.

Набор 3: группа

df.groupby('region')['amount'].sum()
df.groupby('region')['amount'].agg(['sum', 'mean', 'count'])
df.groupby(['region', 'month'])['amount'].sum()
df.groupby('status')['amount'].sum().sort_values(ascending=False)

Сначала спрогнозируйте. Север — 200, Юг — 250, Восток — 450, Запад — 150, и эти четыре должны в сумме дать 1050. Сверка группового итога с разгруппированным итогом — единственная наиболее полезная привычка в этом наборе.

Набор 4: изменить форму

df.pivot_table(index='region', columns='month',
               values='amount', aggfunc='sum', fill_value=0)
df.sort_values('amount', ascending=False).head(3)
df.assign(is_big=df['amount'] >= 150)

Набор 5: присоединиться

regions = pd.DataFrame({'region': ['North','South','East','Central'],
                        'manager': ['Alvarez','Brennan','Cho','Diaz']})

df.merge(regions, on='region', how='left')     # West gets NaN
df.merge(regions, on='region', how='inner')    # West disappears
df.merge(regions, on='region', how='outer')    # Central appears

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

Набор 6: напишите ответ на вопрос.

Не функция, вопрос. В каком регионе самый высокий средний заказ? В каком месяце вырос? Какая часть стоимости аннулируется? Ответьте каждому по одной цепочке, затем проверьте вручную.

df[df.status != 'cancelled'].groupby('region')['amount'].mean().idxmax()
Прогнозируйте, а затем бегите. Написание ожидаемого ответа на бумаге перед нажатием кнопки «Выполнить» — это то, что превращает упражнение из практики набора текста в обучение. Когда вы ошибаетесь, вы обнаружили что-то, чего не знали, и в этом вся отдача от упражнения.

Почему лучше печатать, чем читать

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

Именно поэтому частота превосходит продолжительность. Шесть двадцатиминутных занятий в неделю дают шесть случаев извлечения информации. Одна двухчасовая сессия дает одну, и к пятнице большая ее часть исчезает.

Четырехнедельный распорядок дня

неделяФокусСигнал, что вы готовы двигаться дальше
1Устанавливает от 1 до 3, по памятиВы можете ввести группировка, ничего не проверяя
2Добавьте наборы 4 и 5.Вы можете правильно предсказать количество строк слияния.
3Те же упражнения на реальном загруженном вами CSV-файле.Вы переживете проблемы с dtype и датой
4Всего 6 наборов, каждый день новый вопросВы тянетесь к pandas раньше, чем к электронной таблице

На третьей неделе происходит большая часть реального обучения, потому что в реальных файлах текст содержится в числовых столбцах, даты в трех форматах и ​​столбец, имя которого заканчивается пробелом. Они покрыты read_csv и даты в pandas.

Как узнать, сработало ли это

  1. Откройте пустой файл и воспроизведите таблицу по памяти. Если не можете, это снова первое упражнение.
  2. Напишите группировку с двумя ключами и агрегацией без открытой ссылки.
  3. Предскажите количество строк левого слияния и будьте правы.
  4. Объясните вслух, почему цепному фильтру нужны кронштейны.
  5. Ответьте на вопрос в одной цепочке, на который раньше вы могли ответить только в электронной таблице.

Как применить это в своей работе

  1. Поместите таблицу из восьми строк в файл, который можно открыть одним нажатием клавиши. Трение – это то, что прекращает повседневную рутину.
  2. Устанавливайте 1 для каждого реального набора данных, к которому вы обращаетесь на работе. Это то же упражнение с кольями.
  3. Записывайте каждое сообщение об ошибке, которое вы встречаете, и причину, по которой оно возникло. Эта заметка станет вашей личной программой.
  4. Замените одну повторяющуюся задачу электронной таблицы сценарием, как только вы достигнете третьей недели.
  5. Перепечатывайте, а не копируйте, по крайней мере, в течение первого месяца.

Единственная привычка, которую нужно сохранить

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

Не могли бы вы восстановить эту таблицу из восьми строк прямо сейчас, в пустом файле, не глядя?

Каждый номер здесь был проведён до того, как был опубликован. Всего в регионе: Север 200, Юг 250, Восток 450, Запад 150, итого в таблице 1050.
Читать pandas легко, а запоминать – нет. Разрыв между ними набирается.

Python для аналитиков — это рабочая книга по аналитике pandas: прочитайте файл, исправьте его типы, сгруппируйте его, присоединитесь к нему и проверьте ответ, прежде чем его увидит кто-либо еще.

Python для аналитиков, 19 $ →
Одна работающая строка за раз.

SQL-практикум использует ту же идею для SQL в браузере, и Курс Python охватывает концепции каждого упражнения.

Откройте комплект Python →