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



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

Таблица 5.5. Гибкие арифметические методы

Операции между DataFrame и Series
Как и в случае массивов NumPy, арифметические операции между Data-Frame и Series корректно определены. В качестве пояснительного примера рассмотрим вычисление разности между двумерным массивом и одной из его строк:

In [175]: arr = np.arange(12.).reshape((3, 4))


In [176]: arr
Out[176]:
array([ [ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]])
In [177]: arr[0]
Out[177]: array([ 0., 1., 2., 3.])
In [178]: arr – arr[0]
Out[178]:
array([ [ 0., 0., 0., 0.],
[ 4., 4., 4., 4.],
[ 8., 8., 8., 8.]])
Когда мы вычитаем arr[0] из arr, операция производится один раз для каждой строки. Это называется укладыванием и подробно объясняется в приложении A, поскольку имеет отношение к массивам NumPy вообще. Операции между DataFrame и Series аналогичны:

In [179]: frame = pd.DataFrame(np.arange(12.).reshape((4, 3)),


.....: columns=list('bde'),
.....: index=['Utah', 'Ohio', 'Texas', 'Oregon'])
In [180]: series = frame.iloc[0]
In [181]: frame
Out[181]:
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

In [182]: series


Out[182]:
b 0.0
d 1.0
e 2.0
Name: Utah, dtype: float64

По умолчанию при выполнении арифметических операций между Data-Frame и Series индекс Series сопоставляется со столбцами DataFrame, а укладываются строки:

In [183]: frame – series


Out[183]:
b d e
Utah 0.0 0.0 0.0
Ohio 3.0 3.0 3.0
Texas 6.0 6.0 6.0
Oregon 9.0 9.0 9.0

Если какой-нибудь индекс не найден либо в столбцах DataFrame, либо в индексе Series, то объекты переиндексируются для образования объединения:


In [184]: series2 = pd.Series(range(3), index=['b', 'e', 'f'])


In [185]: frame + series2
Out[185]:
b d e f
Utah 0.0 NaN 3.0 NaN
Ohio 3.0 NaN 6.0 NaN
Texas 6.0 NaN 9.0 NaN
Oregon 9.0 NaN 12.0 NaN

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


In [186]: series3 = frame['d']


In [187]: frame
Out[187]:
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

In [188]: series3


Out[188]:
Utah 1.0
Ohio 4.0
Texas 7.0
Oregon 10.0
Name: d, dtype: float64
In [189]: frame.sub(series3, axis='index')
Out[189]:
b d e
Utah –1.0 0.0 1.0
Ohio –1.0 0.0 1.0
Texas –1.0 0.0 1.0
Oregon –1.0 0.0 1.0

Передаваемый номер оси – это ось, вдоль которой производится сопоставление. В данном случае мы хотим сопоставлять с индексом строк DataFrame (axis='index' или axis=0) и укладывать поперек.






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




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

    Басты бет