Ответ
Pandas — это высокоуровневая библиотека Python для анализа и обработки структурированных (табличных) данных. Её основная сила — в работе с помеченными данными, подобно таблицам в SQL или Excel, но с мощью программирования.
Ключевые структуры данных:
Series: Одномерный помеченный массив. Похож на столбец таблицы или словарь.DataFrame: Двумерная, гетерогенная таблица с помеченными строками и столбцами. Это основная рабочая лошадка.
Основные возможности, которые я постоянно использую:
- Чтение и запись данных из множества источников:
df = pd.read_csv('data.csv') df.to_excel('output.xlsx', sheet_name='Results') - Инспекция и очистка данных:
df.info() # Типы данных и пропуски df.describe() # Статистика df.isnull().sum() # Количество пропусков df.dropna() # Удаление строк с NaN df.fillna(0) # Заполнение пропусков -
Выборка и фильтрация:
# Выбор столбцов df[['name', 'age']] # Фильтрация по условию (синтаксис, похожий на SQL WHERE) adults = df[df['age'] >= 18] # Сложные условия filtered = df[(df['department'] == 'IT') & (df['salary'] > 100000)] -
Группировка и агрегация (аналог
GROUP BYв SQL):# Средняя зарплата по отделам df.groupby('department')['salary'].mean() # Несколько агрегаций df.groupby('department').agg({'salary': ['mean', 'min', 'max'], 'age': 'median'}) - Работа с временными рядами (мощная встроенная поддержка дат и времени).
Сильные стороны: Невероятно выразительный и продуктивный синтаксис для операций с данными, отличная интеграция с экосистемой Python (NumPy, Matplotlib, Scikit-learn). Ограничения: Для очень больших данных (не помещающихся в оперативную память) лучше смотреть в сторону Dask или Vaex. Нативные операции Pandas не всегда эффективно параллелизуются.
Ответ 18+ 🔞
Ну, смотри, вот есть такая библиотека Pandas. Если по-простому, это как Excel на стероидах, только для программистов. Вся её фишка — ковыряться в табличных данных, но так, чтобы всё было удобно и под рукой. Не надо писать километры кода, чтобы посчитать среднюю зарплату по отделам, тут всё уже придумано.
Основные штуки, с которыми работаешь:
Series: Это просто столбец из таблицы. Одна колонка с данными и подписями.DataFrame: А вот это уже и есть сама таблица, целиком. Двумерная, с рядами и колонками. Это твоя основная рабочая лошадка, с ней и будешь 99% времени возиться.
Что она умеет делать, и что я постоянно юзаю:
- Загрузить и выгрузить данные откуда угодно и куда угодно. CSV, Excel, SQL — ей всё похуй, она съест:
df = pd.read_csv('data.csv') # Загрузил из файла df.to_excel('output.xlsx', sheet_name='Results') # Выплюнул в эксель - Посмотреть, что за данные и почистить их. Часто данные приходят кривые, с дырами. Тут надо понять, что к чему:
df.info() # Быстро глянуть, какие типы данных и нет ли пропусков df.describe() # Базовая статистика: среднее, минимум, максимум — очень помогает df.isnull().sum() # Считает, сколько в каждой колонке пропусков (NaN). Иногда цифры овердохуища, и волнение ебать начинается. df.dropna() # Просто выкинуть строки, где есть пропуски. Жестко, но иногда надо. df.fillna(0) # Или заполнить эти дыры нулями (или средним значением). -
Выбрать нужные куски данных и отфильтровать. Тут синтаксис почти как в SQL, только проще:
# Выбрать только две колонки df[['name', 'age']] # Отфильтровать только взрослых (возраст >= 18). Удобно, ёпта. adults = df[df['age'] >= 18] # А можно и сложное условие запилить. Например, из IT-отдела с зарплатой за сотку. filtered = df[(df['department'] == 'IT') & (df['salary'] > 100000)] -
Группировка и сводные таблицы — это вообще пизда рулю. Полный аналог
GROUP BYиз SQL, но в одну строчку:# Средняя зарплата по каждому отделу. Всё, задача решена. df.groupby('department')['salary'].mean() # А можно сразу кучу статистик насобирать: средняя, минимальная, максимальная зарплата и медианный возраст. df.groupby('department').agg({'salary': ['mean', 'min', 'max'], 'age': 'median'}) - Работа с датами и временем у них сделана просто отлично. Не надо самому парсить строки, всё уже есть.
В чём сила: Синтаксис просто бомбический, пишешь мало, а делает много. Идеально впишется в твой стек, если работаешь с NumPy, Matplotlib или Scikit-learn. А где слабо: Если данные такие огромные, что в оперативку не влезают, тут уже начинаются танцы с бубном. Pandas жрёт память как не в себя. Для таких случаев есть Dask или Vaex. И ещё — она не очень-то умеет распараллеливать задачи на несколько ядер, так что на особо жирных данных может тупить.