Советы и хитрости, которые сделают вашу жизнь с вашими данными / пандами проще

Pandas - это библиотека Python с открытым исходным кодом, построенная на основе NumPy. Pandas, вероятно, самая популярная библиотека для анализа данных в Python. Это позволяет выполнять быстрый анализ, а также очистку и подготовку данных. Одним из удивительных аспектов Pandas является то, что он может хорошо работать с данными из самых разных источников, таких как: таблицы Excel, файлы CSV, файлы SQL или даже веб-страницы.

В этой статье я покажу вам несколько советов и приемов, которые можно использовать в Pandas.

Он будет разделен на советы по:

  1. Генерация данных внутри фрейма данных Pandas.
  2. Получение / обработка данных внутри фрейма данных.

1. Генерация данных:

Часто новички в SQL или науке о данных сталкиваются с проблемой легкого доступа к большому образцу файла базы данных (.DB или .sqlite) для отработки команд SQL. Разве не было бы замечательно иметь простой инструмент или библиотеку для создания большой базы данных с несколькими таблицами, заполненными данными по собственному выбору? К счастью, существует библиотека, предлагающая такую ​​услугу - pydbgen.

Что такое pydbgen?

Это легкая библиотека на чистом Python, используемая для генерации случайных полезных записей (например, имя, адрес, номер кредитной карты, дата, время, название компании, должность, номерной знак и т. Д.) И сохранения их в объекте фрейма данных Pandas. , в виде таблицы SQLite в файле базы данных или в файле MS Excel.

Чтобы установить pydbgen, вам необходимо установить библиотеку Faker. Так что просто введите:

  • Pip install Faker
  • Pip install pydbgen

Чтобы начать использовать pydbgen, запустите объект pydbgen:

import pydbgen
from pydbgen
import pydbgenmyDB=pydbgen.pydb()

Создайте фрейм данных Pandas со случайными записями:

Вы можете выбрать, сколько и какие типы данных будут сгенерированы. Обратите внимание, что все возвращается как строка / текст. Первый аргумент - это количество записей, а второй - поля / атрибуты, для которых создаются поддельные данные.

testdf= myDB.gen_dataframe(5,[‘name’,’city’,’phone’,’date’])

Это приведет к тому, что фрейм данных будет выглядеть так:

Конечно, доступно гораздо больше полей, таких как: возраст, день рождения, номер кредитной карты, SSN, идентификатор электронной почты, физический адрес, название компании, должность и т. Д.

2- Манипуляция фреймом данных:

В этом разделе я покажу несколько советов по наиболее часто задаваемым вопросам, касающимся фреймов данных Pandas.

Примечание. Некоторые методы не изменяют напрямую фрейм данных, а возвращают требуемый фрейм данных. Чтобы изменить фрейм данных напрямую, не возвращая желаемый фрейм данных, вы можете добавить inplace=True в качестве параметра.

В целях объяснения я буду называть фрейм данных «данные» - не стесняйтесь называть его как хотите.

Получение данных без знания индекса:

Обычно с огромными объемами данных узнать индекс для каждой строки практически невозможно. Итак, этот метод выполняет свою работу за вас. Итак, во фрейме данных «данные» мы ищем индекс строки, в которой user_id равно 1.

indexRequired = data.index[data[‘user_id’] == 1]

Получение строки, соответствующей этому индексу:

rowRequired = data.loc[indexRequired]

Довольно просто, правда?

Получение всех уникальных значений атрибутов для столбца:

Итак, предположим, что у нас есть целочисленный атрибут с именем user_id:

listOfUniqueUserIDs = data[‘user_id’].unique()

Затем вы можете перебирать этот список или делать с ним все, что захотите.

Заполнение пропущенных значений для столбца:

Как и в случае с большинством наборов данных, следует ожидать МНОГО нулевых значений, которые временами могут раздражать. Конечно, вы можете оставить их такими, какие они есть, но если вы хотите добавить значения вместо нулевых значений, вы должны сначала объявить, какое значение будет помещено в какие атрибуты (для его нулевых значений).

Итак, у нас есть 2 столбца, которые называются «теги» и «сложность». Я хочу поставить «MCQ» для любого нулевого значения «тегов» и «N» для любого нулевого значения «сложности».

missing = {‘tags’:’mcq’, ‘difficulty’: ‘N’}
data.fillna(value = missing, inplace = True)

Получение отсортированного образца из фрейма данных:

Допустим, вы хотите отсортировать выборку из 2000 строк (или даже весь фрейм данных) с помощью атрибута ID. Оказывается, это довольно просто.

sample = data.sample(n=2000)
sorted_sample = sample.sort_values(by=[‘id’])

Группировка записей с помощью groupby:

Что, если вы хотите знать для каждого пользователя / идентификатора среднее количество атрибутов, с которыми они взаимодействовали?

Позвольте мне продемонстрировать, как это сделать, на примере. У нас есть история пользователей, решающих различные проблемы с оценками, и мы хотим знать среднее количество оценок, полученных каждым пользователем. Способ узнать это также относительно прост.

groupbyExample = data.groupby(‘user_id’)[‘scores’].mean()

Заключение

Итак, к настоящему времени вы должны иметь возможность создать фрейм данных и заполнить его случайными данными, чтобы поэкспериментировать с ним. Эти данные избавят вас от хлопот по поиску настраиваемого набора данных.

Кроме того, данные могут иметь любой предпочтительный размер и могут охватывать множество типов данных. Кроме того, вы можете применить некоторые из упомянутых приемов, чтобы ближе познакомиться с Pandas и понять, насколько мощным инструментом он может быть. Наконец, я надеюсь, что эта статья была для вас полезной, и спасибо, что нашли время, чтобы ее прочитать.

Автор: Ахмед Яссер

Примечание редактора. Heartbeat - это онлайн-издание и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимо от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.