темный логотип proxyscrape

10 лучших функций Pandas, которые должен знать каждый новичок

Python, Дек-19-20245 минут чтения

Pandas - это универсальная библиотека для аналитиков данных и программистов на Python, которые осваивают мир манипулирования и анализа данных. Интуитивно понятный синтаксис и мощные структуры данных делают работу с огромными массивами данных не только удобной, но и эффективной. Импортируете ли вы CSV-файлы, очищаете грязные наборы данных или анализируете тенденции в данных - в Pandas есть все необходимые инструменты.

Если вы только начинаете изучать Pandas, этот пост познакомит вас с 10 важнейшими функциями и методами, которые должен освоить каждый новичок. Эти функции помогут вам с легкостью загружать, проверять, очищать и анализировать данные.
Здесь приведен краткий обзор каждого метода и того, что он делает:

  • read_csv(): Загружает данные из CSV-файла в Pandas DataFrame.
  • head(): Отображает несколько первых строк фрейма данных.
  • информация(): Предоставляет краткую информацию о фрейме данных, включая типы столбцов и отсутствующие значения.
  • описать(): Генерирует описательную статистику для числовых столбцов.
  • isnull(): Определяет отсутствующие данные в DataFrame.
  • дропна(): Удаляет строки или столбцы с отсутствующими данными.
  • fillna(): Заменяет отсутствующие данные указанными значениями.
  • groupby(): Группирует данные на основе одного или нескольких столбцов и применяет агрегатные функции.
  • sort_values(): Сортирует DataFrame по одному или нескольким столбцам.
  • применить(): Применяет пользовательские функции к строкам или столбцам DataFrame.

Пререквизиты

Сначала убедитесь, что на вашей машине установлен Python. Если он не установлен, вы можете загрузить его по этой ссылке.
После установки Python убедитесь, что библиотека Pandas установлена. Если она не установлена, вы можете легко добавить ее с помощью следующей команды:

pip install pandas

Для примера мы будем использовать следующий набор фиктивных данных по недвижимости:

PropertyIDРасположениеСпальниВанные комнатыЦенаSquareFootageListingDate
101Нью-Йорк3275000018002023-05-15
102Сан-Франциско2185000014002023-06-01
103Лос-Анджелес4325002023-04-10
104Чикаго326500001700
105Майами54120000035002023-03-22
106Хьюстон4345000020002023-07-01

10 лучших функций и методов Pandas

1. read_csv(): Загружает данные из CSV-файла в Pandas DataFrame.

Первым шагом в использовании pandas является загрузка данных для подготовки их к обработке или анализу. Одним из наиболее распространенных методов импорта данных в pandas DataFrame является функция read_csv().

Пример кода:

import pandas as pd
# Загрузите набор данных в Pandas DataFrame
file_path = "real_estate_listings.csv" # Замените фактический путь к файлу

# Создать фрейм данных
df = pd.read_csv(file_path)

Для начала мы импортируем библиотеку pandas. Использование как пдд является распространенным среди разработчиков способом упрощения кода. Например, вместо того чтобы писать pandas.read_csv()мы можем просто использовать pd.read_csv()что делает код более лаконичным и удобным для чтения.

Затем укажите путь к CSV-файлу, который вы хотите загрузить в Pandas DataFrame. Затем создайте переменную и используйте функцию read_csv метод для загрузки файла в DataFrame.

Ключевые параметры:

Теперь давайте рассмотрим некоторые важные параметры этого метода:

  • разделитель: Укажите разделитель, используемый в CSV-файле (например, ,, ;, \t).
df = pd.read_csv(file_path, delimiter=',')
  • индексный_кол: В нашей таблице каждое объявление о продаже недвижимости идентифицируется по идентификатору, найденному в разделе "PropertyID" столбец. Чтобы убедиться, что pandas использует этот столбец в качестве уникального идентификатора для каждого свойства, мы можем явно задать его в качестве столбца ID. В противном случае pandas будет автоматически генерировать и присваивать собственные значения ID каждому листингу.
df = pd.read_csv(file_path, index_col='PropertyID')
  • usecols: Если ваш CSV-файл содержит множество столбцов, но вам нужны только некоторые из них, pandas позволяет легко добиться этого с помощью специального параметра.
df = pd.read_csv(file_path, usecols=['Location', 'Price', 'Bedrooms'])

2. head() и tail(): Проверка данных

Теперь, когда данные загружены в DataFrame, мы можем приступить к их изучению. Для этого Pandas предоставляет два очень удобных метода: head() и хвост(). Эти методы незаменимы для быстрой проверки первых или последних строк вашего набора данных.

  • head(): Этот метод по умолчанию показывает первые 5 строк набора данных. Он особенно полезен для проверки правильности загрузки данных и проверки их структуры.
  • tail(): Этот метод работает аналогично head(), но вместо него отображает последние несколько строк. Он полезен для изучения конца набора данных, особенно при проверке полноты данных или наличия пропущенных значений в предыдущих записях.

Пример кода:

# Просмотр первых 5 строк
print(df.head())
# Просмотр последних 3 строк
print(df.tail(3))

Выход head():

PropertyIDРасположениеСпальниВанные комнатыЦенаSquareFootageListingDate
101Нью-Йорк3275000018002023-05-15
102Сан-Франциско2185000014002023-06-01
103Лос-Анджелес4325002023-04-10
104Чикаго326500001700
105Майами54120000035002023-03-22

Выход хвост():

PropertyIDРасположениеСпальниВанные комнатыЦенаSquareFootageListingDate
104Чикаго326500001700
105Майами54120000035002023-03-22
106Хьюстон4345000020002023-07-01

3. info() - Понять структуру фрейма данных

Функция info() предоставляет краткую информацию о DataFrame. Она включает такие сведения, как:

  • Количество строк и столбцов.
  • Имена столбцов и их типы данных.
  • Количество ненулевых значений в каждом столбце.

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

Пример кода:

# Получите краткую информацию о фрейме данных
print(df.info())

Приведенный выше код выдает следующий результат:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
#   Column          Non-Null Count  Dtype 
---  ------          --------------  ----- 
0   PropertyID      6 non-null      int64 
1   Location        6 non-null      object
2   Bedrooms        6 non-null      int64 
3   Bathrooms       6 non-null      int64 
4   Price           5 non-null      float64
5   SquareFootage   6 non-null      int64 
6   ListingDate     5 non-null      object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes

4. describe(): Генерация итоговой статистики

Сайт описать() Метод позволяет получить краткую информацию о ключевых статистических показателях, таких как среднее, стандартное отклонение, перцентилии многое другое. По умолчанию, описать() Работает с числовыми данными, но может обрабатывать и категориальные данные, предлагая индивидуальные выводы в зависимости от типа данных.

Ключевые параметры:

  • перцентили: Список чисел от 0 до 1, указывающий, какие процентили возвращать. По умолчанию используется значение None, которое возвращает 25-й, 50-й и 75-й процентили. Читать далее здесь.
  • включить: Список типов данных для включения в сводку. Вы можете указать такие типы данных, как int, float, object (для строк) и т. д. По умолчанию используется None, то есть все числовые типы будут включены.
  • исключить: Список типов данных, которые необходимо исключить из сводки. Этот параметр также Нет по умолчанию, что означает, что никакие типы не исключаются.

Пример кода:

печать(df.describe())

Код выводится следующим образом:

       PropertyID Расположение Спальни ...         Цена ПлощадьФутаж ЛистингДата
count 6.000000 6 6.000000... 5.000000e+00 6.000000 5
уникальный NaN 6 NaN ...           NaN NaN 5
top NaN Нью-Йорк NaN ...           NaN NaN 2023-05-15
freq NaN 1 NaN ...           NaN NaN 1
mean 103.500000 NaN 3.500000... 7.800000e+05 2150.000000 NaN
std 1.870829 NaN 1.048809... 2.774887e+05 755.645419 NaN
min 101.000000 NaN 2.000000... 4.500000e+05 1400.000000 NaN
25% 102.250000 NaN 3.000000... 6.500000e+05 1725.000000 NaN
50% 103.500000 NaN 3.500000... 7.500000e+05 1900.000000 NaN
75% 104.750000 NaN 4.000000... 8.500000e+05 2375.000000 NaN
max 106.000000 NaN 5.000000... 1.200000e+06 3500.000000 NaN

Объяснение каждой статистики

  • Граф: Количество не пропущенных записей для каждого столбца.
    • Пример: count = 6 для Спальниуказывает на то, что все строки содержат достоверные данные.
  • Среднее: Среднее значение столбца.
    • Пример: среднее = 3,5 для Спальни, что указывает на среднее значение 3,5 спальни за объект.
  • Std: Стандартное отклонение, показывающее разброс значений от среднего.
    • Пример: std = 1.048809 для СпальниЭто означает, что количество спален варьируется в умеренных пределах.
  • Мин/Макс: Наименьшее и наибольшее значения.
    • Пример: мин = 2 и макс = 5 для Спальни.
  • 25%, 50%, 75% (квартили): Представляют собой разброс данных:
    • 25%: Значение, ниже которого находится 25% данных (первый квартиль).
    • 50%: Медианное значение.
    • 75%: Значение, ниже которого находится 75% данных (третий квартиль).

5. isnull(): Выявление отсутствующих данных

Сайт isnull() Функция помогает определить отсутствующие данные в DataFrame. Она возвращает DataFrame той же формы, что и оригинал, с Правда где данные отсутствуют NaN и Ложь иначе. Обычно используется вместе с другими функциями, такими как sum() для подсчета отсутствующих значений в столбцах или строках.

Пример кода:

# Определите отсутствующие значения
print(df.isnull())
# Подсчитайте отсутствующие значения для каждого столбца
print(df.isnull().sum())

df.isnull() Выход:

  PropertyID  Расположение  Спальни  Ванные комнаты  Цена  ПлощадьФутаж  ListingDate
0       Ложь     Ложь     Ложь      Ложь  Ложь          Ложь        Ложь
1       Ложь     Ложь     Ложь      Ложь  Ложь          Ложь        Ложь
2       Ложь     Ложь     Ложь      Ложь   Правда          Ложь        Ложь
3       Ложь     Ложь     Ложь      Ложь  Ложь          Ложь         Правда
4       Ложь     Ложь     Ложь      Ложь  Ложь          Ложь        Ложь
5       Ложь     Ложный     Ложь      Ложь  Ложь          Ложь        Ложь

df.isnull().sum() Выход:

PropertyID 0
Расположение 0
Спальни 0
Ванные комнаты 0
Цена 1
Площадь 0
ListingDate 1
dtype: int64

6. dropna(): Удаление пропущенных данных

Сайт дропна() функция удаляет строки или колонки с отсутствующими данными NaN из кадра данных. По умолчанию он удаляет строки с любыми отсутствующими значениями. Вы можете настроить его поведение так, чтобы он удалял только столбцы или удалял строки/столбцы, в которых отсутствуют все или определенное подмножество значений

Пример кода:

# Отбросьте строки с отсутствующими значениями
df_dropped_rows = df.dropna()
print(df_dropped_rows)

# Отбросьте столбцы с пропущенными значениями
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)

Вот как выглядит DataFrame после удаления всех строки содержащий NaN ценности:

PropertyIDРасположениеСпальниВанные комнатыЦенаSquareFootageListingDate
101Нью-Йорк3275000018002023-05-15
102Сан-Франциско2185000014002023-06-01
105Майами54120000035002023-03-22
106Хьюстон4345000020002023-07-01

Вот кадр данных с колонки содержащий NaN значения удалены.

PropertyIDРасположениеСпальниВанные комнатыSquareFootage
101Нью-Йорк321800
102Сан-Франциско211400
103Лос-Анджелес432500
104Чикаго321700
105Майами543500
106Хьюстон432000

7. fillna(): Замена пропущенных данных

Сайт fillna() функция заменяет отсутствующие данные NaN с указанными значениями. Пандас дропна() метод эффективно обрабатывает и удаляет нулевые значения из DataFrame, в то время как метод fillna() Метод предлагает гибкое решение для замены NaN значения с заданным значением по вашему выбору. Этот метод предлагает гибкий подход к управлению отсутствующими данными, позволяя заполнить пробелы с помощью фиксированного значения, а именно среднее, медиана, режимили другие расчетные статистические данные.

Пример кода:

# Заполните недостающие значения в столбце 'Цена' средней ценой df['Цена'] = 
df['Price'].fillna(df['Price'].mean()) 
print(df)

Вывод кода демонстрирует, что NaN значение было успешно заменено на среднюю цену.

PropertyIDРасположениеСпальниВанные комнатыЦенаSquareFootageListingDate
101Нью-Йорк3275000018002023-05-15
102Сан-Франциско2185000014002023-06-01
103Лос-Анджелес4378000025002023-04-10
104Чикаго326500001700NaN
105Майами54120000035002023-03-22
106Хьюстон4345000020002023-07-01

Сайт ListingDate столбец также содержит NaN значение. Вместо того чтобы выполнять вычисления, мы можем просто использовать заполнитель, например "неизвестно. Вот как это сделать;

# Заполните отсутствующие значения в столбце 'ListingDate' заполнителем
df['ListingDate'] = df['ListingDate'].fillna('Unknown')
print(df)

Теперь кадр данных выглядит следующим образом:

PropertyIDРасположениеСпальниВанные комнатыЦенаSquareFootageListingDate
101Нью-Йорк3275000018002023-05-15
102Сан-Франциско21NaN14002023-06-01
103Лос-Анджелес4378000025002023-04-10
104Чикаго326500001700Неизвестный
105Майами54120000035002023-03-22
106Хьюстон4345000020002023-07-01

8. groupby(): Группировка и агрегирование данных

Функция groupby() в Pandas - это универсальный и мощный инструмент для разделения DataFrame на группы по одному или нескольким столбцам, позволяющий эффективно анализировать и агрегировать данные.
Она работает по принципу "разделить - применить - объединить ":
сначала данные разбиваются на группы;
затем к каждой группе применяется определенная функция;
наконец, результаты объединяются в новый DataFrame.
Такой оптимизированный подход упрощает сложные задачи манипулирования данными и повышает эффективность анализа.

Пример кода:

Например, вы можете рассчитать среднюю цену недвижимости по местоположению или подсчитать количество объявлений по категориям спален.

# Сгруппируйте данные по "местоположению" и рассчитайте среднюю цену
avg_price_by_location = df.groupby('Location')['Price'].mean()
print(avg_price_by_location)
# Группировка по "Спальням" и расчет общей площади
total_sqft_by_bedrooms = df.groupby('Bedrooms')['SquareFootage'].sum()
print(total_sqft_by_bedrooms)
# Группировка по нескольким столбцам и подсчет
count_by_location_bedrooms = df.groupby(['Location', 'Bedrooms']).size()
print(count_by_location_bedrooms)

Средняя цена по местоположению:

Местонахождение
Чикаго 650000.0
Хьюстон 450000.0
Лос-Анджелес НаН
Майами 1200000.0
Нью-Йорк 750000.0
Сан-Франциско 850000.0
Имя: Price, dtype: float64

Общая площадь по спальням:

Спальни
2    1400
3    3500
4    4500
5    3500

Подсчет по расположению и спальням:

Расположение Спальни
Чикаго 3 1
Хьюстон 4 1
Лос-Анджелес 4 1
Майами 5 1
Нью-Йорк 3 1
Сан-Франциско 2 1
dtype: int64

9. sort_values(): Сортировка данных

Функция sort_values() используется для сортировки DataFrame по одному или нескольким столбцам в порядке возрастания или убывания. Сортировка необходима для ранжирования данных, выявления экстремальных значений (например, объектов недвижимости с самой высокой ценой) или просто для упорядочивания набора данных для лучшей читабельности. Вы можете сортировать по числовым, категориальным или временным столбцам.

Пример кода:

# Сортировка по 'цене' в порядке убывания
df_sorted_by_price = df.sort_values(by='Price', ascending=False)
print(df_sorted_by_price)
# Сортировка по 'Location' в порядке возрастания
df_sorted_by_location = df.sort_values(by='Location')
print(df_sorted_by_location)
# Сортировка по нескольким столбцам: сначала по 'Bedrooms' (по возрастанию), а затем по 'Price' (по убыванию)
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms', 'Price'], ascending=[True, False])
print(df_sorted_by_bedrooms_price)

Сортировать по цене (по убыванию):

  PropertyID Расположение Спальни ...      Цена ПлощадьФутаж ЛистингДата
4 105 Майами 5... 1200000.0 3500 2023-03-22
1 102 Сан-Франциско 2...  850000.0 1400 2023-06-01
0 101 Нью-Йорк 3...  750000.0 1800 2023-05-15
3 104 Чикаго 3...  650000.0 1700 NaN
5 106 Хьюстон 4...  450000.0 2000 2023-07-01
2 103 Лос-Анджелес 4...        NaN 2500 2023-04-10

Сортировать по местоположению (по возрастанию):

[6 строк x 7 столбцов]
  PropertyID Расположение Спальни ...      Цена ПлощадьФутаж ЛистингДата
3  104  Chicago  3 . ..   650000.0  1700  NaN
5  106  Хьюстон  4 . ..   450000.0  2000  2023-07-01
2  103  Лос-Анджелес  4 . ..        NaN  2500  2023-04-10
4  105  Майами  5 . ..  1200000.0  3500  2023-03-22
0  101  Нью-Йорк  3 . ..   750000.0  1800  2023-05-15
1  102  Сан-Франциско  2 . ..   850000.0  1400  2023-06-01

Сортировка по спальням (по возрастанию) и цене (по убыванию):

  PropertyID Расположение Спальни ...      Цена ПлощадьФутаж ЛистингДата
1 102 San Francisco 2...  850000.0 1400 2023-06-01
0 101 Нью-Йорк 3...  750000.0 1800 2023-05-15
3 104 Чикаго 3...  650000.0 1700 NaN
5 106 Хьюстон 4...  450000.0 2000 2023-07-01
2 103 Лос-Анджелес 4...        NaN 2500 2023-04-10
4 105 Майами 5... 1200000.0 3500 2023-03-22

10. apply(): Применение пользовательских функций к данным

Функция apply() позволяет применять пользовательские функции к строкам или столбцам DataFrame. Это мощный метод для выполнения преобразований по элементам, вычислений или условных операций, выходящих за рамки встроенных функций Pandas.

Пример кода:

Приведем пример, в котором мы хотим создать новый столбец для расчета цены за квадратный фут.

# Определите пользовательскую функцию для расчета цены за квадратный фут
def price_per_sqft(price, sqft):
  return price / sqft if sqft != 0 else 0

# Примените пользовательскую функцию для создания нового столбца
df['PricePerSqFt'] = df.apply(lambda row: price_per_sqft(row['Price'], row['SquareFootage']), axis=1)
print(df)

Вот вывод приведенного выше кода:

  PropertyID Расположение Спальни ...  ПлощадьФутаж ЛистингДата ЦенаПерСквФт
0 101 New York 3...          1800 2023-05-15 416.666667
1 102 Сан-Франциско 2...          1400 2023-06-01 607.142857
2 103 Лос-Анджелес 4... 2500 2023-04-10 NaN
3 104 Чикаго 3...          1700 NaN 382.352941
4 105 Майами 5...          3500 2023-03-22 342.857143
5 106 Хьюстон 4... 2000 2023-07-01 225.000000

Другим примером может быть преобразование названий локаций в верхний регистр;

# Примените преобразование для перевода всех имен местоположений в верхний регистр
df['Location'] = df['Location'].apply(lambda x: x.upper())
print(df)

Вот как это выглядит:

   PropertyID Расположение Спальни ...      Цена ПлощадьФутаж ЛистингДата
0 101 NEW YORK 3...  750000.0 1800 2023-05-15
1 102 САН-ФРАНЦИСКО 2...  850000.0 1400 2023-06-01
2 103 ЛОС-АНДЖЕЛЕС 4...        NaN 2500 2023-04-10
3 104 ЧИКАГО 3...  650000.0 1700 NaN
4 105 МАЙАМИ 5... 1200000.0 3500 2023-03-22
5 106 ХЬЮСТОН 4...  450000.0 2000 2023-07-01

Заключение

В этом руководстве мы рассмотрели 10 важнейших функций Pandas для анализа данных, от загрузки и проверки данных с помощью read_csv() и информация() очистке и преобразованию с помощью таких методов, как isnull(), fillna(), и применить(). Эти функции составляют основу любого рабочего процесса анализа данных, позволяя эффективно очищать, манипулировать и обобщать наборы данных. Овладев ими, вы сможете уверенно решать реальные задачи с данными. Начните практиковаться уже сегодня и узнайте, как эти инструменты могут упростить ваши задачи анализа!