版本 0.17.1(2015 年 11 月 21 日)# 笔记 我们很自豪地宣布pandas已成为( NumFOCUS 组织)的赞助项目。这将有助于确保pandas作为世界级开源项目的成功开发。 这是 0.17.0 的一个小错误修复版本,包含大量错误修复以及一些新功能、增强功能和性能改进。我们建议所有用户升级到此版本。 亮点包括: 支持条件 HTML 格式,请参阅此处 在 csv 读取器和其他操作上释放 GIL,请参阅此处 修复了 0.16.2 中的回归DataFrame.drop_duplicates,导致整数值结果不正确 ( GH 11376 ) v0.17.1 中的新增功能 新功能 条件 HTML 格式 增强功能 API变更 弃用 性能改进 Bug修复 贡献者 新功能# 条件 HTML 格式# 警告 这是一项新功能,正在积极开发中。我们将在未来的版本中添加功能并可能做出重大更改。欢迎在GH 11610中提供反馈 我们添加了对条件 HTML 格式的实验性支持:基于数据的 DataFrame 的视觉样式。样式是通过 HTML 和 CSS 完成的。使用 , 属性访问样式器类,该属性是附加数据pandas.DataFrame.style的实例。Styler 这是一个简单的例子: In [1]: np.random.seed(123) In [2]: df = pd.DataFrame(np.random.randn(10, 5), columns=list("abcde")) In [3]: html = df.style.background_gradient(cmap="viridis", low=0.5) 我们可以渲染 HTML 以获得下表。 A 乙 C d e 0 -1.085631 0.997345 0.282978 -1.506295 -0.5786 1 1.651437 -2.426679 -0.428913 1.265936 -0.86674 2 -0.678886 -0.094709 1.49139 -0.638902 -0.443982 3 -0.434351 2.20593 2.186786 1.004054 0.386186 4 0.737369 1.490732 -0.935834 1.175829 -1.253881 5 -0.637752 0.907105 -1.428681 -0.140069 -0.861755 6 -0.255619 -2.798589 -1.771533 -0.699877 0.927462 7 -0.173636 0.002846 0.688223 -0.879536 0.283627 8 -0.805367 -1.727669 -0.3909 0.573806 0.338589 9 -0.01183 2.392365 0.412912 0.978736 2.238143 Styler与 Jupyter Notebook 交互良好。请参阅文档了解更多信息。 增强功能# DatetimeIndexastype(str)现在支持使用(GH 10442)转换为字符串 支持( GH 7615 )compression中的 (gzip/bz2)pandas.DataFrame.to_csv() pd.read_*函数现在还可以接受pathlib.Path, 或py:py._path.local.LocalPath 对象作为参数filepath_or_buffer。 ( GH 11033 ) -DataFrame和Series函数.to_csv(),.to_html()现在.to_latex()可以处理以波形符开头的路径(例如~/Documents/)( GH 11438 ) DataFrame现在使用 a 的字段namedtuple作为列,如果未提供列(GH 11181) DataFrame.itertuples()现在如果可能的话返回namedtuple对象。 (GH 11269,GH 11625) 添加axvlines_kwds到平行坐标图(GH 10709) .info()提供.memory_usage()对内存消耗进行深度自省的选项。请注意,计算成本可能很高,因此是一个可选参数。 (GH 11595) In [4]: df = pd.DataFrame({"A": ["foo"] * 1000}) # noqa: F821 In [5]: df["B"] = df["A"].astype("category") # shows the '+' as we have object dtypes In [6]: df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 1000 entries, 0 to 999 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 A 1000 non-null object 1 B 1000 non-null category dtypes: category(1), object(1) memory usage: 9.0+ KB # we have an accurate memory assessment (but can be expensive to compute this) In [7]: df.info(memory_usage="deep") <class 'pandas.core.frame.DataFrame'> RangeIndex: 1000 entries, 0 to 999 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 A 1000 non-null object 1 B 1000 non-null category dtypes: category(1), object(1) memory usage: 59.9 KB Index现在有一个fillna方法(GH 10089) In [8]: pd.Index([1, np.nan, 3]).fillna(2) Out[8]: Index([1.0, 2.0, 3.0], dtype='float64') 如果类别属于该类型,则系列类型category现在可以.str.<...>使用访问器方法/属性。 .dt.<...>(GH 10661) In [9]: s = pd.Series(list("aabb")).astype("category") In [10]: s Out[10]: 0 a 1 a 2 b 3 b Length: 4, dtype: category Categories (2, object): ['a', 'b'] In [11]: s.str.contains("a") Out[11]: 0 True 1 True 2 False 3 False Length: 4, dtype: bool In [12]: date = pd.Series(pd.date_range("1/1/2015", periods=5)).astype("category") In [13]: date Out[13]: 0 2015-01-01 1 2015-01-02 2 2015-01-03 3 2015-01-04 4 2015-01-05 Length: 5, dtype: category Categories (5, datetime64[ns]): [2015-01-01, 2015-01-02, 2015-01-03, 2015-01-04, 2015-01-05] In [14]: date.dt.day Out[14]: 0 1 1 2 2 3 3 4 4 5 Length: 5, dtype: int32 pivot_table现在有一个margins_name参数,因此您可以使用默认“全部”以外的其他内容(GH 3335) 使用固定的 HDF5 存储实现数据类型的导出( GH 11411)datetime64[ns, tz] 漂亮的打印集(例如在 DataFrame 单元格中)现在使用集文字语法 ( ) 而不是旧版 Python 语法 ( ) ( GH 11215 ){x, y}set([x, y]) pandas.io.gbq.to_gbq()改进流式插入失败时的错误消息( GH 11285 ) 以及 DataFrame 与目标表的架构不匹配时的错误消息 ( GH 11359 ) API 更改# NotImplementedError针对Index.shift不支持的索引类型提出 ( GH 8038 ) min和dtyped 系列max的减少现在导致和不(GH 11245)。datetime64timedelta64NaTnan 使用空键建立索引将引发 a TypeError,而不是ValueError( GH 11356 ) Series.ptp现在默认忽略缺失值(GH 11163) 弃用# pandas.io.ga实现支持的模块已google-analytics弃用,并将在未来版本中删除(GH 11308) 弃用engine关键字 in .to_csv(),该关键字将在未来版本中删除(GH 11274) 性能改进# 在索引上排序之前检查单调性(GH 11080) Series.dropna当其 dtype 不能包含时性能改进NaN(GH 11159) DatetimeIndex.year在大多数日期时间字段操作(例如,Series.dt.year)、规范化以及与 和 之间的转换Period上DatetimeIndex.to_period释放GIL PeriodIndex.to_timestamp(GH 11263) 在一些滚动算法上释放 GIL:rolling_median, rolling_mean, rolling_max, rolling_min, rolling_var, rolling_kurt, rolling_skew( GH 11450 ) 读取和解析 中的文本文件时释放 GIL read_csv,read_table( GH 11272 ) 改进的性能rolling_median( GH 11450 ) 改进的性能to_excel( GH 11352 ) 类别再现中的性能错误Categorical,在切割字符串以进行显示之前渲染字符串(GH 11305) 性能改进Categorical.remove_unused_categories,(GH 11643)。 Series改进了没有数据的构造函数的性能DatetimeIndex(GH 11433) shift改进了、cumprod和与 groupby的性能cumsum(GH 4095) Bug修复# SparseArray.__iter__()PendingDeprecationWarning现在在 Python 3.5 中不会导致( GH 11622) 从 0.16.2 回归长浮点数/nan 的输出格式,在 ( GH 11302 )中恢复 Series.sort_index()现在可以正确处理该inplace选项(GH 11402) PyPi读取浮点数的 csv 时,构建中分布不正确的 .c 文件会显示异常(GH 11374)na_values=<a scalar> .to_latex()当索引有名称时,输出中的错误会损坏( GH 10660) HDFStore.append编码长度超过最大未编码长度的字符串出现错误( GH 11234) 合并数据类型时出现错误(GH 11405)datetime64[ns, tz] HDFStore.select与 where 子句中的 numpy 标量进行比较时出现错误( GH 11283) DataFrame.ix使用MultiIndex 索引器时出现错误( GH 11372 ) 端点不明确的错误date_range(GH 11626) 防止向访问器添加新属性.str,.dt和.cat。无法检索这样的值,因此设置它时会出错。 (GH 10673) tz 转换中的错误,时间和.dt访问器不明确(GH 11295) 使用不明确时间索引时输出格式中的错误(GH 11619) 系列与列表之类的比较中的错误(GH 11339) 错误DataFrame.replace与 a和不兼容的 to_replace (GH 11326,GH 11153)datetime64[ns, tz] 未确定a 中的isnull位置为 null中的错误( GH 11206)numpy.datetime64('NaT')numpy.array 使用混合整数索引的类似列表的索引中的错误(GH 11320) 当索引为dtypepivot_table时出现错误(GH 10993)margins=TrueCategorical 错误DataFrame.plot无法使用十六进制字符串颜色(GH 10299) 从 0.16.2 开始回归DataFrame.drop_duplicates,导致整数值结果不正确 ( GH 11376 ) pd.eval列表错误中的一元操作错误( GH 11235) 零长度数组的错误squeeze()(GH 11230,GH 8999) describe()删除分层索引的列名称时出现错误( GH 11517) 未在方法上DataFrame.pct_change()传播axis关键字的错误( GH 11150).fillna .to_csv()当整数和字符串列名混合作为参数传递时出现错误columns(GH 11637) 使用range, ( GH 11652 )进行索引时出现错误 设置列时 numpy 标量的推断和保留 dtype 中的错误(GH 11638) to_sql使用 unicode 列名时出现 UnicodeEncodeError 错误( GH 11431)。 修复( GH 11529xticks )设置中的回归。plot holiday.dates遵守规则无法应用于假期和文档增强的错误( GH 11477、GH 11533) Axes修复使用普通实例而不是SubplotAxes(GH 11520、GH 11556)时的绘图问题。 当(GH 7124)时,错误DataFrame.to_latex()会产生额外的规则header=False df.groupby(...).apply(func)当 func 返回Series包含新的 datetimelike 列时出现的错误( GH 11324 ) pandas.json当要加载的文件很大时出现错误( GH 11344) 重复列中的错误to_excel(GH 11007、GH 10982、GH 10970) 修复了阻止构建空系列 dtype 的错误(GH 11245)。datetime64[ns, tz] read_excel包含整数的 MultiIndex存在错误( GH 11317) to_excelopenpyxl 2.2+ 和合并中的错误( GH 11408) 错误DataFrame.to_dict()产生一个np.datetime64对象,而不是Timestamp当数据中仅存在日期时间时(GH 11327) DataFrame.corr()当使用布尔列和非布尔列计算 DataFrame 的 Kendall 相关性时,错误会引发异常( GH 11560) inlineFreeBSD 10+ 上由 C 函数引起的链接时错误中的 Bug (带有clang)( GH 10510 ) DataFrame.to_csv传递格式化参数时出现错误MultiIndexes,包括date_format(GH 7791) DataFrame.join()生成错误(how='right'GH 11519)TypeError Series.quantile空列表结果中的错误Index与objectdtype ( GH 11588 ) pd.merge结果为空Int64Index而不是Index(dtype=object)合并结果为空时的错误( GH 11588) Categorical.remove_unused_categories具有值时出现错误NaN(GH 11599) 错误DataFrame.to_sparse()丢失多索引的列名称(GH 11600) DataFrame.round()非唯一列索引的错误会产生致命的 Python 错误( GH 11611) DataFrame.round()作为decimals非唯一索引系列产生额外列的错误( GH 11618) 贡献者# 共有 63 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。 亚历山大·德罗兹德 + 亚历克斯·蔡斯 + 安东尼奥·帕特尼奥 布伦巴恩 + 布莱恩·J·麦奎克 + 克里斯 克里斯蒂安·贝伦特 + 克里斯蒂安·佩雷斯 + 科迪·皮索尔 + 数据和代码专家在数据上进行代码实验 驾驶+ 埃文·赖特 纪尧姆·盖伊 哈米德·萨尔乔吉内贾德 + 伊比利斯·林 + 杰克·范德·普拉斯 扬·舒尔茨 让-马蒂厄·德舍内 + 杰夫·雷巴克 吉米·卡林 + 乔里斯·范登博什 K.-迈克尔·埃伊 陈嘉禾 Loïc Séguin-C + 罗毅诚+ 马格努斯·朱德 + 曼努埃尔·莱昂哈特 + 马修·吉尔伯特 马克西米利安·鲁斯 迈克尔+ 尼古拉斯·斯塔尔 + 尼古拉斯·博诺特 + 飞天教+ 佩特拉·冲 + 菲尔·沙夫 + 菲利普A+ 罗布·德卡瓦略 + 罗曼·霍门科 + 雷米·莱昂 + 塞巴斯蒂安银行 + 辛赫克斯 史蒂芬·霍耶 蒂埃里·莫伊桑 汤姆·奥格斯普格 燕尾服1+ 瓦伦+ 维兰德·霍夫曼 + 冬花 约阿夫·拉姆 + 金英根 泽克+ 阿杰克 阿祖兰斯基+ 贝赫扎德·努里 细胞4 艾米丽多尔森 + 希罗诺+ 性的 呜呜呜 + 罗格 沉默类星体 + 辛赫克斯 太古+