Версия 0.21.1 (12 декабря 2017)#
Это минорный выпуск с исправлением ошибок в серии 0.21.x и включает некоторые небольшие исправления регрессий, исправления ошибок и улучшения производительности. Мы рекомендуем всем пользователям обновиться до этой версии.
Основные моменты включают:
Временно восстановить функциональность построения графиков matplotlib для дат и времени. Это должно решить проблемы для пользователей, которые неявно полагались на pandas для построения графиков дат и времени с matplotlib. См. здесь.
Улучшения функций ввода-вывода Parquet, представленных в версии 0.21.0. См. здесь.
Что нового в v0.21.1
Восстановить регистрацию конвертера даты и времени Matplotlib#
pandas реализует некоторые конвертеры matplotlib для красивого форматирования меток осей на графиках с datetime или Period значения. До pandas 0.21.0
они неявно регистрировались в matplotlib как побочный эффект import
pandas.
В pandas 0.21.0 мы требовали от пользователей явной регистрации
преобразователя. Это вызвало проблемы у некоторых пользователей, которые полагались на наличие этих преобразователей
для обычных matplotlib.pyplot методы построения графиков, поэтому мы
временно отменяем это изменение; pandas 0.21.1 снова регистрирует конвертеры при
импорте, как и до версии 0.21.0.
Мы добавили новую опцию для управления конвертерами:
pd.options.plotting.matplotlib.register_converters. По умолчанию они зарегистрированы. Переключение этого на False удаляет форматировщики pandas и восстанавливает
любые преобразователи, которые мы перезаписали при их регистрации (GH 18301).
Мы работаем с разработчиками matplotlib, чтобы сделать это проще. Мы пытаемся сбалансировать удобство пользователей (автоматическая регистрация конвертеров) с производительностью импорта и лучшими практиками (импорт pandas не должен иметь побочного эффекта перезаписи любых пользовательских конвертеров, которые вы уже установили). В будущем мы надеемся иметь большую часть функциональности форматирования даты и времени в matplotlib, оставив только специфичные для pandas конвертеры в pandas. Затем мы плавно откажемся от автоматической регистрации конвертеров в пользу явной регистрации пользователями, когда они этого захотят.
Новые возможности#
Улучшения функциональности ввода-вывода Parquet#
DataFrame.to_parquet()теперь будет записывать нестандартные индексы, когда базовый движок поддерживает это. Индексы будут сохранены при чтении обратно с помощьюread_parquet()(GH 18581).read_parquet()теперь позволяет указать столбцы для чтения из файла parquet (GH 18154)read_parquet()теперь позволяет указывать kwargs, которые передаются соответствующему движку (GH 18216)
Другие улучшения#
Timestamp.timestamp()теперь доступен в Python 2.7. (GH 17329)GrouperиTimeGrouperтеперь имеют дружественный вывод repr (GH 18203).
Устаревшие функции#
pandas.tseries.registerбыл переименован вpandas.plotting.register_matplotlib_converters()(GH 18301)
Улучшения производительности#
Улучшена производительность построения графиков больших серий/dataframes (GH 18236).
Исправления ошибок#
Преобразование#
Ошибка в
TimedeltaIndexвычитание могло некорректно переполняться, когдаNaTприсутствует (GH 17791)Ошибка в
DatetimeIndexвычитание datetimelike из DatetimeIndex могло не переполниться (GH 18020)Ошибка в
IntervalIndex.copy()при копировании иIntervalIndexс нестандартнымclosed(GH 18339)Ошибка в
DataFrame.to_dict()где столбцы datetime с информацией о часовом поясе не были преобразованы в требуемые массивы при использовании сorient='records', вызываяTypeError(GH 18372)Ошибка в
DateTimeIndexиdate_range()где несовпадающие с учётом часового поясаstartиendчасовые пояса не вызывали ошибку, еслиend.tzinfoравно None (GH 18431)Ошибка в
Series.fillna()который вызывался при передаче длинного целого числа в Python 2 (GH 18159).
Индексирование#
Ошибка в логическом сравнении
datetime.datetimeиdatetime64[ns]Series с типом данных (GH 17965)Ошибка, где
MultiIndexс более чем миллионом записей не вызывалAttributeErrorУстарело создание функций в списке функций, переданных вGH 18165)Ошибка в
IntervalIndexконструктору, когда передается список интервалов с нестандартнымclosed(GH 18334)Ошибка в
Index.putmaskпри передаче недопустимой маски (GH 18368)Ошибка в маскированном присваивании
timedelta64[ns]dtypeSeries, некорректно преобразованы в float (GH 18493)
Ввод-вывод#
Ошибка в
StataReaderне преобразуя столбцы даты/времени с отображением форматирования, исправлено (GH 17990). Ранее столбцы с форматированием отображения обычно оставались порядковыми номерами и не преобразовывались в объекты datetime.Ошибка в
read_csv()при чтении сжатого файла в кодировке UTF-16 (GH 18071)Ошибка в
read_csv()для обработки нулевых значений в столбцах индекса при указанииna_filter=False(GH 5239)Ошибка в
read_csv()при чтении числовых полей категорий с высокой кардинальностью (GH 18186)Ошибка в
DataFrame.to_csv()когда таблица имелаMultiIndexстолбцов, и был передан список строк дляheader(GH 5539)Ошибка в разборе целочисленных datetime-подобных столбцов с указанным форматом в
read_sql(GH 17855).Ошибка в
DataFrame.to_msgpack()при сериализации данныхnumpy.bool_тип данных (GH 18390)Ошибка в
read_json()не декодируется при чтении JSON с разделителями строк из S3 (GH 17200)Ошибка в
pandas.io.json.json_normalize()чтобы избежать измененияmeta(GH 18610)Ошибка в
to_latex()где повторяющиеся значения MultiIndex не выводились, даже если более высокий уровень индекса отличался от предыдущей строки (GH 14484)Ошибка при чтении категориальных столбцов, содержащих только NaN, в
HDFStore(GH 18413)Ошибка в
DataFrame.to_latex()сlongtable=Trueгде латексный multicolumn всегда охватывал три столбца (GH 17959)
Построение графиков#
Ошибка в
DataFrame.plot()иSeries.plot()сDatetimeIndexгде фигура, сгенерированная ими, не может быть сериализована в Python 3 (GH 18439)
GroupBy/resample/rolling#
Ошибка в
DataFrame.resample(...).apply(...)когда есть вызываемый объект, который возвращает разные столбцы (GH 15169)Ошибка в
DataFrame.resample(...)когда происходит изменение времени (летнее время) и частота передискретизации составляет 12 часов или выше (GH 15549)Ошибка в
pd.DataFrameGroupBy.count()при подсчёте по столбцу datetimelike (GH 13393)Ошибка в
rolling.varгде вычисление неточно с массивом нулевых значений (GH 18430)
Изменение формы#
Сообщение об ошибке в
pd.merge_asof()для несоответствия типа данных ключа теперь включает тип данных левого и правого ключа (GH 18068)Ошибка в
pd.concatкогда объединяются пустые и непустые DataFrame или Series (GH 18178 GH 18187)Ошибка в
DataFrame.filter(...)когдаunicodeпередается как условие в Python 2 (GH 13101)Ошибка при слиянии пустых DataFrame, когда
np.seterr(divide='raise')установлен (GH 17776)
Числовой#
Ошибка в
pd.Series.rolling.skew()иrolling.kurt()со всеми одинаковыми значениями имеет проблему с плавающей точкой (GH 18044)
Категориальный#
Ошибка в
DataFrame.astype()где приведение к 'category' на пустомDataFrameвызывает ошибку сегментации (GH 18004)Сообщения об ошибках в модуле тестирования были улучшены, когда элементы имеют разные
CategoricalDtype(GH 18069)CategoricalIndexтеперь может корректно приниматьpd.api.types.CategoricalDtypeв качестве его типа данных (GH 18116)Ошибка в
Categorical.unique()возвращая только для чтенияcodesмассив, когда все категории былиNaN(GH 18051)Ошибка в
DataFrame.groupby(axis=1)сCategoricalIndex(GH 18432)
String#
Series.str.split()теперь будет распространятьNaNзначения по всем расширенным столбцам вместоNone(GH 18450)
Участники#
Всего 46 человек внесли патчи в этот релиз. Люди со знаком "+" рядом с именами внесли патч впервые.
Aaron Critchley +
Alex Rychyk
Alexander Buchkovsky +
Alexander Michael Schade +
Крис Маццулло
Cornelius Riemenschneider +
Dave Hirschfeld +
David Fischer +
David Stansby +
Dror Atariah +
Eric Kisslinger +
Ханс +
Ingolf Becker +
Jan Werkmann +
Jeff Reback
Joris Van den Bossche
Jörg Döpfert +
Kevin Kuhl +
Krzysztof Chomski +
Leif Walsh
Licht Takeuchi
Manraj Singh +
Мэтт Бреймер-Хейс +
Michael Waskom +
Yoav Ram
Peter Hoffmann +
Robert Meyer +
Сэм Коэн +
Sietse Brouwer +
Свен +
Tim Swast
Tom Augspurger
Wes Turner
William Ayd +
Yee Mey +
bolkedebruin +
cgohlke
derestle-htwg +
fjdiod +
gabrielclow +
gfyoung
ghasemnaddaf +
jbrockmendel
jschendel
miker985 +
topper-123