Версия 0.14.1 (11 июля 2014)#
Это минорный релиз от 0.14.0, включающий небольшое количество изменений API, несколько новых функций, улучшений и оптимизаций производительности, а также большое количество исправлений ошибок. Мы рекомендуем всем пользователям обновиться до этой версии.
Основные моменты включают:
Новые методы
select_dtypes()для выбора столбцов на основе типа данных иsem()для вычисления стандартной ошибки среднего.Поддержка часовых поясов dateutil (см. документация).
Поддержка игнорирования полнострочных комментариев в
read_csv()текстовый парсер.Новый раздел документации о Опции и настройки.
Множество исправлений ошибок.
Изменения API#
Openpyxl теперь вызывает ValueError при создании writer openpyxl вместо предупреждения при импорте pandas (GH 7284).
Для
StringMethods.extract, когда совпадение не найдено, результат - только содержащийNaNзначения - теперь также имеетdtype=objectвместоfloat(GH 7242)Periodобъекты больше не вызываютTypeErrorпри сравнении с использованием==с другим объектом, который не является aPeriod. Вместо этого при сравненииPeriodс другим объектом, используя==если другой объект не являетсяPeriodFalseвозвращается. (GH 7376)Ранее поведение при сбросе времени или нет в
offsets.apply,rollforwardиrollbackоперации различались между смещениями. С поддержкойnormalizeключевое слово для всех смещений (см. ниже) со значением по умолчанию False (сохранять время), поведение изменилось для некоторых смещений (BusinessMonthBegin, MonthEnd, BusinessMonthEnd, CustomBusinessMonthEnd, BusinessYearBegin, LastWeekOfMonth, FY5253Quarter, LastWeekOfMonth, Easter):In [6]: from pandas.tseries import offsets In [7]: d = pd.Timestamp('2014-01-01 09:00') # old behaviour < 0.14.1 In [8]: d + offsets.MonthEnd() Out[8]: pd.Timestamp('2014-01-31 00:00:00')
Начиная с версии 0.14.1 все смещения по умолчанию сохраняют время. Старое поведение можно получить с помощью
normalize=True# new behaviour In [1]: d + offsets.MonthEnd() Out[1]: Timestamp('2014-01-31 09:00:00') In [2]: d + offsets.MonthEnd(normalize=True) Out[2]: Timestamp('2014-01-31 00:00:00')
Обратите внимание, что для других смещений поведение по умолчанию не изменилось.
Добавить обратно
#N/A N/Aкак значение NA по умолчанию при парсинге текста (регрессия с версии 0.12) (GH 5521)Вызвать
TypeErrorпри установке на месте с.whereи неnp.nanзначение, так как это противоречит выражению установки элемента, такому какdf[mask] = None(GH 7656)
Улучшения#
Добавить
dropnaаргумент дляvalue_countsиnunique(GH 5569).Добавить
select_dtypes()метод для выбора столбцов на основе типа данных (GH 7316). См. документация.Все
offsetsподдерживаетnormalizeключевое слово для указания, следует лиoffsets.apply,rollforwardиrollbackсбрасывает время (час, минуту и т.д.) или нет (по умолчаниюFalse, сохраняет время) (GH 7156):import pandas.tseries.offsets as offsets day = offsets.Day() day.apply(pd.Timestamp("2014-01-01 09:00")) day = offsets.Day(normalize=True) day.apply(pd.Timestamp("2014-01-01 09:00"))
PeriodIndexпредставлен в том же формате, что иDatetimeIndex(GH 7601)StringMethodsтеперь работает с пустыми Series (GH 7242)Файловые парсеры
read_csvиread_tableтеперь игнорируют комментарии строк, предоставленные параметромcomment, который принимает только один символ для C-ридера. В частности, они позволяют использовать комментарии перед началом данных файла (GH 2685)Добавить
NotImplementedErrorдля одновременного использованияchunksizeиnrowsдля read_csv() (GH 6774).Тесты для базового чтения публичных сегментов S3 теперь существуют (GH 7281).
read_htmlтеперь имеетencodingаргумент, который передается в нижележащую библиотеку парсера. Вы можете использовать это для чтения веб-страниц, закодированных не в ASCII (GH 7323).read_excelтеперь поддерживает чтение из URL таким же образом, какread_csvделает. (GH 6809)Поддержка часовых поясов dateutil, которые теперь можно использовать так же, как часовые пояса pytz во всех pandas. (GH 4688)
In [3]: rng = pd.date_range( ...: "3/6/2012 00:00", periods=10, freq="D", tz="dateutil/Europe/London" ...: ) ...: In [4]: rng.tz Out[4]: tzfile('/usr/share/zoneinfo/Europe/London')
См. документация.
Реализовано
sem(стандартная ошибка среднего) операция дляSeries,DataFrame,Panel, иGroupby(GH 6897)Добавить
nlargestиnsmallestвSeriesgroupbyсписок разрешённых, что означает, что теперь вы можете использовать эти методы наSeriesGroupByобъект (GH 7053).Все смещения
apply,rollforwardиrollbackтеперь может обрабатыватьnp.datetime64, ранее приводило кApplyTypeError(GH 7452)PeriodиPeriodIndexможет содержатьNaTв его значениях (GH 7485)Поддержка сериализации (pickling)
Series,DataFrameиPanelобъектов с неуникальными метками вдоль item ось (index,columnsиitemsсоответственно) (GH 7370).Улучшенный вывод типа для datetime/timedelta со смешанными null-объектами. Регрессия с версии 0.13.1 в интерпретации объектного Index со всеми null-элементами (GH 7431)
Производительность#
Улучшения в определении типа данных для числовых операций, приводящие к повышению производительности для типов данных:
int64,timedelta64,datetime64(GH 7223)Улучшения в Series.transform для значительного повышения производительности (GH 6496)
Улучшения в DataFrame.transform с ufuncs и встроенными функциями группировки для значительного повышения производительности (GH 7383)
Регрессия в агрегации groupby для типов datetime64 (GH 7555)
Улучшения в
MultiIndex.from_productдля больших итерируемых объектов (GH 7627)
Экспериментальный#
pandas.io.data.Optionsимеет новый метод,get_all_dataметод, и теперь последовательно возвращает MultiIndexedDataFrame(GH 5602)io.gbq.read_gbqиio.gbq.to_gbqбыли переработаны для удаления зависимости от Googlebq.pyклиент командной строки. Этот подмодуль теперь используетhttplib2и Googleapiclientиoauth2clientклиентские библиотеки API которые должны быть более стабильными и, следовательно, надежными, чемbq.py. См. документация. (GH 6937).
Исправления ошибок#
Ошибка в
DataFrame.whereс симметричным фреймом и переданным другим DataFrame (GH 7506)Ошибка в индексировании Panel с осью MultiIndex (GH 7516)
Регрессия в индексации срезов даты/времени с дублированным индексом и неточными конечными точками (GH 7523)
Ошибка в setitem со списком списков и одиночными vs смешанными типами (GH 7551:)
Ошибка в операциях со временем с невыровненными Series (GH 7500)
Ошибка в определении timedelta при назначении неполной Series (GH 7592)
Ошибка в groupby
.nthс Series и целочисленным именем столбца (GH 7559)Ошибка в
Series.getс булевым аксессором (GH 7407)Ошибка в
value_countsгдеNaTне квалифицировались как пропущенные (NaN) (GH 7423)Ошибка в
to_timedeltaкоторый принимал недопустимые единицы измерения и неправильно интерпретировал 'm/h' (GH 7611, GH 6423)Ошибка в линейном графике не устанавливает правильный
xlimifsecondary_y=True(GH 7459)Ошибка в сгруппированном
histиscatterграфики используют старыеfigsizeпо умолчанию (GH 7394)Ошибка при построении подграфиков с
DataFrame.plot,histочищает переданныеaxдаже если количество подграфиков равно одному (GH 7391).Ошибка при построении подграфиков с
DataFrame.boxplotсbykw вызываетValueErrorесли количество подграфиков превышает 1 (GH 7391).Ошибка в отображении подграфиков
ticklabelsиlabelsв другом правиле (GH 5897)Ошибка в
Panel.applyс MultiIndex в качестве оси (GH 7469)Ошибка в
DatetimeIndex.insertне сохраняетnameиtz(GH 7299)Ошибка в
DatetimeIndex.asobjectне сохраняетname(GH 7299)Ошибка в срезе MultiIndex с диапазонами, похожими на дату и время (строки и Timestamps), (GH 7429)
Ошибка в
Index.minиmaxне обрабатываетnanиNaTправильно (GH 7261)Ошибка в
PeriodIndex.min/maxприводит кint(GH 7609)Ошибка в
resampleгдеfill_methodигнорировался, если вы передавалиhow(GH 2073)Ошибка в
TimeGrouperне исключает столбец, указанныйkey(GH 7227)Ошибка в
DataFrameиSeriesграфик bar и barh вызываетTypeErrorкогдаbottomиleftуказано ключевое слово (GH 7226)Ошибка в
DataFrame.histвызываетTypeErrorкогда он содержит нечисловой столбец (GH 7277)Ошибка в
Index.deleteне сохраняетnameиfreqатрибуты (GH 7302)Ошибка в
DataFrame.query()/evalгде локальные строковые переменные со знаком @ обрабатывались как временные, которые пытались удалить (GH 7300).Ошибка в
Float64Indexкоторый не допускал дубликатов (GH 7149).Ошибка в
DataFrame.replace()где истинные значения заменялись (GH 7140).Ошибка в
StringMethods.extract()где одиночная Series группы соответствия будет использовать имя сопоставителя вместо имени группы (GH 7313).Ошибка в
isnull()когдаmode.use_inf_as_null == Trueгде isnull не будет проверятьTrueкогда он встречалinf/-inf(GH 7315).Ошибка в inferred_freq приводит к None для часовых поясов восточного полушария (GH 7310)
Ошибка в
Easterвозвращает неверную дату, когда смещение отрицательное (GH 7195)Ошибка в широковещательной передаче с
.div, целочисленные типы данных и деление на ноль (GH 7325)Ошибка в
CustomBusinessDay.applyвызываетNameErrorкогдаnp.datetime64передается объект (GH 7196)Ошибка в
MultiIndex.append,concatиpivot_tableне сохраняют часовой пояс (GH 6606)Ошибка в
.locсо списком индексаторов на одном уровне мультииндекса (который не вложен) (GH 7349)Ошибка в
Series.mapпри отображении словаря с ключами-кортежами разной длины (GH 7333)Исправление всех
StringMethodsтеперь работает с пустыми Series (GH 7242)Исправлено делегирование
read_sqltoread_sql_queryкогда запрос не содержит 'select' (GH 7324).Ошибка, при которой присвоение имени столбца строкового типа
DataFrameсFloat64IndexвызывалTypeErrorво время вызоваnp.isnan(GH 7366).Ошибка, где
NDFrame.replace()неправильно заменял объекты наPeriodзначения (GH 7379).Ошибка в
.ixgetitem всегда должен возвращать Series (GH 7150)Ошибка при срезе MultiIndex с неполными индексаторами (GH 7399)
Ошибка в срезе MultiIndex с шагом в срезанном уровне (GH 7400)
Ошибка, когда отрицательные индексаторы в
DatetimeIndexне были правильно срезаны (GH 7408)Ошибка, где
NaTне отображался корректно вMultiIndex(GH 7406, GH 7409).Ошибка, при которой логические объекты преобразовывались в
nanвconvert_objects(GH 7416).Ошибка в
quantileигнорируя аргумент axis (GH 7306)Ошибка, где
nanops._maybe_null_outне работает с комплексными числами (GH 7353)Ошибка в нескольких
nanopsфункции, когдаaxis==0для 1-мерныхnanмассивы (GH 7354)Ошибка, где
nanops.nanmedianне работает, когдаaxis==None(GH 7352)Ошибка, где
nanops._has_infsне работает со многими типами данных (GH 7357)Ошибка в
StataReader.dataгде чтение dta с 0 наблюдений завершалось ошибкой (GH 7369)Ошибка в
StataReaderпри чтении файлов Stata 13 (117), содержащих строки фиксированной ширины (GH 7360)Ошибка в
StataWriterгде кодировка игнорировалась (GH 7286)Ошибка в
DatetimeIndexсравнение не обрабатываетNaTправильно (GH 7529)Ошибка при передаче входных данных с
tzinfoк некоторым смещениямapply,rollforwardилиrollbackсбрасываетtzinfoили вызываетValueError(GH 7465)Ошибка в
DatetimeIndex.to_period,PeriodIndex.asobject,PeriodIndex.to_timestampне сохраняетname(GH 7485)Ошибка в
DatetimeIndex.to_periodиPeriodIndex.to_timestampобрабатыватьNaTнекорректно (GH 7228)Ошибка в
offsets.apply,rollforwardиrollbackможет возвращать обычныеdatetime(GH 7502)Ошибка в
resampleвызываетValueErrorкогда цель содержитNaT(GH 7227)Ошибка в
Timestamp.tz_localizeсбрасываетnanosecondinfo (GH 7534)Ошибка в
DatetimeIndex.asobjectвызываетValueErrorкогда он содержитNaT(GH 7539)Ошибка в
Timestamp.__new__не сохраняет наносекунды должным образом (GH 7610)Ошибка в
Index.astype(float)где он возвращал быobjectdtypeIndex(GH 7464).Ошибка в
DataFrame.reset_indexтеряетtz(GH 3950)Ошибка в
DatetimeIndex.freqstrвызываетAttributeErrorкогдаfreqявляетсяNone(GH 7606)Ошибка в
GroupBy.sizeсозданныйTimeGrouperвызываетAttributeError(GH 7453)Ошибка: столбчатая диаграмма с одним столбцом смещена (GH 7498).
Ошибка в area plot с временными рядами с учётом часового пояса вызывает
ValueError(GH 7471)Ошибка в немонотонном
Index.unionможет сохранятьnameнекорректно (GH 7458)Ошибка в
DatetimeIndex.intersectionне сохраняет часовой пояс (GH 4690)Ошибка в
rolling_varгде окно больше массива вызвало бы ошибку (GH 7297)Ошибка с последним построенным временным рядом, определяющим
xlim(GH 2960)Ошибка с
secondary_yось не учитывается для временных рядовxlim(GH 3490)Ошибка в
Float64Indexприсваивание с нескалярным индексатором (GH 7586)Ошибка в
pandas.core.strings.str_containsне корректно сопоставляет без учёта регистра, когдаregex=Falseиcase=False(GH 7505)Ошибка в
expanding_cov,expanding_corr,rolling_cov, иrolling_corrдля двух аргументов с несовпадающим индексом (GH 7512)Ошибка в
to_sqlпринимая булеву колонку как текстовую колонку (GH 7678)Ошибка в сгруппированном
histне обрабатываетrotkw иsharexkw правильно (GH 7234)Ошибка в
.locвыполнение резервного целочисленного индексирования сobjectиндексы типа данных (GH 7496)Ошибка (регрессия) в
PeriodIndexконструктора при передачеSeriesобъекты (GH 7701).
Участники#
Всего 46 человек внесли патчи в этот релиз. Люди со знаком "+" рядом с именами внесли патч впервые.
Andrew Rosenfeld
Andy Hayden
Benjamin Adams +
Бенджамин М. Гросс +
Brian Quistorff +
Brian Wignall +
DSM
Daniel Waeber
David Bew +
David Stephens
Джейкоб Шаер
Ян Шульц
John David Reaver
John W. O’Brien
Joris Van den Bossche
Julien Danjou +
K.-Michael Aye
Кевин Шеппард
Кайл Мейер
Мэтт Виттманн
Мэтью Бретт +
Michael Mueller +
Mortada Mehyar
Филлип Клауд
Rob Levy +
Schaer, Jacob C +
Stephan Hoyer
Томас Клуйвер
Todd Jennings
Tom Augspurger
TomAugspurger
bwignall
clham
dsm054 +
helger +
immerrr
jaimefrio
jreback
лексический
onesandzeroes
rockg
sanguineturtle +
seth-p +
sinhrks
неизвестный
yelite +