Что нового в версии 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__()приведение типовNonetoNaNдля типа данных 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