版本 0.14.1 (2014年7月11日)#

这是从 0.14.0 发布的一个小版本,包括少量 API 更改、几个新功能、增强功能和性能改进,以及大量错误修复。我们建议所有用户升级到此版本。

API 变化#

  • 现在,在构建 openpyxl 写入器时,Openpyxl 会引发 ValueError,而不是在 pandas 导入时发出警告 (GH 7284)。

  • 对于 StringMethods.extract,当没有找到匹配时,结果 - 仅包含 NaN 值 - 现在也有 dtype=object 而不是 float (GH 7242)

  • Period 对象在使用 == 与另一个 不是 Period 的对象进行比较时不再引发 TypeError。相反,当使用 == 比较 Period 对象与另一个对象时,如果另一个对象不是 Period,则返回 False。(GH 7376)

  • 之前,在 offsets.applyrollforwardrollback 操作中是否重置时间的处理方式在不同的偏移量之间有所不同。随着对所有偏移量支持 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)

  • 在使用 .where 进行原地设置时,如果值不是 np.nan,则引发 TypeError,因为这与像 df[mask] = None 这样的设置项表达式不一致 (GH 7656)

增强功能#

  • value_countsnunique 添加 dropna 参数 (GH 5569)。

  • 添加 select_dtypes() 方法,以允许基于dtype选择列(GH 7316)。请参阅 文档

  • 所有 offsets 支持 normalize 关键字,用于指定 offsets.applyrollforwardrollback 是否重置时间(小时、分钟等)或不重置(默认 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_csvread_table 现在忽略由参数 comment 提供的行注释,该参数仅接受C读取器的一个字符。特别是,它们允许在文件数据开始之前进行注释 (GH 2685)

  • read_csv() 同时使用 chunksizenrows 添加 NotImplementedError (GH 6774)。

  • 现在存在对公共S3存储桶基本读取的测试 (GH 7281)。

  • read_html 现在支持一个传递给底层解析器库的 encoding 参数。你可以使用这个参数来读取非ASCII编码的网页 (GH 7323)。

  • read_excel 现在支持以与 read_csv 相同的方式从 URL 读取。 (GH 6809)

  • 支持 dateutil 时区,现在可以在整个 pandas 中以与 pytz 时区相同的方式使用。(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')
    

    请参阅 文档

  • SeriesDataFramePanelGroupby 实现了 ``sem``(均值的标准误差)操作 (GH 6897)

  • nlargestnsmallest 添加到 Series groupby 允许列表中,这意味着你现在可以在 SeriesGroupBy 对象上使用这些方法 (GH 7053)。

  • 所有偏移 apply, rollforwardrollback 现在可以处理 np.datetime64,之前会导致 ApplyTypeError (GH 7452)

  • PeriodPeriodIndex 可以在其值中包含 NaT (GH 7485)

  • 支持对 SeriesDataFramePanel 对象进行序列化,这些对象在 item 轴(分别是 indexcolumnsitems)上具有非唯一标签 (GH 7370)。

  • 改进了对混合空对象的 datetime/timedelta 推断。从 0.13.1 版本开始,对所有空元素的对象索引的解释出现了回归 (GH 7431)

性能#

  • 在涉及产生性能提升的数值操作中,对 dtype 推断的改进:int64, timedelta64, datetime64 (GH 7223)

  • 在 Series.transform 中的改进以实现显著的性能提升 (GH 6496)

  • 在 DataFrame.transform 中使用 ufuncs 和内置的分组函数以显著提升性能 (GH 7383)

  • 在 datetime64 dtypes 的 groupby 聚合中的回归 (GH 7555)

  • MultiIndex.from_product 对大型可迭代对象的改进 (GH 7627)

实验性#

  • pandas.io.data.Options 有一个新方法,get_all_data 方法,现在一致返回一个 MultiIndexed 的 DataFrame (GH 5602)

  • io.gbq.read_gbqio.gbq.to_gbq 被重构以移除对 Google bq.py 命令行客户端的依赖。这个子模块现在使用 httplib2 和 Google apiclientoauth2client API 客户端库,这些库应该比 bq.py 更稳定和可靠。请参阅 文档。 (GH 6937)。

错误修复#

  • DataFrame.where 中存在一个对称形状的帧和传递的另一个 DataFrame 的错误 (GH 7506)

  • 带有MultiIndex轴的面板索引中的错误 (GH 7516)

  • 在具有重复索引和非精确端点的日期时间切片索引中回归 (GH 7523)

  • 在带有列表的列表和单一类型与混合类型的情况下,setitem 中的 Bug (GH 7551:)

  • 时间操作中未对齐的 Series 的 Bug (GH 7500)

  • 在分配不完整系列时 timedelta 推断中的错误 (GH 7592)

  • 使用 Series 和类似整数的列名进行 groupby .nth 时的错误 (GH 7559)

  • Series.get 中带有布尔访问器的错误 (GH 7407)

  • value_counts 中的一个错误,其中 NaT 不符合缺失 (NaN) 的条件 (GH 7423)

  • to_timedelta 中的错误,接受无效的单位并对 ‘m/h’ 产生误解 (GH 7611, GH 6423)

  • 线条图中的错误,如果 secondary_y=True 则不会设置正确的 xlim (GH 7459)

  • 分组的 histscatter 图中的错误使用了旧的 figsize 默认值 (GH 7394)

  • 在使用 DataFrame.plot 绘制子图时存在一个错误,即使子图数量为1,hist 也会清除传递的 ax (GH 7391)。

  • 在使用 DataFrame.boxplot 绘制子图时,如果子图数量超过 1,带有 by kw 的错误会引发 ValueError (GH 7391)。

  • 子图中的错误显示 ticklabelslabels 在不同的规则中 (GH 5897)

  • Panel.apply 中使用 MultiIndex 作为轴的错误 (GH 7469)

  • DatetimeIndex.insert 中的错误不保留 nametz (GH 7299)

  • DatetimeIndex.asobject 中的错误不会保留 name (GH 7299)

  • 在具有类似日期时间范围(字符串和时间戳)的 MultiIndex 切片中的错误,(GH 7429)

  • Index.minmax 中的错误无法正确处理 nanNaT (GH 7261)

  • PeriodIndex.min/max 中的错误导致 int (GH 7609)

  • resample 中的一个错误,如果你传递了 howfill_method 会被忽略 (GH 2073)

  • TimeGrouper 中的错误不会排除由 key 指定的列 (GH 7227)

  • DataFrameSeries 的条形图和水平条形图中,当指定 bottomleft 关键字时会引发 TypeError (GH 7226)

  • DataFrame.hist 包含非数字列时会引发 TypeError (GH 7277)

  • Index.delete 中的错误不会保留 namefreq 属性 (GH 7302)

  • DataFrame.query()/eval 中的一个错误,其中带有 @ 符号的本地字符串变量被当作尝试删除的临时变量处理 (GH 7300)。

  • Float64Index 中的一个错误,不允许重复 (GH 7149)。

  • DataFrame.replace() 中的一个错误,其中真实值被替换 (GH 7140)。

  • StringMethods.extract() 中的一个错误,其中单个匹配组 Series 会使用匹配器的名称而不是组名称 (GH 7313)。

  • mode.use_inf_as_null == True 时,isnull() 中的错误,其中 isnull 在遇到 inf/-inf 时不会测试 True (GH 7315)。

  • 在推断出的频率中存在一个错误,导致东半球时区结果为None (GH 7310)

  • Easter 中的错误在偏移量为负时返回不正确的日期 (GH 7195)

  • 使用 .div 进行广播时,整数数据类型和除零错误 (GH 7325)

  • CustomBusinessDay.apply 中的错误在传递 np.datetime64 对象时引发 NameError (GH 7196)

  • MultiIndex.appendconcatpivot_table 中的错误不会保留时区 (GH 6606)

  • .loc 中使用单个多级索引级别的索引器列表(不是嵌套的)的错误 (GH 7349)

  • 当映射一个包含不同长度元组键的字典时,Series.map 中的错误 (GH 7333)

  • 所有 StringMethods 现在在空 Series 上工作 (GH 7242)

  • 修复当查询不包含 ‘select’ 时 read_sql 委托给 read_sql_query 的问题 (GH 7324)。

  • 在调用 np.isnan 时,将字符串列名分配给带有 Float64IndexDataFrame 会引发 TypeError 的错误 (GH 7366)。

  • NDFrame.replace() 未能正确替换带有 Period 值的对象的错误 (GH 7379)。

  • .ix getitem 中的错误应始终返回一个 Series (GH 7150)

  • 使用不完整索引器进行 MultiIndex 切片时的错误 (GH 7399)

  • 在切片级别中使用步长进行 MultiIndex 切片时的错误 (GH 7400)

  • DatetimeIndex 中负索引器未正确切片的问题 (GH 7408)

  • MultiIndexNaT 未正确表示的问题 (GH 7406, GH 7409)。

  • convert_objects 中将布尔对象转换为 nan 的错误 (GH 7416)。

  • quantile 中的错误忽略了 axis 关键字参数 (GH 7306)

  • nanops._maybe_null_out 在处理复数时出现错误 (GH 7353)

  • axis==0 时,几个 nanops 函数在一维 nan 数组中存在错误 (GH 7354)

  • nanops.nanmedianaxis==None 时不工作的问题 (GH 7352)

  • nanops._has_infs 在处理多种数据类型时失效的错误 (GH 7357)

  • StataReader.data 中读取一个无观测值的 dta 文件失败的错误 (GH 7369)

  • 在读取包含固定宽度字符串的 Stata 13 (117) 文件时,StataReader 中的错误 (GH 7360)

  • StataWriter 中忽略编码的错误 (GH 7286)

  • DatetimeIndex 比较中的错误未正确处理 NaT (GH 7529)

  • 在传递带有 tzinfo 的输入到某些偏移 applyrollforwardrollback 时,tzinfo 被重置或引发 ValueError 的错误 (GH 7465)

  • DatetimeIndex.to_periodPeriodIndex.asobjectPeriodIndex.to_timestamp 中的错误不会保留 name (GH 7485)

  • DatetimeIndex.to_periodPeriodIndex.to_timestamp 处理 NaT 不正确 (GH 7228)

  • offsets.apply, rollforwardrollback 中的错误可能会返回正常的 datetime (GH 7502)

  • 当目标包含 NaT 时,resample 中的错误会引发 ValueError (GH 7227)

  • Timestamp.tz_localize 中的错误会重置 nanosecond 信息 (GH 7534)

  • DatetimeIndex.asobject 包含 NaT 时引发 ValueError 的错误 (GH 7539)

  • Timestamp.__new__ 中的错误未正确保留纳秒 (GH 7610)

  • Index.astype(float) 中的错误,它将返回一个 object 数据类型的 Index (GH 7464)。

  • DataFrame.reset_index 中的错误丢失了 tz (GH 3950)

  • freqNone 时,DatetimeIndex.freqstr 中的错误引发 AttributeError (GH 7606)

  • TimeGrouper 创建的 GroupBy.size 中的错误引发 AttributeError (GH 7453)

  • 单列条形图中的错误未对齐 (GH 7498)。

  • 带有 tz-aware 时间序列的区域图中的错误引发 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=Falsecase=False 时不能正确地进行不区分大小写的匹配 (GH 7505)

  • expanding_covexpanding_corrrolling_covrolling_corr 中两个参数索引不匹配的错误 (GH 7512)

  • to_sql 中将布尔列作为文本列的错误 (GH 7678)

  • 分组的 hist 中的错误未正确处理 rot kw 和 sharex kw (GH 7234)

  • loc 中的错误,在使用 object 类型索引进行回退整数索引时 (GH 7496)

  • 在传递 Series 对象时,PeriodIndex 构造函数中的错误(回归)(GH 7701)。

贡献者#

共有 46 人为此版本贡献了补丁。名字后面带有“+”的人首次贡献了补丁。

  • Andrew Rosenfeld

  • Andy Hayden

  • Benjamin Adams +

  • Benjamin M. Gross +

  • Brian Quistorff +

  • Brian Wignall +

  • DSM

  • Daniel Waeber

  • David Bew +

  • David Stephens

  • Jacob Schaer

  • Jan Schulz

  • John David Reaver

  • John W. O’Brien

  • Joris Van den Bossche

  • Julien Danjou +

  • K.-Michael Aye

  • Kevin Sheppard

  • Kyle Meyer

  • Matt Wittmann

  • Matthew Brett +

  • Michael Mueller +

  • Mortada Mehyar

  • Phillip Cloud

  • Rob Levy +

  • Schaer, Jacob C +

  • Stephan Hoyer

  • Thomas Kluyver

  • Todd Jennings

  • Tom Augspurger

  • TomAugspurger

  • bwignall

  • clham

  • dsm054 +

  • helger +

  • immerrr

  • jaimefrio

  • jreback

  • lexual

  • onesandzeroes

  • rockg

  • sanguineturtle +

  • seth-p +

  • sinhrks

  • unknown

  • yelite +