DataFrame — это двумерная таблица (как в Excel). Каждая колонка — объект Series. Все колонки имеют общий индекс (строки).
Series
Основной способ создать DataFrame — передать словарь списков в pd.DataFrame():
pd.DataFrame()
import pandas as pd data = { 'name': ['Anna', 'Boris', 'Clara'], 'score': [90, 85, 78] } df = pd.DataFrame(data)
Становятся названиями колонок
Становятся данными в соответствующих колонках
Длины всех списков должны совпадать, иначе ошибка
Первое, что делает аналитик — быстро оценивает, что за данные перед ним: размер таблицы, типы колонок, есть ли пропуски.
df.shape
(строки, колонки)
df.columns
df.index
df.dtypes
df.head(n)
df.info()
df.describe()
shape
columns
dtypes
head()
info()
describe()
Одна колонка → возвращает Series
Несколько колонок → возвращает DataFrame. Обрати внимание на двойные скобки!
df.loc[метка]
df.loc[2]
df.iloc[номер]
df.iloc[2]
loc[2]
iloc[2]
df.loc[5, 'price'] = 100
В pandas можно создавать новые колонки на основе существующих — точно так же, как формулы в Excel.
# Арифметическая колонка df['total'] = df['price'] * df['quantity'] # Булева колонка (True / False) df['is_big'] = df['total'] > 100000
Операции +, -, *, / применяются поэлементно ко всем строкам
+
-
*
/
Операторы >, <, ==, != возвращают колонку из True/False
>
<
==
!=
True
False
NaN
5 * NaN → NaN NaN + 10 → NaN NaN > 100 → False
df['col'].isna()
df['col'].fillna(value)
df['col'].mean()
df['col'].dropna()
df['price'].fillna(df['price'].mean())
df[условие] — внутри квадратных скобок передаём булеву маску. Pandas оставит только те строки, где условие = True.
df[df['city'] == 'Moscow']
# Хотя бы одно условие True df[(df['category'] == 'Laptop') | (df['price'] > 50000)]
# Оба условия True df[(df['city'] == 'SPb') & (df['total'] > 50000)]
&
|
df.sort_values('price')
df.sort_values('price', ascending=False)
df.sort_values('total', ascending=False).head(3)
df.to_csv('report.csv') # с индексом df.to_csv('report.csv', index=False) # без индекса
index=False
Сохраняет в формат .xlsx
.xlsx
Сохраняет в формат .json
.json
Выбери метод и посмотри результат для учебной таблицы:
1. Как выбрать несколько колонок из DataFrame?
df['col1', 'col2']
df[['col1', 'col2']]
df.col1, df.col2
2. Что вернёт выражение 5 * NaN?
5 * NaN
5
0
3. Какой оператор используется для «И» при фильтрации pandas?
and
&&
4. Как сохранить DataFrame в CSV без лишнего столбца индексов?
df.to_csv('f.csv')
df.to_csv('f.csv', index=False)
df.to_csv('f.csv', header=False)
5. Чем отличается df.iloc[2] от df.loc[2]?
iloc
loc