Упражнения на Python для аналитиков: двадцать минут в день за одним маленьким столом
Большинство людей изучают 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 для каждого реального набора данных, к которому вы обращаетесь на работе. Это то же упражнение с кольями.
- Записывайте каждое сообщение об ошибке, которое вы встречаете, и причину, по которой оно возникло. Эта заметка станет вашей личной программой.
- Замените одну повторяющуюся задачу электронной таблицы сценарием, как только вы достигнете третьей недели.
- Перепечатывайте, а не копируйте, по крайней мере, в течение первого месяца.
Единственная привычка, которую нужно сохранить
Прогнозируйте выходные данные перед запуском ячейки. В этом разница между практикой игры на клавиатуре и практикой мышления, и только одна из этих операций позволяет перейти к набору данных, который вы никогда не видели.
Не могли бы вы восстановить эту таблицу из восьми строк прямо сейчас, в пустом файле, не глядя?
Python для аналитиков — это рабочая книга по аналитике pandas: прочитайте файл, исправьте его типы, сгруппируйте его, присоединитесь к нему и проверьте ответ, прежде чем его увидит кто-либо еще.
Python для аналитиков, 19 $ →SQL-практикум использует ту же идею для SQL в браузере, и Курс Python охватывает концепции каждого упражнения.
Откройте комплект Python →