Краткое введение в библиотеку Python «Pandas»

Панды милые, но это другой вид панды 🙂
Немного истории
Привет всем! Сегодня я хочу написать о библиотеке Pandas. Pandas расшифровывается как «Библиотека анализа данных Python». Согласно странице Википедии, посвященной Pandas, «название происходит от термина «панельные данные», эконометрического термина для многомерных структурированных наборов данных». Но я думаю, что это просто симпатичное имя для супер-полезной библиотеки Python!
Pandas в корне меняет правила игры, когда дело доходит до анализа данных с помощью Python, и это один из наиболее предпочтительных и широко используемых инструментов для сбора и обработки данных, если не самый используемый. Pandas — это открытый исходный код, бесплатный для использования (по лицензии BSD), изначально он был написан Уэсом МакКинни.
Что здорово в Pandas, так это то, что он берет данные (например, файл CSV или TSV или базу данных SQL) и создает объект Python со строками и столбцами, называемый фреймом данных, который очень похож на таблицу в статистическом программном обеспечении (например, Excel или SPSS, а люди, знакомые с R, тоже увидят сходство). С таким представлением гораздо проще работать по сравнению со списками и / или словарями, использующими циклы или понимание списков (пожалуйста, ознакомьтесь с одним из моих предыдущих постов в блоге об очень простом анализе данных с использованием Python. Насколько же проще было делать то, что я там делал, используя Pandas!) 
Установка и начало работы
Чтобы «заполучить» Pandas, вам нужно будет установить его. Вы также должны иметь Python 2.7 и выше в качестве предварительного требования для установки. Он также зависит от других библиотек (например, Numpy) и имеет дополнительные зависимости (например, Matplotlib для построения графиков). Поэтому я думаю, что самый простой способ настроить Pandas — это установить его с помощью пакета, подобного дистрибутиву Anaconda, «кроссплатформенному дистрибутиву для анализа данных и научных вычислений». Там вы можете скачать версии для Windows, OS X и Linux , Если вы хотите установить по-другому, здесь полные инструкции по установке.
Чтобы использовать Pandas в вашей Python IDE (интегрированной среде разработки), такой как Jupyter Notebook или Spyder (оба по умолчанию поставляются с Anaconda), вам необходимо сначала импортировать библиотеку Pandas. Импортировать библиотеку означает загрузить ее в память, и тогда она будет доступна для вас. Для того, чтобы импортировать Pandas, все, что вам нужно сделать, это запустить следующий код:

# no pec


import pandas as pd
import numpy as np
Обычно вы добавляете вторую часть («как pd»), чтобы получить доступ к Pandas с помощью «pd.command», вместо того, чтобы писать «pandas.command» каждый раз, когда вам нужно его использовать. Кроме того, вы также должны импортировать Numpy, потому что это очень полезная библиотека для научных вычислений с Python. Теперь Pandas готова к использованию! Помните, вам придется делать это каждый раз, когда вы запускаете новый Jupyter Notebook, файл Spyder и т. д.
 
Работа с Pandas
Загрузка и сохранение данных с помощью Pandas
Если вы хотите использовать Pandas для анализа данных, вы обычно будете использовать его одним из трех способов:
  • Преобразовывать список Python, словарь или массив Numpy во фрейм данных Pandas.
  • Открывать локальный файл с помощью Pandas, обычно это CSV-файл, но это также может быть текстовый файл с разделителями (например, TSV), Excel и т. д.
  • Открывать удаленный файл или базу данных, например CSV или JSON, на веб-сайте через URL-адрес или читать таблицу / базу данных SQL
Для каждой из этих опций существуют разные команды, но когда вы открываете файл, они выглядят так:
pd.read_filetype()
Как я упоминал ранее, code разные типы файлов, с которыми может работать Pandas, так что вы должны заменить «filetype» фактическим типом файла (например, CSV). Вы должны указать путь, имя файла и т. д. в скобках. Внутри скобок вы также можете передать различные аргументы, имеющие отношение к открытию файла. Существует множество аргументов, и чтобы узнать их все, вам необходимо прочитать документацию (например, документация для pd.read_csv () будет содержать все аргументы, которые вы можете передать в этой команде Pandas).
Для преобразования определенного объекта Python (словарь, списки и т. д.), основной командой является:
pd.DataFrame()
В скобках вы указали бы объект(ы), из которого вы создаете фрейм данных. Эта команда также имеет разные аргументы (кликабельная ссылка).
Вы также можете сохранить фрейм данных, с которым вы работаете, в различные типы файлов (например, таблицы CSV, Excel, JSON и SQL). Общий код для этого:
df.to_filetype(filename)
Просмотр и проверка данных
Теперь, когда вы загрузили свои данные, пришло время взглянуть — как выглядит фрейм данных? Запуск имени фрейма данных даст вам всю таблицу, но вы также можете получить первые n строк с помощью df.head(n) или последние n строк с помощью df.tail(n). df.shape даст вам количество строк и столбцов. df.info() выдаст вам индекс, тип данных и информацию о памяти. Команда s.value_counts(dropna=False) позволит вам просматривать уникальные значения и количества для ряда (например, столбца или нескольких столбцов). Очень полезная команда -df.describe() которая вводит сводную статистику для числовых столбцов. Также возможно получить статистику по всему фрейму данных или серии (столбец и т. д.):
  • df.mean() Возвращает среднее значение всех столбцов
  • df.corr() Возвращает корреляцию между столбцами в фрейме данных
  • df.count() Возвращает количество ненулевых значений в каждом столбце фрейма данных
  • df.max() Возвращает самое большое значение в каждом столбце
  • df.min() Возвращает самое маленькое значение в каждом столбце
  • df.median() Возвращает медиану каждого столбца
  • df.std() Возвращает стандартное отклонение каждого столбца
Выбор данных
В Pandas гораздо проще выбирать нужные данные по сравнению с выбором значения из списка или словаря. Вы можете выбрать столбец (df[col]) и вернуть столбец с меткой col в виде серии или нескольких столбцов (df[[col1, col2]]) и вернуть столбцы в качестве нового фрейма данных. Вы можете выбирать по позиции (s.iloc[0]), или по индексу (s.loc['index_one']) . Чтобы выбрать первую строку, вы можете использовать df.iloc[0,:] а для выбора первого элемента первого столбца вы должны запустить df.iloc[0,0]. Они также могут использоваться в различных комбинациях, поэтому я надеюсь, что это даст вам представление о различном выборе и индексации, которые вы можете выполнять в Pandas.
Фильтр, сортировка и группировка
Вы можете использовать разные условия для фильтрации столбцов. Например, df[df[year] > 1984] выдаст вам только столбцы с годами больше 1984. Вы можете использовать & (и) или | (или) чтобы добавить другие условия к вашей фильтрации. Это также называется булевой фильтрацией.
Можно отсортировать значения в определенном столбце в порядке возрастания, используя df.sort_values(col1) ; а также в порядке убывания с использованием df.sort_values(col2, ascending=False). Кроме того, можно отсортировать значения по col1 в порядке возрастания, а затем по col2 в порядке убывания, используя df.sort_values([col1, col2], ascending=[True, False]).
Последняя команда в этом разделе – группировка groupby. Она включает в себя разделение данных на группы на основе некоторых критериев, применение функции к каждой группе независимо и объединение результатов в структуру данных. df.groupby(col) возвращает объект groupby для значений из одного столбца, а df.groupby([col1,col2]) возвращает объект groupby для значений из нескольких столбцов.
Очистка данных
Очистка данных является очень важным шагом в анализе данных. Например, мы всегда проверяем наличие пропущенных значений в данных, выполняя pd.isnull(), который проверяет нулевые значения и возвращает логический массив (массив true для пропущенных значений и false для не пропущенных значений). Чтобы получить сумму нулевых / пропущенных значений, запустите pd.isnull().sum(). pd.notnull() является противоположностью pd.isnull(). После того, как вы получите список пропущенных значений, вы можете избавиться от них или исключить их, используя df.dropna() для исключения строк или df.dropna(axis=1) для исключения столбцов. Другой подход — заполнить пропущенные значения другими значениями, используя функцию df.fillna(x) оторая заполняет пропущенные значения x (вы можете поместить туда, что вы хотите) или s.fillna(s.mean()) для замены всех нулевых значений средним (среднее можно заменить практически любой функцией из раздела статистики).
Иногда необходимо заменить значения другими значениями. Например, s.replace(1,’one’) заменит все значения, равные 1 на ‘one’. Это можно сделать для нескольких значений: s.replace([1,3],[‘one’,’three’]) заменит все 1 на ‘one’ и 3 на ‘three’. Вы также можете переименовать определенные столбцы, выполнив: df.rename(columns={‘old_name’: ‘new_ name’}) или используйте df.set_index(‘column_one’) чтобы изменить индекс фрейма данных.
Объединение / комбинирование
Последний набор основных команд Pandas предназначен для объединения или комбинирования фреймов данных или строк / столбцов. Три команды:
  • df1.append(df2)— добавить строки из df1 в конец df2 (столбцы должны быть идентичны)
  • df.concat([df1, df2],axis=1) — добавить столбцы из df1 в конец df2 (строки должны быть идентичны)
  • df1.join(df2,on=col1,how=’inner’) — объединить в стиле SQL столбцы в df1 со столбцами в df2 где строки для col имеют одинаковые значения. how может быть равно одному из следующих значений: ‘left’, ‘right’, ‘outer’, ‘inner’
 
Это самые базовые команды Pandas, но я надеюсь, вы увидите, насколько мощными могут быть Pandas для анализа данных. Этот пост — только верхушка айсберга — в конце концов, целые книги могут быть были) написаны об анализе данных с помощью Pandas. Я также надеюсь, что этот пост заставил вас испытать желание взять набор данных и поиграть с ним с помощью Pandas! 🙂
Как всегда, если у вас есть какие-либо комментарии, замечания, предложения или вопросы, пожалуйста, не стесняйтесь писать мне! Спасибо за чтение 🙂 Я закончу, естественно, изображением милых панд и вопросом — кого вы предпочитаете, гигантских панд или красных панд???
До новых встреч!
P.S.
Если вам понравился этот урок, пожалуйста, ознакомьтесь с моим кратким введением в NumPy!