Лабораторная работа 6 Индексаци, сортировка и фильтрация


Восполнение значений в арифметических методах



бет6/10
Дата14.10.2023
өлшемі184.93 Kb.
#480761
түріЛабораторная работа
1   2   3   4   5   6   7   8   9   10
Лабораторная работа 6 Анализ данных

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

Базовая функциональность 169


In [165]: df1 = pd.DataFrame(np.arange(12.).reshape((3, 4)),
.....: columns=list('abcd'))
In [166]: df2 = pd.DataFrame(np.arange(20.).reshape((4, 5)),
.....: columns=list('abcde'))
In [167]: df2.loc[1, 'b'] = np.nan
In [168]: df1
Out[168]:
a b c d
0 0.0 1.0 2.0 3.0
1 4.0 5.0 6.0 7.0
2 8.0 9.0 10.0 11.0

In [169]: df2


Out[169]:
a b c d e
0 0.0 1.0 2.0 3.0 4.0
1 5.0 NaN 7.0 8.0 9.0
2 10.0 11.0 12.0 13.0 14.0
3 15.0 16.0 17.0 18.0 19.0

Сложение этих объектов порождает отсутствующие значения в позициях, которые имеются не в обоих операндах:


In [170]: df1 + df2


Out[170]:
a b c d e
0 0.0 2.0 4.0 6.0 NaN
1 9.0 NaN 13.0 15.0 NaN
2 18.0 20.0 22.0 24.0 NaN
3 NaN NaN NaN NaN NaN

Теперь я вызову метод add объекта df1 и передам ему объект df2 и значение параметра fill_value:


In [171]: df1.add(df2, fill_value=0)


Out[171]:
a b c d e
0 0.0 2.0 4.0 6.0 4.0
1 9.0 5.0 13.0 15.0 9.0
2 18.0 20.0 22.0 24.0 14.0
3 15.0 16.0 17.0 18.0 19.0

В табл. 5.5 приведен перечень арифметических методов объектов Series и Da taFrame. У каждого из них имеется вариант, начинающийся буквой r, в котором аргументы поменяли местами. Поэтому следующие два предложения эквивалентны:


In [172]: 1 / df1


Out[172]:
a b c d
0 inf 1.000000 0.500000 0.333333
1 0.250000 0.200000 0.166667 0.142857
2 0.125000 0.111111 0.100000 0.090909

In [173]: df1.rdiv(1)


Out[173]:
a b c d
0 inf 1.000000 0.500000 0.333333
1 0.250000 0.200000 0.166667 0.142857
2 0.125000 0.111111 0.100000 0.090909

Точно так же, выполняя переиндексацию объекта Series или DataFrame, можно указать восполняемое значение:


In [174]: df1.reindex(columns=df2.columns, fill_value=0)


Out[174]:
a b c d e
0 0.0 1.0 2.0 3.0 0
1 4.0 5.0 6.0 7.0 0
2 8.0 9.0 10.0 11.0 0




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет