Учебное руководство по библиотеке Python Pandas
Те из вас, кто только начинает работать с машинным обучением, как и я, наверняка столкнулись бы с Pandas, библиотекой аналитики данных. В спешке разобраться в уловках ML мы часто не замечаем важности этой библиотеки. Но вскоре вы столкнетесь с препятствием, когда вам нужно будет поиграть со своими данными, очистить и выполнить преобразование данных, прежде чем вводить их в свою модель машинного обучения.
Зачем нам этот блог, когда уже есть много документации и руководств? У Pandas, в отличие от большинства библиотек Python, крутая кривая обучения. Причина в том, что вам необходимо хорошо понимать свои данные, чтобы правильно применять функции. Изучение синтаксиса Pandas ни к чему не приведет. Еще одна проблема с Pandas заключается в том, что есть несколько способов делать что-то. Кроме того, когда я начал работать с Pandas, у меня была огромная обширная и детально проработанная документация. Я просмотрел шпаргалки, и это напугало меня еще больше.
В этом блоге я собираюсь познакомить вас с функциями Pandas, взломав конкретные варианты использования, которые вам нужно будет достичь с заданными данными.
Установка и установка
Прежде чем мы перейдем к коду для понимания функций Pandas, давайте установим Pandas в вашей системе. Советую создать виртуальную среду и установить Pandas внутри virtualenv.
Создать virtualenv
virtualenv -p python3 venv source venv/bin/activate
Установить Панды
pip install pandas
Блокнот Jupyter
Если вы изучаете Pandas, я бы посоветовал вам погрузиться в него и использовать для этого же блокнот jupyter. Визуализация данных в записных книжках jupyter упрощает понимание того, что происходит на каждом этапе.
pip install jupyter jupyter notebook
Jupyter по умолчанию запускается в общесистемной установке python. Чтобы запустить его на своем виртуальном сервере, перейдите по ссылке и создайте ядро пользовательского уровня https://anbasile.github.io/programming/2017/06/25/jupyter-venv/
Образец данных
Я создал простые данные заказа на покупку. Он состоит из данных о продажах каждого продавца компании по странам и их филиалов в разных регионах в каждой стране. Вот ссылка на электронную таблицу, которую вы можете скачать.
Загрузить данные в Pandas
С помощью Pandas мы можем загружать данные из разных источников. Некоторые из них загружаются из CSV, удаленного URL-адреса или из базы данных. Загруженные данные хранятся в структуре данных Pandas, которая называется DataFrame.
DataFrame. Обычно на них ссылаются по имени переменной df
. Итак, каждый раз, когда вы видите df
отсюда, вы должны ассоциировать его с Dataframe.
Из файла CSV
import pandas df = pandas.read_csv("path_to_csv")
С удаленного URL
Вы можете передать удаленный URL-адрес в файл CSV в read_csv.
import pandas df = pandas.read_csv("remote/url/path/pointing/to/csv")
Из БД
Чтобы читать из базы данных, прочтите данные из базы данных в python list
и используйте DataFrame()
для его создания.
db = # Create DB connection object
cur = db.cursor()
cur.execute("SELECT * FROM <TABLE>")
df = pd.DataFrame(cur.fetchall())
Каждый из приведенных выше фрагментов считывает данные из источника и загружает их во внутреннюю структуру данных Pandas под названием DataFrame
Понимание данных
Теперь, когда у нас есть Dataframe, давайте рассмотрим его и разберемся, что внутри него.
# 1. shows you a gist of the data df.head() # 2. Some statistical information about your data df.describe() # 3. List of columns headers df.columns.values
Выберите и выберите свои данные
Теперь, когда мы загрузили наши данные в DataFrame и поняли его структуру, давайте выберем и выполним визуализацию данных. Когда дело доходит до выбора данных, вы можете делать это как с Indexes
, так и с определенными условиями. В этом разделе давайте рассмотрим каждый из этих методов.
Индексы
Индексы - это метки, используемые для обозначения ваших данных. Эти метки обычно являются заголовками ваших столбцов. Например, страна, регион, количество и т. Д.
Выбор столбцов
# 1. Create a list of columns to be selected columns_to_be_selected = ["Total", "Quantity", "Country"] # 2. Use it as an index to the DataFrame df[columns_to_be_selected] # 3. Using loc method df.loc[columns_to_be_selected]
Выбор строк
В отличие от столбцов, у нашего текущего DataFrame нет метки, которую мы можем использовать для ссылки на данные строки. Но, как и массивы, DataFrame по умолчанию обеспечивает числовую индексацию (0, 1, 2…).
# 1. using numerical indexes - iloc df.iloc[0:3, :] # 2. using labels as index - loc row_index_to_select = [0, 1, 4, 5] df.loc[row_index_to_select]
Фильтрация строк
Теперь, в сценарии реального времени, вы, скорее всего, не захотите выбирать строки на основе индекса. Фактическое требование в реальной жизни - отфильтровать строки, удовлетворяющие определенному условию. Что касается нашего набора данных, мы можем фильтровать по любому из следующих условий
1. Total sales > 200000 df[df["Total"] > 200000] 2. Total sales > 200000 and in UK df[(df["Total"] > 200000) & (df["Country"] == "UK")]
Игра с датами
В большинстве случаев при работе с полями даты мы не используем их как есть. Pandas позволяет очень легко проецировать дату / месяц / год из него и выполнять операции поверх него.
В нашем примере набора данных Date_of_purchase
имеет строковый тип, поэтому первым шагом будет преобразование их в тип DateTime.
>>> type(df['Date of Purchase'].iloc[0]) str
Преобразование столбца в объект DateTime
>>> df['Date of Purchase'] = pd.to_datetime(df['Date of Purchase']) >>> type(df['Date of Purchase'].iloc[0]) pandas._libs.tslibs.timestamps.Timestamp
Извлечение даты, месяца и года
df['Date of Purchase'].dt.date # 11-09-2018 df['Date of Purchase'].dt.day # 11 df['Date of Purchase'].dt.month # 09 df['Date of Purchase'].dt.year # 2018
Группировка
Статистические операции
Вы можете выполнять статистические операции, такие как минимальное, максимальное, среднее и т. Д., Над одним или несколькими столбцами фрейма данных.
df["Total"].sum() df[["Total", "Quantity"]].mean() df[["Total", "Quantity"]].min() df[["Total", "Quantity"]].max() df[["Total", "Quantity"]].median() df[["Total", "Quantity"]].mode()
В настоящее время в реальном приложении использование этих статистических функций в чистом виде встречается редко, часто вам может потребоваться сгруппировать данные на основе определенных параметров и получить суть данных.
Давайте рассмотрим пример, в котором мы рассмотрим продажи по странам, странам и регионам.
# 1. Country wise sales and Quantity df.groupby("Country").sum() # 2. Quantity of sales over each country & Region df.groupby(["Country", "Region"])["Quantity"].sum() # 3. More than one aggregation df.groupby(["Country", "Region"]).agg( {'Total':['sum', 'max'], 'Quantity':'mean'})
Сводная таблица
Сводная таблица - это расширенная версия groupby, в которой вы можете размещать измерения как по строкам, так и по столбцам. то есть по мере роста данных группа, указанная выше, будет расти в длину и станет трудной для понимания, поэтому четко определенным способом взглянуть на нее будут сводные таблицы.
import numpy as np df.pivot_table(index=["Country"], columns=["Region"], values=["Quantity"], aggfunc=[np.sum])
Еще одно преимущество сводной таблицы состоит в том, что вы можете добавлять столько измерений и функций, сколько захотите. Он также рассчитывает для вас общую стоимость
import numpy as np df.pivot_table(index=["Country"], columns=["Region","Requester"], values=["Quantity"], aggfunc=[np.sum], margins=True, margins_name="Grand Total")
Хорошо, это было много информации за 5 минут. Потратьте некоторое время на выполнение вышеперечисленных упражнений. В следующем блоге я расскажу вам о более глубоких концепциях и волшебных визуализациях, которые вы можете создать с помощью Pandas.
Каждый раз, когда вы начинаете изучать Pandas, есть большая вероятность, что вы потеряетесь в жаргонах Pandas, таких как index, functions, numpy и т. Д., Но не позволяйте этому до вас дойти. Что вам действительно нужно понять, так это то, что Pandas - это инструмент для визуализации и более глубокого понимания ваших данных.
С таким мышлением возьмите образец набора данных из своей электронной таблицы и попытайтесь извлечь из него некоторую информацию. Поделитесь тем, что вы узнали. Вот ссылка на мой блокнот jupyter, чтобы вы могли начать.
Блог немного подтолкнул, чтобы дать Пандам еще один шанс?
Удерживайте значок хлопает и крикните мне в твиттере . Следите за новостями в будущих блогах