data = {
'date': ['2026-04-01','2026-04-02','2026-04-03','2026-04-04','2026-04-05',
'2026-04-06','2026-04-07','2026-04-08','2026-04-09','2026-04-10'],
'category': ['Еда','Транспорт','Еда','Развлечения','Связь',
'Еда','Транспорт','Еда','Развлечения','Еда'],
'amount': [12, 3, 15, 20, 5, 10, 4, 18, 25, 14],
'payment': ['карта','наличные','карта','карта','карта',
'наличные','карта','карта','наличные','карта']
}
df_my = pd.DataFrame(data)
df_my['date'] = pd.to_datetime(df_my['date'])
df_my = df_my.set_index('date')
# новый столбец
df_my['amount_pln'] = df_my['amount'] * 4.5
# группировка
print(df_my.groupby('category')['amount'].agg(['sum','mean']))
# корреляция
print(df_my[['amount','amount_pln']].corr())
# график
df_my['amount'].plot(kind='bar')
plt.show()
Отвечу как студент кратко и по делу:
⸻
1. Основные типы индексов в Pandas. Для чего DatetimeIndex?
Основные типы индексов:
* Index (обычный числовой/строковый)
* RangeIndex (автоматическая нумерация)
* DatetimeIndex (даты и время)
* TimedeltaIndex (разницы во времени)
* PeriodIndex (периоды времени)
DatetimeIndex используется для работы с временными рядами: анализ данных по датам, ресемплинг, выборка по времени (например, по дням/месяцам).
⸻
2. Что такое MultiIndex? Как отобрать данные по одному уровню?
MultiIndex — это многоуровневый индекс (иерархический), когда у строк/столбцов несколько уровней.
Отбор по одному уровню можно сделать так:
* df.xs('значение', level='имя_уровня')
* или через .loc с указанием уровня
⸻
3. Как категориальный тип экономит память?
category хранит не сами строки, а коды (числа), которые ссылаются на уникальные значения.
Если данных много и повторяются одинаковые значения — память сильно экономится.
⸻
4. Как задать порядок категорий и зачем?
Используется:
pd.Categorical(data, categories=[...], ordered=True)
Это нужно, чтобы можно было сравнивать категории (например: «плохо < нормально < хорошо») и правильно сортировать данные.
⸻
5. pd.cut() vs pd.qcut()
* cut() — делит данные на равные интервалы по значению
* qcut() — делит данные на равные группы по количеству элементов (квантили)
⸻
6. Методы ковариации и корреляции
* df.cov() — ковариация
* df.corr() — корреляция
* также Series.corr() для отдельных столбцов
⸻
7. rolling() и expanding()
* rolling() — скользящее окно фиксированного размера (например, среднее за 3 дня)
* expanding() — расширяющееся окно (с начала данных до текущего момента)
⸻
8. Медиана vs среднее
* Среднее — сумма всех значений / количество
* Медиана — центральное значение после сортировки
Медиану лучше использовать, если есть выбросы, потому что она не искажается экстремальными значениями.
⸻
9. Накопленная сумма (cumulative sum)
Используется метод:
df['col'].cumsum()
⸻
10. value_counts() vs nunique()
* value_counts() — показывает, сколько раз встречается каждое значение
* nunique() — показывает количество уникальных значений
⸻
Если нужно, могу  оформить это как шпаргалку в таблицу или Word для сдачи.