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


Арифметические операции и выравнивание данных



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

Арифметические операции и выравнивание данных
Одна из самых важных черт pandas – поведение арифметических операций для объектов с разными индексами. Если при сложении двух объектов обнаруживаются различные пары индексов, то результирующий индекс будет объединением индексов. Для тех, кто имеет опыт работы с базами данных, отметим, что это аналог внешнего соединения по индексным меткам. Рассмотрим простой пример:

In [150]: s1 = pd.Series([7.3, –2.5, 3.4, 1.5], index=['a', 'c', 'd', 'e'])


In [151]: s2 = pd.Series([–2.1, 3.6, –1.5, 4, 3.1],
.....: index=['a', 'c', 'e', 'f', 'g'])

In [152]: s1


Out[152]:
a 7.3
c –2.5
d 3.4
e 1.5
dtype: float64

In [153]: s2


Out[153]:
a –2.1
c 3.6
e –1.5
f 4.0
g 3.1
dtype: float64

Сложение этих объектов дает:


In [154]: s1 + s2


Out[154]:
a 5.2
c 1.1
d NaN
e 0.0
f NaN
g NaN
dtype: float64

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

In [155]: df1 = pd.DataFrame(np.arange(9.).reshape((3, 3)), columns=list('bcd'),


.....: index=['Ohio', 'Texas', 'Colorado'])
In [156]: df2 = pd.DataFrame(np.arange(12.).reshape((4, 3)), columns=list('bde'),
.....: index=['Utah', 'Ohio', 'Texas', 'Oregon'])
In [157]: df1
Out[157]:
b c d
Ohio 0.0 1.0 2.0
Texas 3.0 4.0 5.0
Colorado 6.0 7.0 8.0

In [158]: df2


Out[158]:
b d e

Utah 0.0 1.0 2.0


Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0

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


In [159]: df1 + df2


Out[159]:
b c d e
Colorado NaN NaN NaN NaN
Ohio 3.0 NaN 6.0 NaN
Oregon NaN NaN NaN NaN
Texas 9.0 NaN 12.0 NaN
Utah NaN NaN NaN NaN

Поскольку столбцы 'c' и 'e' не встречаются в обоих объектах DataFrame сразу, то в результирующем объекте они помечены как отсутствующие. Тоже самое относится к меткам строк, не встречающимся в обоих объектах.


Если сложить объекты DataFrame, не имеющие общих столбцов и строк, то результат будет содержать только значения NaN.


In [160]: df1 = pd.DataFrame({'A': [1, 2]})


In [161]: df2 = pd.DataFrame({'B': [3, 4]})
In [162]: df1
Out[162]:
A
0 1
1 2

In [163]: df2


Out[163]:

B
0 3


1 4

In [164]: df1 – df2


Out[164]:
A B
0 NaN NaN
1 NaN NaN




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




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

    Басты бет