Эта статья возникла из личного публичного аккаунта:TechFlow, оригинальность это не просто, прошу внимания
Сегодняобработка данных пандВ четвертой статье темы поговорим об индексах в DataFrame.
В предыдущей статье мы представили использование некоторых часто используемых индексов в структуре данных DataFrame, таких как iloc, loc и логические индексы. В сегодняшней статье давайте взглянем на некоторые из DataFrameосновные операции.
выравнивание данных
Мы можем вычислить сумму двух DataFrames,pandas автоматически выровняет два DataFrames, если данные не совпадают, будет установлено значение Nan (не число).
Сначала давайте создадим два DataFrames:
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.arange(9).reshape((3, 3)), columns=list('abc'), index=['1', '2', '3'])
df2 = pd.DataFrame(np.arange(12).reshape((4, 3)), columns=list('abd'), index=['2', '3', '4', '5'])
Полученные результаты согласуются с нашими предположениями, но на самом деле толькоСоздать DataFrame из массива numpy, а затем укажите индекс и столбцы, что следует рассматривать как очень простое использование.
Затем мы добавляем два DataFrames и получаем:
Мы обнаружили, что после того, как панды объединили два кадра данных,Любая позиция, которая не отображается в обоих DataFrames, будет установлена на Nan. Это действительно имеет смысл.На самом деле, это не просто сложение.Мы можем вычислить четыре операции сложения, вычитания, умножения и деления двух DataFrames. Если это для расчета деления двух DataFrames, то в дополнение к несоответствующим данным будет установлено Nan,Деление на ноль также может привести к выбросам(наверное не обязательно нан, а инф).
fill_value
Если бы мы работали с двумя кадрами данных, нам определенно не понадобились бы нули. В это время нам нужно заполнить пустое значение. Мы не можем передавать параметры для заполнения операции напрямую с помощью оператора. В это время нам нужно использовать данные, предоставленные DataFrame для нас.Арифметический метод.
В DataFrame есть несколько часто используемых операторов:
Мы все очень хорошо понимаем add, sub и div, так что же означают здесь методы radd и rsub и почему перед ними следует добавлять r?
Выглядит загадочно, но, грубо говоря, ничего не стоит, радд привыкПеревернуть параметриз. Например, если мы хотим получить обратную величину всех элементов в DataFrame, мы можем записать ее как 1/df. Поскольку 1 не является DataFrame, мы не можем использовать 1 для вызова методов в DataFrame и не можем передавать параметры.Чтобы решить эту ситуацию, мы1/df можно записать как df.rdiv(1), поэтому мы можем передавать в него параметры.
Поскольку при делении происходит деление на ноль, мы получаем inf, представляющий бесконечность.
Мы можем передать параметр fill_value в методы add и div, этот параметр можно использовать перед вычислением.Заполните пропущенные значения с одной стороны. То есть для позиций, отсутствующих только в одном DataFrame, они будут заменены указанными нами значениями,Если он отсутствует в обоих кадрах данных, это все равно будет Нэн..
Мы можем узнать, сравнив результаты.После сложения позиции (1, d), (4, c) и (5, c) все Nan, потому что эти позиции в двух кадрах данных df1 и df2 все нулевые значения. , поэтому он не заполняется.
Параметр fill_value появляется во многих API., такие как переиндексация и т. д., использование такое же, мы можем обратить внимание при просмотре документации по API.
Так что же нам делать с нулевым значением, которое появляется после заполнения? Можно ли только вручную найти эти места для заполнения? Конечно, это нереально, и панды также предоставляют нам API, специально решающий нулевые значения.
нулевое значение API
Первое, что нам нужно сделать, прежде чем заполнять нули, этонайден нулевой. В ответ на эту проблему у нас есть API isna, который возвращает DataFrame логического типа, Каждая позиция в DataFrame указывает, является ли соответствующая позиция исходного DataFrame нулевым значением.
dropna
Конечно, недостаточно просто узнать, является ли это нулевым значением.Иногда мы хотим избежать появления нулевого значения.В это время мы можем выбратьотбросить пустое значение. В этой ситуации мы можем использовать метод dropna в DataFrame.
Мы обнаружили, что после использования дропны,Строки с нулевыми значениями отбрасываются. Сохраняются только строки без нулевых значений.Иногда мы хотим отбросить столбцы вместо строк.В настоящее время мы можем контролировать это, передав параметр оси.
Таким образом, мы получаем столбец без нулевых значений.Помимо управления строкой и столбцом, мыВы также можете контролировать, насколько строго выполняется падение. По параметру можно судить как, как поддерживает два значения, одно "все", другое "любое". all означает, что он будет отброшен только тогда, когда строка или столбец заполнены нулевыми значениями, и любое соответствующее этому значение будет отброшено, пока есть нулевое значение. Если он не заполнен по умолчанию, то он считается любым.В обычных условиях мы не используем этот параметр.Наверное достаточно для впечатления.
fillna
В дополнение к удалению данных с нулевыми значениями панды также можно использовать длязаполнить пустые значения, на самом деле это наиболее часто используемый метод.
Мы можем просто передать определенное значение для заполнения:
fillnaвернет новый DataFrame, где все значения Nan будут заменены на указанные нами значения. Если мы не хотим, чтобы он возвращал новый DataFrame, а напрямую модифицировал исходные данные, мы можем использовать параметр inplace, чтобы указать, что это операция на месте, тогда pandas изменит исходный DataFrame.
df3.fillna(3, inplace=True)
Помимо заполнения конкретных значений, мы такжеЕго можно комбинировать с некоторыми вычислениями для расчета значения, которое должно быть заполнено.. Например, мы можем рассчитать среднее, максимальное, минимальное и другие вычисления столбца для заполнения. Функцию fillna можно использовать не только для DataFrame, но и для Series, поэтому мы можем заполнить столбец или несколько столбцов в DataFrame:
Помимо расчета среднего, максимального и минимального значений и других значений для заполнения,Вы также можете указать использовать значение предыдущей строки или следующую строку отсутствующих значений для заполнения.. Для реализации этой функции необходимо использовать параметр метода, который имеет два полученных значения, ffill означает заполнение значением предыдущей строки, а bfill означает заполнение значением следующей строки.
Мы можем видеть, что когда мы используем ffill для заполнения, для первой строки данных, поскольку у нее нет предыдущей строки, ее Nan будет сохранен. Также, когда мы используем bfill, последняя строка не может быть заполнена.
Суммировать
В сегодняшней статье мыВ основном знакомит с некоторыми базовыми операциями DataFrame., такие как самые основные четыре арифметических операции. При выполнении четырех операций, поскольку индексы строк и столбцов могут быть не выровнены между DataFrames, вычисленный результат будет иметь нулевое значение, поэтому нам нужно иметь дело с нулевым значением. Мы можем заполнить, передав fill_value во время вычисления, или мы можем заполнить результат с помощью fillna после вычисления.
В практических приложениях мы редко добавляем или вычитаем два кадра данных напрямую, ноВакансии в DataFrame — обычное явлениевещь. Поэтому заполнение и обработка нулевых значений очень важны, что, можно сказать, находится в центре внимания обучения, и каждый должен обратить на это внимание.
Сегодняшняя статья здесь, если вам понравилась эта статья, пожалуйста, приходите на волнукачество три, поддержите меня (Подписывайтесь, смотрите, лайкайте).
В этой статье используетсяmdniceнабор текста