版本 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 时区,现在可以像 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')
    

    参见 文档

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

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

  • 所有偏移量 applyrollforwardrollback 现在可以处理 np.datetime64,以前会产生 ApplyTypeError (GH 7452)。

  • PeriodPeriodIndex 的值可以包含 NaT (GH 7485)。

  • 支持对在项目轴(分别为 indexcolumnsitems)上具有非唯一标签的 SeriesDataFramePanel 对象进行 pickle 化 (GH 7370)。

  • 改进了混合空对象的日期时间/时间差推断。解释包含所有空元素的对象索引时,从 0.13.1 版本回归 (GH 7431)。

性能#

  • 改进了涉及 dtype 的数值操作的 dtype 推断,从而提高了 dtypes 的性能:int64timedelta64datetime64 (GH 7223)。

  • 改进了 Series.transform,显著提高了性能 (GH 6496)。

  • 改进了 DataFrame.transform 与 ufuncs 和内置 grouper 函数的结合,显著提高了性能 (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 apiclient 以及 oauth2client API 客户端库,这些库应该比 bq.py 更稳定,因此更可靠。参见 文档。 (GH 6937)。

错误修复#

  • DataFrame.where 在对称形状的 frame 和传入的 DataFrame 类型 'other' 参数时存在错误 (GH 7506)。

  • Panel 索引与 MultiIndex 轴的错误 (GH 7516)。

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

  • 列表的列表和单一类型与混合类型在设置项时存在的错误 (GH 7551:)

  • 非对齐 Series 的时间操作错误 (GH 7500)。

  • 分配不完整 Series 时的 timedelta 推断错误 (GH 7592)。

  • 带有 Series 和整数类型列名的 groupby .nth 错误 (GH 7559)。

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

  • value_countsNaT 未被识别为缺失值 (NaN) 的错误 (GH 7423)。

  • to_timedelta 接受无效单位并错误解释 'm/h' 的错误 (GH 7611, GH 6423)。

  • 折线图在 secondary_y=True 时未设置正确 xlim 的错误 (GH 7459)。

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

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

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

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

  • Panel.apply 在 MultiIndex 作为轴时的错误 (GH 7469)。

  • DatetimeIndex.insert 未保留 nametz 的错误 (GH 7299)。

  • DatetimeIndex.asobject 未保留 name 的错误 (GH 7299)。

  • MultiIndex 切片与日期时间范围(字符串和 Timestamps)的错误 (GH 7429)。

  • Index.minmax 未正确处理 nanNaT 的错误 (GH 7261)。

  • PeriodIndex.min/max 结果为 int 的错误 (GH 7609)。

  • resample 中,如果传入 how,则 fill_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() 中,truthy 值被替换的错误 (GH 7140)。

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

  • isnull()mode.use_inf_as_null == True 时,遇到 inf/-inf 未返回 True 的错误 (GH 7315)。

  • 东半球时区的 inferred_freq 结果为 None 的错误 (GH 7310)。

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

  • .div、整数 dtypes 和除以零的广播错误 (GH 7325)。

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

  • MultiIndex.appendconcatpivot_table 未保留时区的错误 (GH 6606)。

  • .loc 使用单层 MultiIndex(未嵌套)上的索引器列表的错误 (GH 7349)。

  • Series.map 映射具有不同长度元组键的字典时的错误 (GH 7333)。

  • 所有 StringMethods 现在都可以在空 Series 上工作的错误 (GH 7242)。

  • 修复 read_sql 在查询不包含 'select' 时委托给 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)。

  • NaTMultiIndex 中未正确表示的错误 (GH 7406, GH 7409)。

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

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

  • nanops._maybe_null_out 不适用于复数的错误 (GH 7353)。

  • 在 1 维 nan 数组中 axis==0 时,一些 nanops 函数的错误 (GH 7354)。

  • nanops.nanmedianaxis==None 时不工作的错误 (GH 7352)。

  • nanops._has_infs 不适用于许多 dtypes 的错误 (GH 7357)。

  • StataReader.data 读取 0 观察值 dta 失败的错误 (GH 7369)。

  • StataReader 在读取包含固定宽度字符串的 Stata 13 (117) 文件时的错误 (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.applyrollforwardrollback 可能返回普通 datetime 的错误 (GH 7502)。

  • resample 在目标包含 NaT 时引发 ValueError 的错误 (GH 7227)。

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

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

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

  • Index.astype(float) 返回 object dtype Index 的错误 (GH 7464)。

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

  • DatetimeIndex.freqstrfreqNone 时引发 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_containsregex=Falsecase=False 时未能正确进行不区分大小写匹配的错误 (GH 7505)。

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

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

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

  • .locobject dtype 索引上执行回退整数索引的错误 (GH 7496)。

  • PeriodIndex 构造函数在传入 Series 对象时存在的错误(回归)(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 +