版本 0.15.2(2014 年 12 月 12 日)# 这是 0.15.1 的次要版本,包含大量错误修复以及一些新功能、增强功能和性能改进。为了修复现有的错误,需要进行少量的 API 更改。我们建议所有用户升级到此版本。 增强功能 API变更 性能改进 Bug修复 API 更改# MultiIndex现在支持超出词法排序深度的索引,尽管按词法排序的索引将具有更好的性能。 (GH 2646) In [1]: df = pd.DataFrame({'jim':[0, 0, 1, 1], ...: 'joe':['x', 'x', 'z', 'y'], ...: 'jolie':np.random.rand(4)}).set_index(['jim', 'joe']) ...: In [2]: df Out[2]: jolie jim joe 0 x 0.126970 x 0.966718 1 z 0.260476 y 0.897237 [4 rows x 1 columns] In [3]: df.index.lexsort_depth Out[3]: 1 # in prior versions this would raise a KeyError # will now show a PerformanceWarning In [4]: df.loc[(1, 'z')] Out[4]: jolie jim joe 1 z 0.260476 [1 rows x 1 columns] # lexically sorting In [5]: df2 = df.sort_index() In [6]: df2 Out[6]: jolie jim joe 0 x 0.126970 x 0.966718 1 y 0.897237 z 0.260476 [4 rows x 1 columns] In [7]: df2.index.lexsort_depth Out[7]: 2 In [8]: df2.loc[(1,'z')] Out[8]: jolie jim joe 1 z 0.260476 [1 rows x 1 columns] 具有 dtype 的 Series 的唯一错误category,它返回所有类别,无论它们是否“使用”或未使用(有关讨论,请参阅GH 8559 )。以前的行为是返回所有类别: In [3]: cat = pd.Categorical(['a', 'b', 'a'], categories=['a', 'b', 'c']) In [4]: cat Out[4]: [a, b, a] Categories (3, object): [a < b < c] In [5]: cat.unique() Out[5]: array(['a', 'b', 'c'], dtype=object) 现在,仅返回数组中有效出现的类别: In [1]: cat = pd.Categorical(['a', 'b', 'a'], categories=['a', 'b', 'c']) In [2]: cat.unique() Out[2]: ['a', 'b'] Categories (3, object): ['a', 'b', 'c'] Series.all现在Series.any支持level和skipna参数。Series.all、Series.any、Index.all和Index.any不再支持out和keepdims参数,这些参数是为了与 ndarray 兼容而存在的。各种索引类型不再支持all和any聚合函数,现在将提高TypeError. (GH 8302)。 允许将系列与分类数据类型和对象数据类型进行相等比较;以前这些会引发TypeError(GH 8938) 错误NDFrame:冲突的属性/列名称现在在获取和设置之间表现一致。以前,当名为的列和属性都y存在时,data.y将返回该属性,同时会更新该列(GH 8994)data.y = z In [3]: data = pd.DataFrame({'x': [1, 2, 3]}) In [4]: data.y = 2 In [5]: data['y'] = [2, 4, 6] In [6]: data Out[6]: x y 0 1 2 1 2 4 2 3 6 [3 rows x 2 columns] # this assignment was inconsistent In [7]: data.y = 5 旧行为: In [6]: data.y Out[6]: 2 In [7]: data['y'].values Out[7]: array([5, 5, 5]) 新行为: In [8]: data.y Out[8]: 5 In [9]: data['y'].values Out[9]: array([2, 4, 6]) Timestamp('now')现在相当于Timestamp.now()它返回本地时间而不是 UTC。另外,Timestamp('today')现在相当于Timestamp.today()并且两者都有tz一个可能的论点。 (GH 9000) 修复基于标签的切片的负步支持(GH 8753) 旧行为: In [1]: s = pd.Series(np.arange(3), ['a', 'b', 'c']) Out[1]: a 0 b 1 c 2 dtype: int64 In [2]: s.loc['c':'a':-1] Out[2]: c 2 dtype: int64 新行为: In [10]: s = pd.Series(np.arange(3), ['a', 'b', 'c']) In [11]: s.loc['c':'a':-1] Out[11]: c 2 b 1 a 0 Length: 3, dtype: int64 增强功能# Categorical增强功能: 添加了将分类数据导出到 Stata 的功能(GH 8633)。有关导出到 Stata 数据文件的分类变量的限制,请参阅此处。 order_categoricals添加了标志StataReader和read_stata来选择是否对导入的分类数据进行排序 ( GH 8836 )。有关从 Stata 数据文件导入分类变量的更多信息,请参阅此处。 添加了将分类数据导出到 HDF5 (GH 7621) 或从 HDF5 ( GH 7621 ) 导出的功能。查询的工作方式与对象数组相同。然而,categorydtyped 数据以更有效的方式存储。有关 pandas 早期版本的示例和注意事项,请参阅此处。 searchsorted()添加了对课堂Categorical( GH 8420 )的支持。 其他增强功能: 添加了在将 DataFrame 写入数据库时指定列的 SQL 类型的功能 ( GH 8778 )。例如,指定使用 sqlalchemyString类型而不是Text字符串列的默认类型: from sqlalchemy.types import String data.to_sql('data_dtype', engine, dtype={'Col_1': String}) # noqa F821 Series.all现在Series.any支持level和skipna参数(GH 8302): >>> s = pd.Series([False, True, False], index=[0, 0, 1]) >>> s.any(level=0) 0 True 1 False dtype: bool Panel现在支持all和any聚合功能。 (GH 8302): >>> p = pd.Panel(np.random.rand(2, 5, 4) > 0.1) >>> p.all() 0 1 2 3 0 True True True True 1 True False True True 2 True True True True 3 False True False True 4 True True True True utcfromtimestamp()添加了对、fromtimestamp()、 和combine()类Timestamp( GH 5351 )的支持。 添加了 Google Analytics ( pandas.io.ga ) 基本文档 ( GH 8835 )。看这里。 Timedelta算术NotImplemented在未知情况下返回,允许通过自定义类进行扩展(GH 8813)。 Timedelta现在支持使用numpy.ndarray适当 dtype 的对象进行算术(仅限 numpy 1.8 或更高版本)(GH 8884)。 Timedelta.to_timedelta64()向公共 API ( GH 8884 )添加了方法。 gbq.generate_bq_schema()向 gbq 模块添加了功能 ( GH 8325 )。 Series现在使用地图对象的方式与生成器相同(GH 8909)。 添加了上下文管理器HDFStore以自动关闭(GH 8791)。 to_datetime获得一个exact关键字以允许格式不需要与提供的格式字符串完全匹配(如果是False)。exact默认为True(意味着精确匹配仍然是默认值)(GH 8904) 为parallel_coordinates绘图函数添加axvlines布尔选项,确定是否打印垂直线,默认为True 添加了读取表页脚到 read_html 的功能(GH 8552) to_sqlobject现在为包含 NA 值且具有 dtype ( GH 8778 )的列推断非 NA 值的数据类型。 表现# 当skiprows是read_csv中的整数时减少内存使用(GH 8681) to_datetime通过传递的转换性能提升format=,以及exact=False( GH 8904 ) Bug修复# 系列与 dtype 的连接中的错误category被强制为object. ( GH 8641 ) Timestamp-Timestamp 中的错误不返回 Timedelta 类型和带有时区的 datelike-datelike 操作(GH 8865) 使时区不匹配异常(使用 None 或不兼容时区操作的 tz)保持一致,现在将返回TypeError而不是ValueError(仅几个边缘情况),(GH 8865) pd.Grouper(key=...)使用没有级别/轴或仅级别的错误( GH 8795,GH 8866) TypeError当在 groupby 中传递无效/无参数时报告( GH 8015 ) 包装熊猫时的错误py2app/cx_Freeze(GH 8602,GH 8831) groupby不包含 *args 或 **kwargs 的签名中的错误( GH 8733 )。 io.data.Options现在,RemoteDataError当 Yahoo 没有可用的到期日期以及没有从 Yahoo ( GH 8761 )、( GH 8783 ) 收到数据时,会引发此错误。 传递 dtype 和名称时 csv 解析中的错误消息不明确,并且解析的数据是不同的数据类型 ( GH 8833 ) 使用空列表和至少一个布尔索引器对 MultiIndex 进行切片时出现错误 ( GH 8781 ) io.data.Options现在,当雅虎( GH 8761RemoteDataError )没有可用的到期日期时,就会引发此问题。 Timedeltakwargs 现在可能是 numpy 整数和浮点数 ( GH 8757 )。 修复了算术和比较的几个突出错误Timedelta(GH 8813、GH 5963、GH 5436)。 sql_schema现在生成适合方言的语句(GH 8697)CREATE TABLE slice字符串方法现在考虑步骤(GH 8754) BlockManager设置不同类型的值会破坏块完整性的错误( GH 8850) DatetimeIndex使用time对象作为键时出现错误( GH 8667) 错误在merge哪里how='left'并且sort=False不会保留左帧顺序(GH 7331) MultiIndex.reindex在级别重新索引不会重新排序标签的错误( GH 4088) dateutil 时区的某些操作中存在错误,表现为 dateutil 2.3 ( GH 8639 ) 具有固定/本地偏移时区的 DatetimeIndex 迭代中的回归 ( GH 8890 ) to_datetime使用格式解析纳秒时出现错误%f( GH 8989 ) io.data.Options现在,RemoteDataError当 Yahoo 没有可用的到期日期以及没有从 Yahoo ( GH 8761 )、( GH 8783 ) 收到数据时,会引发此错误。 修复:字体大小仅在 x 轴(垂直)或 y 轴(水平)上设置。 (GH 8765) 修复了在 python 3 中读取大 csv 文件时除以 0 的问题(GH 8621) 输出 MultiIndex 时to_html,index=False会添加额外列的错误(GH 8452) 从 Stata 文件导入的分类变量保留基础数据中的序数信息 ( GH 8836 )。 跨对象定义.size属性NDFrame以提供与 numpy >= 1.9.1 的兼容性;越野车np.array_split(GH 8846) 跳过 matplotlib <= 1.2 ( GH 8648 )的直方图测试。 返回对象数据类型的错误get_data_google(GH 3995) 当DataFrame不引用 其所有. ( GH 8844 )DataFrame.stack(..., dropna=False)columnsMultiIndexlabelslevels 应用该选项上下文中的错误__enter__(GH 8514) 重新采样中的错误会在多天重新采样时导致 ValueError 并且最后的偏移量不是从范围的开头计算的(GH 8683) DataFrame.plot(kind='scatter')检查 np.array 是否在 DataFrame 中时失败的错误( GH 8852) 当索引包含 DST 天 ( GH 8772 )时,该错误pd.infer_freq/DataFrame.inferred_freq会阻止正确的次日频率推断。 use_index=False使用( GH 8558 )绘制系列时仍然使用索引名称的错误。 当某些(或全部)级别名称是数字(GH 8584)时尝试堆叠多个列时会出现错误。 如果索引未按词法排序或唯一,则MultiIndexwhere返回错误结果的错误( GH 7724)__contains__ BUG CSV:修复了跳过行中尾随空格的问题,( GH 8679 )、( GH 8661 )、( GH 8983 ) 回归Timestamp不解析 UTC 的“Z”区域指示符(GH 8771) StataWriter生成中的错误会写入 244 个字符的字符串,无论实际大小如何 ( GH 8969 ) 修复了当 datetime64 系列包含 NaT 时 cummin/cummax 引发的 ValueError。 ( GH 8965 ) 如果缺少值,DataReader 中的错误会返回对象 dtype ( GH 8980 ) 如果启用了 sharex 并且索引是时间序列,则绘图中的错误将在多个轴上显示标签(GH 3964)。 将单位传递给 TimedeltaIndex 构造函数的错误应用了纳秒转换两次。 (GH 9011)。 绘制周期数组时出现错误(GH 9012) 贡献者# 共有 49 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。 亚伦·斯台普 安杰洛斯·埃夫里皮奥蒂斯 + 阿特米·科尔钦斯基 伯努瓦·普安泰+ 布莱恩·雅各布夫斯基 + 查拉兰波斯·帕帕洛伊祖 + 克里斯·沃斯 + 大卫·斯蒂芬斯 法比奥·扎尼尼 + 弗朗西斯科·维亚+ 亨利·克莱恩汉斯 + 杰克·范德普拉斯 + 扬·舒尔茨 杰夫·雷巴克 杰夫·特拉特纳 乔里斯·范登博什 凯文·谢泼德 马特·苏吉特 + 马修·布雷特 菲利普·克劳德 鲁珀特·汤普森 + 斯科特·E·拉斯利 + 史蒂芬·霍耶 斯蒂芬·西蒙斯 + 西尔万·科莱 + 托马斯·格兰杰 + 蒂亚戈·安涛 + 汤姆·奥格斯普格 特伦特·豪克 维克多·查维斯 + 维克多·萨尔加多 + 维克拉姆·班多 + 王爱勇 威尔·霍姆格伦 + 贝赫扎德·努里 布罗斯利 + 查拉兰波斯·帕帕洛伊祖 + 沉浸式 克拉蒂 杰雷巴克 米吉尔伯特+ 个和零 皮达科伊尔 + 罗格 塞思-p 辛赫克斯 乌努特布 波形数据实验室+ 奥斯蒙德·胡尔斯塔德 +