Python для Data Science: методы анализа данных Pandas и NumPy
Основные функции анализа данных
Как получить сводную статистику по числовым столбцам?
Самый эффективный способ — метод describe() из Pandas. Он возвращает количество, среднее, стандартное отклонение, минимум, квартили и максимум. Пример:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
print(df.describe())Python для анализа данных (python для анализа данных)
A B count 5.0 5.0 mean 3.0 30.0 std 1.58 15.81 min 1.0 10.0 25% 2.0 20.0 50% 3.0 30.0 75% 4.0 40.0 max 5.0 50.0
анализ больших данных python (анализ больших данных в python)
Как получить описательную статистику только для выбранных столбцов?
Можно применить describe() с параметром include или exclude. Например, для категориальных столбцов:
df.describe(include=['object'])анализ данных python pdf (анализ данных pdf в python)
Для числовых — exclude=['object'].
Как вычислить отдельные статистики без describe?
Pandas предоставляет методы mean(), std(), min(), max() для Series. Пример:
print(df['A'].mean()) # 3.0Python анализ данных и машинное обучение (анализ данных и машинное обучение на python)
Как посчитать частоту значений в категориальном столбце?
Метод value_counts() возвращает количество уникальных значений, отсортированное по убыванию. Пример:
df = pd.DataFrame({'city': ['Moscow', 'Moscow', 'SPB', 'Kazan']})
print(df['city'].value_counts())анализ данных с использованием python (анализ данных с использованием python)
Moscow 2 SPB 1 Kazan 1
Python анализ текстовых данных (анализ текстовых данных в python)
Как получить долю каждого значения?
Параметр normalize=True возвращает относительные частоты:
print(df['city'].value_counts(normalize=True))Python библиотеки numpy и pandas (библиотеки numpy и pandas в python)
Moscow 0.5 SPB 0.25 Kazan 0.25
библиотеки python для обработки данных (библиотеки python для обработки данных (pandas, numpy и др.))
Как сгруппировать данные и вычислить агрегаты?
groupby() с последующей агрегацией — мощный инструмент. Пример: средняя зарплата по городам.
df = pd.DataFrame({'city': ['M', 'M', 'K'], 'salary': [100, 200, 150]})
print(df.groupby('city')['salary'].mean())математика и python для анализа данных (математика и python для анализа данных)
city K 150.0 M 150.0
методы анализа данных python (методы анализа данных в python)
Как применить несколько агрегатных функций?
agg() позволяет задать список функций:
print(df.groupby('city')['salary'].agg(['mean', 'std']))Python для анализа данных обучение (обучение анализу данных на python)
Как создать сводную таблицу?
pivot_table() группирует по индексам и столбцам, заполняя значения. Пример: средняя цена товаров по категориям и регионам.
df = pd.DataFrame({'cat': ['A','A','B'], 'reg': ['X','Y','X'], 'price': [10,20,30]})
pt = df.pivot_table(index='cat', columns='reg', values='price', aggfunc='mean')
print(pt)приложения анализа данных на python (приложения анализа данных на python)
reg X Y cat A 10.0 20.0 B 30.0 NaN
работа с табличными данными python (работа с табличными данными в python)
Как применить пользовательскую функцию к столбцу?
apply() применяет функцию к каждому элементу Series или к каждой строке/столбцу DataFrame. Пример: перевести зарплату в доллары.
def usd(rub):
return rub / 90
df['salary_usd'] = df['salary'].apply(usd)распределение данных python (распределение данных в python)
Как заменить значения на основе словаря?
map() работает с Series, заменяя значения по отображению:
city_code = {'M': 1, 'K': 2}
df['code'] = df['city'].map(city_code)статистический анализ данных python (статистический анализ данных в python)
Как вычислить корреляцию между столбцами?
corr() возвращает матрицу парных корреляций Пирсона.
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})
print(df.corr())Python функции анализа данных (функции анализа данных в python)
A B C A 1.0 1.0 1.0 B 1.0 1.0 1.0 C 1.0 1.0 1.0
работа с pandas python (работа с библиотекой pandas)
Как вычислить корреляцию Спирмена?
Параметр method='spearman':
print(df.corr(method='spearman'))Расширенные примеры использования функций анализа
Группировка с трансформацией
transform() возвращает объект той же длины, что и исходный, с применением агрегации. Например, добавить столбец со средним по группе:
df['avg_salary_city'] = df.groupby('city')['salary'].transform('mean')Дискретизация непрерывных данных
cut() и qcut() разбивают числовые значения на интервалы. Пример: разбить возраст на группы.
ages = [20, 25, 30, 35, 40, 45, 50]
bins = [0, 30, 40, 100]
labels = ['young', 'middle', 'senior']
df['age_group'] = pd.cut(ages, bins=bins, labels=labels)
print(df['age_group'])0 young 1 young 2 young 3 middle 4 middle 5 senior 6 senior
Оконные функции (rolling)
rolling() применяет скользящее окно. Например, скользящее среднее за 3 периода.
s = pd.Series([1,2,3,4,5])
print(s.rolling(3).mean())0 NaN 1 NaN 2 2.0 3 3.0 4 4.0
Применение пользовательской агрегации с agg
agg() принимает словарь для разных столбцов.
df.groupby('city').agg({'salary': ['mean', 'sum'], 'age': 'max'})Использование NumPy для быстрых вычислений
NumPy функции работают с массивами и могут быть быстрее. Пример: среднее по всем элементам.
import numpy as np
arr = np.array([[1,2],[3,4]])
print(np.mean(arr)) # 2.5Комбинирование groupby с apply для сложной логики
Применение функции к каждой группе, возвращающей DataFrame.
def top2(group):
return group.nlargest(2, 'salary')
df.groupby('city').apply(top2)Создание матрицы корреляции с тепловой картой
Использование seaborn для визуализации.
import seaborn as sns
import matplotlib.pyplot as plt
corr = df.corr()
sns.heatmap(corr, annot=True)
plt.show()Работа с пропущенными данными
fillna() и dropna() перед анализом.
df.fillna(df.median(), inplace=True)