Библиотеки Python для Data Science: от NumPy до Pandas и не только
Основные библиотеки для анализа данных
Как загрузить и изучить табличные данные с помощью Pandas?
Pandas предоставляет структуры DataFrame и Series для удобной работы с таблицами. Основное применение: чтение CSV, Excel, SQL и первичный анализ. Цель: быстрый осмотр данных и базовые статистики.
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
print(df.describe())
print(df.info())Python для анализа данных (python для анализа данных)
A B C
0 1 4 7
1 2 5 8
2 3 6 9
A B C
count 3.000000 3.000000 3.000000
mean 2.000000 5.000000 8.000000
...
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 3 non-null int64
1 B 3 non-null int64
2 C 3 non-null int64анализ больших данных python (анализ больших данных в python)
Типичные ошибки при загрузке:
- Разделитель не запятая - указать
sep=';'илиsep='\t'. - Проблемы с кодировкой - добавить
encoding='utf-8'. - Нехватка памяти - использовать
dtype={'col': 'float32'}илиchunksize.
Как выполнить быстрые числовые вычисления с NumPy?
NumPy - основа для численных массивов. Цель: векторизованные операции без циклов. Используется для предобработки признаков, генерации случайных чисел, линейной алгебры.
import numpy as np
arr = np.array([[1,2],[3,4]])
print(arr * 2 + 1)анализ данных python pdf (анализ данных pdf в python)
[[3 5] [7 9]]
Python анализ данных и машинное обучение (анализ данных и машинное обучение на python)
Частая проблема:
Создание копий вместо ссылок - использовать np.asarray() для предотвращения копирования, когда это необходимо.
Как провести статистический тест с SciPy?
SciPy расширяет NumPy статистическими функциями. Цель: проверка гипотез, распределения. Используется в A/B тестах, анализе нормальности.
from scipy import stats
data1 = [1,2,3,4,5]
data2 = [2,3,4,5,6]
t_stat, p_value = stats.ttest_ind(data1, data2)
print(f'p-value: {p_value:.4f}')анализ данных с использованием python (анализ данных с использованием python)
p-value: 0.3443 (пример)
Python анализ текстовых данных (анализ текстовых данных в python)
Ошибка: неверные предположения о гомогенности дисперсий - использовать ttest_ind(..., equal_var=False) для теста Уэлча.
Как визуализировать данные с Matplotlib и Seaborn?
Matplotlib - базовые графики, Seaborn - статистические. Цель: исследование распределений, зависимостей, выбросов.
import matplotlib.pyplot as plt
import seaborn as sns
data = [1,2,2,3,3,3,4,4,5]
sns.histplot(data)
plt.title('Распределение')
plt.show()Python библиотеки numpy и pandas (библиотеки numpy и pandas в python)
(график не отображается в тексте, но код корректен)
библиотеки python для обработки данных (библиотеки python для обработки данных (pandas, numpy и др.))
Проблема: график не отображается в Jupyter - добавить %matplotlib inline или plt.show().
Как применить машинное обучение с Scikit-learn?
Scikit-learn предоставляет модели классификации, регрессии, кластеризации. Цель: построение предсказательных моделей. Предварительно данные должны быть в виде NumPy массивов или DataFrame.
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3]])
y = np.array([2,4,6])
model = LinearRegression()
model.fit(X, y)
print(model.predict([[4]]))математика и python для анализа данных (математика и python для анализа данных)
[8.]
Типичная ошибка: данные не приведены к числовому типу - использовать pd.get_dummies() для категориальных признаков.
Общие рекомендации по выбору библиотеки:
- Pandas - для табличных данных, очистки, группировки.
- NumPy - для численных массивов, когда нужна скорость.
- SciPy - для научных вычислений, оптимизации, статистики.
- Matplotlib/Seaborn - для визуализации.
- Scikit-learn - для машинного обучения.
Расширенные примеры кода с пояснениями
Группировка и агрегация в Pandas
Группировка позволяет вычислить статистики по категориям. Цель: агрегирование больших объёмов данных.
import pandas as pd
df = pd.DataFrame({'Город': ['Москва','СПб','Москва','Казань'],
'Продажи': [100,150,200,50]})
grouped = df.groupby('Город')['Продажи'].agg(['sum','mean','count'])
print(grouped)
sum mean count Город Казань 50 50.0 1 Москва 300 150.0 2 СПб 150 150.0 1
Ошибка: использование agg с несуществующим столбцом - проверить имена через df.columns.
Слияние DataFrame (join)
Объединение таблиц по ключу. Цель: соединение данных из разных источников.
df1 = pd.DataFrame({'ID': [1,2,3], 'Имя': ['Анна','Борис','Виктор']})
df2 = pd.DataFrame({'ID': [1,2,4], 'Зарплата': [50000,60000,70000]})
merged = pd.merge(df1, df2, on='ID', how='left')
print(merged)
ID Имя Зарплата 0 1 Анна 50000.0 1 2 Борис 60000.0 2 3 Виктор NaN
Проблема: ключи с разными названиями - использовать left_on='ID1', right_on='ID2'.
Сводные таблицы (pivot table)
Pivot table создаёт кросс-таблицу с агрегацией. Цель: анализ многомерных данных.
df = pd.DataFrame({'Год': [2020,2020,2021,2021],
'Товар': ['A','B','A','B'],
'Продажи': [100,200,150,250]})
pt = pd.pivot_table(df, values='Продажи', index='Год', columns='Товар', aggfunc='sum')
print(pt)
Товар A B Год 2020 100 200 2021 150 250
Работа с датами в Pandas
Преобразование строк в даты и извлечение компонентов. Цель: временные ряды, фильтрация по периодам.
df = pd.DataFrame({'date': ['2023-01-01','2023-02-15','2023-03-20']})
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
print(df)
date year month 0 2023-01-01 2023 1 1 2023-02-15 2023 2 2 2023-03-20 2023 3
Ошибка: неверный формат - указать format='%Y-%m-%d' для нестандартных дат.
Broadcasting в NumPy
Операции с массивами разных размеров. Цель: избежать циклов.
import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([10,20,30])
print(A + B)
[[11 22 33] [14 25 36]]
Проблема: несовместимые формы - проверить shape и при необходимости добавить ось через np.newaxis.
Условная замена с np.where
Быстрая замена значений по условию. Цель: бинарная обработка.
arr = np.array([1,2,3,4,5])
result = np.where(arr > 3, 'большой', 'маленький')
print(result)
['маленький' 'маленький' 'маленький' 'большой' 'большой']
Применение функции к столбцу DataFrame
Использование apply для пользовательских преобразований. Цель: сложные маппинги.
df = pd.DataFrame({'x': [1,2,3]})
df['x_squared'] = df['x'].apply(lambda v: v**2)
print(df)
x x_squared 0 1 1 1 2 4 2 3 9
Предупреждение: apply может быть медленным на больших данных - рассмотреть векторизованные альтернативы.