3 супер полезных функции Pandas Treasure

Python pandas
3 супер полезных функции Pandas Treasure

Всем привет, меня зовут Питер~

Желаем всем счастливого Танабата ❤️

3 функции сокровищ в Pandas

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

в пандахmap,applyиapplymapОн может решить большинство этих потребностей в обработке данных, так что вам больше не нужно повторять операции. Эта статья объединяет конкретные примеры, чтобы объяснить, как использовать эти три функции сокровища.

Серийные статьи Pandas

В настоящее время сериализовано 17 статей, из которых 1-16 относятся к первому изданию «Введение в анализ данных Pandas», начиная со сводной таблицы и кросс-таблицы 17-й статьи, которые являются расширенным содержанием.

Данные моделирования

Ниже приведены основные данные моделирования, личная информация нескольких студентов (данные предназначены только для обучения)

import numpy as np
import pandas as pd

data = pd.DataFrame({"name":["小明","小红","小张","小周","小孙","小王"],
                     "sex":["男","女","女","男","男","男"],
                     "birthday":["2003-07-07","1993-08-09","1999-03-05","1995-08-19","2002-11-18","1996-07-01"],
                     "address":["深圳南山区","广州越秀区","浙江杭州","上海","北京海淀","湖北省武汉市武昌"],
                     "age":[18,28,22,26,19,25],
                     "height":[189,178,167,172,182,185],
                     "weight":[89,72,62,68,79,81]
                    })
data

Давайте посмотрим на типы данных: первые четыре — символьные, а последние три — числовые.

map

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

Как этого добиться?

Способ 1: Цикл

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

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

Напишите цикл для присвоения значений:

Способ 2: реализация карты

Циклический метод проще для понимания и удобнее для написания, но когда объем данных слишком велик, цикл будет слишком медленным. Как пользоваться картой?

Или сначала сделайте копию:

1. Отображение отношений через словарь

2. Напишите функцию для передачи на карту

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

apply

Метод apply похож на map при использовании, но apply является более полным и мощным, и он может передавать более сложные функции, которые объясняются на примерах.

параметр

DataFrame.apply(
  func, # 待执行的函数
  axis=0,   # 沿着哪个轴操作,默认是0-index,1-column
  raw=False, # 是否转成numpy的ndarray数组进行操作,默认是false
  result_type=None, # expand’, ‘reduce’, ‘broadcast’, None  # 当axis=1执行,对列属性名进行操作
  args=(), # 两个可选参数
  **kwargs)

Прежде чем продолжить, создайте копию data3:

Передайте различные функции

Применять метод, который мы можем пройти различные функции:

  • пользовательская функция
  • анонимная функция Python
  • Python поставляется с функциями
  • pandas поставляется с функциями

1. Пользовательская функция

Мы передаем пользовательскую функцию: функция выше, которая изменяет метод представления пола.

Предполагая, что все вышеуказанные возрасты - это реальные годы, мы хотим увидеть виртуальный возраст каждого человека, то есть добавить к возрасту 1 (возраст + 1), как с этим быть?

2. Анонимная функция питона: лямбда

3, Python поставляется с функциями

Мы передаем функцию len, которая поставляется с python для определения длины каждой строки:

4. Pandas поставляется с функциями

Когда мы моделируем данные, поле дня рождения является символьным типом, и теперь мы используем функцию, которая поставляется с pandas, чтобы преобразовать его в тип данных, связанный со временем:

До конвертации

после преобразования

Укажите ось

Можно указать параметр оси, чтобы указать, с какой осью работать.По умолчанию ось = 0, в направлении столбца.

Чтобы проиллюстрировать этот параметр, мы моделируем простые данные:

Сравните со значением по умолчанию, ось = 0, ось = 1:

Взгляните на эффект в Excel:

result_type

В основном работают с именами столбцов вновь сгенерированного DataFrame иМожет работать только на оси = 1, 3 значения:

  • expand
  • broadcast
  • reduce

1. Используйте result_type="expand"

2. Используйте result_type="broadcast"

Имена столбцов остаются без изменений

3. Используйте result_type="уменьшить"

Конечным результатом являются данные типа Series.

applymap

Использование applymap имеет определенные ограничения, это для DataFrameкаждые данныеПовторяй.

DataFrame.applymap(func, na_action=None, **kwargs)

Чтобы проиллюстрировать, смоделируйте простой фрагмент данных:

Как видите, приведенные выше данные имеют тип float64.

Добавьте 1 к каждому данным

3 десятичных знака для каждых данных

Отформатированные выходные данные: 3 десятичных знака для каждых данных

изменить тип данных

Тип данных приведенных выше данных моделирования df — float64, и теперь они единообразно преобразуются в тип str:

Обработка пропущенных значений

Если в данных отсутствуют значения, используйте параметр na_action для обработки:

Суммировать

Очень часто одни и те же операции выполняются со строками и столбцами данных. В этой статье объединены различные примеры для объяснения:

  • карта: та же операция, которая может удовлетворить большинство данных типа Series
  • применить: функции карты могут быть реализованы, что является более гибким и может быть передано в различные сложные или автономные функции для обработки данных.
  • applymap: выполнить ту же операцию с данными в DataFrame, использовать меньше