Функция assert_series_equal
Функция assert_series_equal из модуля pandas.testing
предназначена для проверки идентичности двух объектов Series
в тестовых сценариях. Она сравнивает значения, индексы, типы данных
и другие атрибуты серий. Функция выбрасывает исключение
AssertionError, если серии не совпадают, что делает
её удобной для использования в модульных тестах. Основные параметры
позволяют настраивать точность сравнения для чисел с плавающей точкой,
а также управлять проверкой dtype, индексов и имён.
Синтаксис
pd.testing.assert_series_equal(
left,
right,
check_dtype=True,
check_index_type=False,
check_series_type=False,
check_names=True,
check_exact=False,
rtol=1e-5,
atol=1e-8
)
Пример
Давайте сравним две идентичные серии:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([1, 2, 3, 4, 5])
pd.testing.assert_series_equal(ser1, ser2)
print("Серии идентичны")
Результат выполнения кода:
"Серии идентичны"
Пример
Сравним серии с разными значениями:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([1, 2, 3, 4, 6])
try:
pd.testing.assert_series_equal(ser1, ser2)
except AssertionError as e:
print("Ошибка:", str(e).split("\n")[0])
Результат выполнения кода:
"Ошибка: Series are different"
Пример
Сравним серии с числами с плавающей точкой, используя допуск:
import pandas as pd
ser1 = pd.Series([1.0, 2.0, 3.0])
ser2 = pd.Series([1.0000001, 2.0000001, 3.0000001])
pd.testing.assert_series_equal(
ser1,
ser2,
rtol=1e-6,
atol=1e-6
)
print("Серии равны с допуском")
Результат выполнения кода:
"Серии равны с допуском"
Пример
Отключим проверку dtype для серий с разными типами данных:
import pandas as pd
ser1 = pd.Series([1, 2, 3], dtype="int64")
ser2 = pd.Series([1.0, 2.0, 3.0], dtype="float64")
pd.testing.assert_series_equal(
ser1,
ser2,
check_dtype=False
)
print("Серии сравниваются без проверки dtype")
Результат выполнения кода:
"Серии сравниваются без проверки dtype"
Пример
Проверим идентичность индексов с помощью параметра check_index_type:
import pandas as pd
ser1 = pd.Series([1, 2, 3], index=pd.Index([1, 2, 3]))
ser2 = pd.Series([1, 2, 3], index=pd.Index([1.0, 2.0, 3.0]))
try:
pd.testing.assert_series_equal(
ser1,
ser2,
check_index_type=True
)
except AssertionError as e:
print("Ошибка:", str(e).split("\n")[0])
Результат выполнения кода:
"Ошибка: Series.index are different"
Смотрите также
-
функция
assert_frame_equal,
которая сравнивает два объекта DataFrame -
функция
assert_index_equal,
которая сравнивает два объекта Index