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

Это 3 концепции, которые я считаю наиболее важными, когда речь идет о Pandas.

1. Знайте, как использовать метод «применить»

Этот метод в основном позволяет вам «применять» определенные указанные операции к вашему фрейму данных. Либо это может быть на всем фрейме данных, либо на некоторых выбранных столбцах.

Это удобно, особенно когда вы хотите быстро применить определенные изменения к своим столбцам, например, «понизить» каждое значение в столбце или, может быть, «удалить стоп-слова» из этого столбца.

Вот фрагмент кода, демонстрирующий использование метода «применить» для заданного столбца в pandas:

# assume your dataframe has the column 'usernames'
# let's lower each value in this column
data["usernames"] = data["usernames"].apply(str.lower)

# calculate number of characters & save that info in a new column
data["character_count"] = data["usernames"].apply(len)

Обратите внимание, что метод «нижний» работает только со строками, и мы обычно делаем что-то вроде: myString.lower(), но, поскольку мы не делаем этого таким образом, мы должны использовать его, вызывая сначала класс «str». .

2. Использование оператора «GroupBy» для группировки данных

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

Фрейм данных говорит нам:

  • Дом «а» имеет «2» комнаты на «1 этаже»
  • В доме «а» «2» комнаты на «2 этаже»
  • Дом «б» имеет «2» комнаты на «1 этаже»
  • В доме «б» есть «1» комната на «2 этаже»
  • и так далее…

Если вы хотите получить общее количество комнат в каждом доме, вам нужно будет сгруппировать эти данные по «дому», а затем «подсчитать» общее количество «комнат» на каждом этаже.

Вот код, чтобы сгруппировать эти данные по «дому» и добавить количество комнат, чтобы получить общее количество —

df.groupby(by="house", as_index=False).agg({
    "rooms" : sum
})

Внутри функции агрегата (agg) мы указываем операцию, которую нужно выполнить с данным столбцом после того, как данные будут сгруппированы. В нашем случае мы хотим «суммировать» «комнаты» после того, как данные сгруппированы, поэтому мы использовали «комнаты» в качестве столбца и «сумму» в качестве операции.

Чтобы лучше понять это, давайте также сгруппируем данные по «этажу» и посмотрим, сколько «комнат» есть на каждом этаже, независимо от «дома» —

df.groupby(by="floor", as_index=False).agg({
    "rooms" : sum
})

Прежде чем мы перейдем к третьему пункту, подпишитесь на мою рассылку, чтобы получать статьи прямо в свой почтовый ящик —



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

В пункте №1 о методе «применить мы использовали только встроенные методы для обработки наших данных. Часто этих встроенных функций недостаточно для получения ожидаемого результата.

Чтобы помочь нам в этом, мы можем использовать пользовательские функции в методе «применить», используя «лямбда». Вот как —

# assume your dataframe has the column 'query', containing numbers as well
# let's lower each value in this column like we did in point #1
data["query"] = data["query"].apply(str.lower)


# the above code will output an error as we cannot lower the 'numbers'
# let's write more complex code using lambda function to remove this bug
# we will lower only if the value is a 'string'
data["query"] = data["query"].apply(lambda q:q.lower() if type(q) == str else q)

Вы также можете определить пользовательскую функцию отдельно, а затем вызвать ее внутри метода «применить» следующим образом:

# define a function
def lower_query(query):
  if type(query) == str:
    return query.lower()
  return query

# call the defined function inside apply
data["query"] = data["query"].apply(lower_query)

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

Спасибо, что прочитали! Пожалуйста, хлопайте в ладоши, комментируйте и делитесь статьей, если вы нашли мое письмо полезным. 🖤👏🏻

Другие рекомендуемые сообщения —