Что нового в версии 1.5.1 (19 октября 2022)#

Это изменения в pandas 1.5.1. См. Примечания к выпуску для полного списка изменений, включая другие версии pandas.

Поведение groupby с категориальными группировщиками (GH 48645)#

В версиях pandas до 1.5, groupby с dropna=False все равно удалял значения NA, когда группировщик был категориального типа данных. Попытка исправления этого была предпринята в 1.5, однако это привело к регрессии, когда передача observed=False и dropna=False to groupby привело бы только к наблюдаемым категориям. Было обнаружено, что патч, исправляющий dropna=False ошибка несовместима с observed=False, и решили, что лучшее решение — восстановить правильный observed=False поведение ценой повторного введения dropna=False ошибка.

In [1]: df = pd.DataFrame(
   ...:     {
   ...:         "x": pd.Categorical([1, None], categories=[1, 2, 3]),
   ...:         "y": [3, 4],
   ...:     }
   ...: )
   ...: 

In [2]: df
Out[2]: 
     x  y
0    1  3
1  NaN  4

поведение версии 1.5.0:

In [3]: # Correct behavior, NA values are not dropped
        df.groupby("x", observed=True, dropna=False).sum()
Out[3]:
     y
x
1    3
NaN  4


In [4]: # Incorrect behavior, only observed categories present
        df.groupby("x", observed=False, dropna=False).sum()
Out[4]:
     y
x
1    3
NaN  4

поведение версии 1.5.1:

# Incorrect behavior, NA values are dropped
In [3]: df.groupby("x", observed=True, dropna=False).sum()
Out[3]: 
     y
x     
1    3
NaN  4

# Correct behavior, unobserved categories present (NA values still dropped)
In [4]: df.groupby("x", observed=False, dropna=False).sum()
Out[4]: 
     y
x     
1    3
2    0
3    0
NaN  4

Исправленные регрессии#

  • Исправлена регрессия в Series.__setitem__() приведение типов None to NaN для типа данных object (GH 48665)

  • Исправлена регрессия в DataFrame.loc() при установке значений как DataFrame со всеми True индексатор (GH 48701)

  • Регрессия в read_csv() вызывая EmptyDataError при использовании файлового дескриптора UTF-8, который уже был прочитан (GH 48646)

  • Регрессия в to_datetime() когда utc=True и arg содержащие аргументы с часовым поясом и без него вызывали ValueError (GH 48678)

  • Исправлена регрессия в DataFrame.loc() вызов FutureWarning при установке пустого DataFrame (GH 48480)

  • Исправлена регрессия в DataFrame.describe() вызов TypeError когда результат содержит NA (GH 48778)

  • Исправлена регрессия в DataFrame.plot() игнорируя недопустимые colormap для kind="scatter" (GH 48726)

  • Исправлена регрессия в MultiIndex.values() сброс freq атрибут базового Index объект (GH 49054)

  • Исправлена регрессия производительности в factorize() когда na_sentinel не является None и sort=False (GH 48620)

  • Исправлена регрессия, вызывающая AttributeError во время выдачи предупреждения, если указанное имя таблицы в DataFrame.to_sql() и фактическое имя таблицы, используемое в базе данных, не совпадают (GH 48733)

  • Исправлена регрессия в to_datetime() когда arg была строкой даты с наносекундами и format содержал %f вызовет ValueError (GH 48767)

  • Исправлена регрессия в testing.assert_frame_equal() вызов исключения для MultiIndex с Categorical и check_like=True (GH 48975)

  • Исправлена регрессия в DataFrame.fillna() замена неправильных значений для datetime64[ns] dtype и inplace=True (GH 48863)

  • Исправлено DataFrameGroupBy.size() не возвращает Series, когда axis=1 (GH 48738)

  • Исправлена регрессия в DataFrameGroupBy.apply() когда пользовательская функция вызывается на пустом датафрейме (GH 47985)

  • Исправлена регрессия в DataFrame.apply() при передаче ненулевого axis через ключевой аргумент (GH 48656)

  • Исправлена регрессия в Series.groupby() и DataFrame.groupby() когда группировщик является обнуляемым типом данных (например, Int64) или массив строк на основе PyArrow, содержит нулевые значения, и dropna=False (GH 48794)

  • Исправлена регрессия производительности в Series.isin() с несовпадающими типами данных (GH 49162)

  • Исправлена регрессия в DataFrame.to_parquet() вызов исключения, когда имя файла было указано как bytes (GH 48944)

  • Исправлена регрессия в ExcelWriter где book атрибут больше не мог быть установлен; однако установка этого атрибута теперь устарела, и эта возможность будет удалена в будущей версии pandas (GH 48780)

  • Исправлена регрессия в DataFrame.corrwith() при вычислении корреляции на связанных данных с method="spearman" (GH 48826)

Исправления ошибок#

  • Ошибка в Series.__getitem__() не переходя к позиционному для целочисленных ключей и булевых Index (GH 48653)

  • Ошибка в DataFrame.to_hdf() вызов AssertionError с булевым индексом (GH 48667)

  • Ошибка в testing.assert_index_equal() для массивов расширений с несовпадающими NA вызов ValueError (GH 48608)

  • Ошибка в DataFrame.pivot_table() вызывая неожиданное FutureWarning при установке столбца с датой и временем в качестве индекса (GH 48683)

  • Ошибка в DataFrame.sort_values() излучая ненужные FutureWarning при вызове на DataFrame с булевыми разреженными столбцами (GH 48784)

  • Ошибка в arrays.ArrowExtensionArray с оператором сравнения с недопустимым объектом не вызывал бы NotImplementedError (GH 48833)

Другие#

  • Избегать показа устаревших сигнатур при интроспекции функций с предупреждениями об аргументах, становящихся только ключевыми (GH 48692)

Участники#

Всего 16 человек внесли патчи в этот релиз. Люди со знаком «+» рядом с именами внесли патч впервые.

  • Amay Patel +

  • Дипак Сирохивал +

  • Dennis Chukwunta

  • Gaurav Sheni

  • Himanshu Wagh +

  • Lorenzo Vainigli +

  • Марк Гарсия

  • Marco Edward Gorelli

  • Мэтью Рёшке

  • MeeseeksMachine

  • Noa Tamir

  • Команда разработчиков Pandas

  • Patrick Hoefler

  • Richard Shadrach

  • Shantanu

  • Torsten Wörtwein