Эффективные приемы работы с библиотекой Pandas в Python
Основные примеры использования Pandas
Базовый пример: создание DataFrame и первичный анализ
import pandas as pd
df = pd.DataFrame({'Name': ['Alice','Bob','Charlie'], 'Age': [25,30,35], 'Salary': [50000,60000,70000]})
print(df.head())
print(df.info())
print(df.describe())Python pandas пример (примеры pandas в python)
Name Age Salary 0 Alice 25 50000 1 Bob 30 60000 2 Charlie 35 70000RangeIndex: 3 entries, 0 to 2 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Name 3 non-null object 1 Age 3 non-null int64 2 Salary 3 non-null int64 dtypes: int64(2), object(1) memory usage: 200.0 bytes Age Salary count 3.0 3.000000 mean 30.0 6000.000000 std 5.0 1000.000000 min 25.0 5000.000000 25% 27.5 5500.000000 50% 30.0 6000.000000 75% 32.5 6500.000000 max 35.0 7000.000000
Python excel примеры (примеры работы с excel в python)
Данный код создает DataFrame, выводит первые строки, информацию о типах данных и описательную статистику. Это стандартный набор операций для начала работы с любым набором данных.
Как выбрать строки и столбцы с помощью loc и iloc?
# loc - по меткам, iloc - по позициям
print(df.loc[1, 'Name']) # Bob
print(df.iloc[0, 2]) # 50000
subset = df.loc[0:2, ['Name','Salary']]
print(subset)
графики python примеры (построение графиков в python)
Bob
50000
Name Salary
0 Alice 50000
1 Bob 60000
2 Charlie 70000loc использует названия строк и столбцов, iloc - целочисленные индексы. При slicing с loc конечная метка включается, с iloc - нет (как в Python).
Как выполнить группировку данных с groupby?
# средняя зарплата по возрасту
df['Age_group'] = pd.cut(df['Age'], bins=[0,30,40], labels=['young','middle'])
grouped = df.groupby('Age_group')['Salary'].mean()
print(grouped)Age_group young 55000.0 middle 70000.0 Name: Salary, dtype: float64
Метод groupby разделяет данные на группы, затем применяет агрегацию (mean, sum, count и др.). Можно группировать по нескольким столбцам и применять разные функции к разным столбцам через agg.
Как отсортировать DataFrame по столбцам?
sorted_df = df.sort_values(by=['Age', 'Salary'], ascending=[True, False])
print(sorted_df)Name Age Salary Age_group 0 Alice 25 50000 young 1 Bob 30 60000 young 2 Charlie 35 70000 middle
sort_values сортирует по указанным столбцам. ascending задает порядок для каждого столбца. Для сортировки по индексу используется sort_index.
Как добавить новый столбец на основе условия?
df['Is_adult'] = df['Age'].apply(lambda x: x >= 18)
print(df)Name Age Salary Age_group Is_adult 0 Alice 25 50000 young True 1 Bob 30 60000 young True 2 Charlie 35 70000 middle True
Метод apply применяет функцию к каждому элементу серии. Для простых условий лучше использовать векторизованные операции: df['Is_adult'] = df['Age'] >= 18.
Как удалить дубликаты строк?
df_dup = pd.DataFrame({'A': [1,1,2,2], 'B': [5,5,6,7]})
df_unique = df_dup.drop_duplicates(subset=['A'], keep='first')
print(df_unique)A B 0 1 5 2 2 6
drop_duplicates удаляет повторяющиеся строки. subset указывает столбцы для проверки уникальности. keep='first'/'last'/'False'. inplace=True изменяет оригинал.
Расширенные и редкие возможности Pandas
# Пример 1: создание сводной таблицы (pivot_table)
import pandas as pd
df = pd.DataFrame({'A':['x','x','y','y'], 'B':['p','q','p','q'], 'C':[1,2,3,4]})
pivot = df.pivot_table(values='C', index='A', columns='B', aggfunc='sum')
print(pivot)B p q A x 1 2 y 3 4
pivot_table позволяет создавать таблицы с агрегированными данными, аналогично Excel. Можно использовать несколько функций aggfunc, заполнение пропусков fill_value.
# Пример 2: преобразование широкой таблицы в длинную (melt)
wide = pd.DataFrame({'id':[1,2], 'math':[90,80], 'eng':[85,95]})
long = pd.melt(wide, id_vars=['id'], var_name='subject', value_name='score')
print(long)id subject score 0 1 math 90 1 2 math 80 2 1 eng 85 3 2 eng 95
melt - обратная операция к pivot. Полезна для перевода данных в формат, удобный для анализа (tidy data).
# Пример 3: использование applymap для преобразования всех элементов
df_nums = pd.DataFrame({'a':[1,2], 'b':[3,4]})
df_sq = df_nums.applymap(lambda x: x**2)
print(df_sq)a b 0 1 9 1 4 16
applymap применяет функцию к каждому элементу DataFrame. Для серий используйте map (не apply).
# Пример 4: работа с датами
dates = pd.to_datetime(['2023-01-15', '2024-02-20'])
df_dates = pd.DataFrame({'date': dates, 'value': [100,200]})
df_dates['year'] = df_dates['date'].dt.year
df_dates['month'] = df_dates['date'].dt.month
df_dates['day_of_week'] = df_dates['date'].dt.day_name()
print(df_dates)date value year month day_of_week 0 2023-01-15 100 2023 1 Sunday 1 2024-02-20 200 2024 2 Tuesday
pd.to_datetime преобразует строки в datetime64. После этого через .dt доступны компоненты даты.
# Пример 5: фильтрация с помощью query
df = pd.DataFrame({'name':['Alice','Bob','Charlie'], 'age':[25,30,35], 'salary':[50000,60000,70000]})
result = df.query('age > 28 and salary > 55000')
print(result)name age salary 1 Bob 30 60000 2 Charlie 35 70000
query позволяет фильтровать строки с помощью строкового выражения, более читаемого для сложных условий. Обратите внимание на имена столбцов без кавычек.