版本 0.17.1(2015 年 11 月 21 日)#

笔记

我们很自豪地宣布pandas已成为( NumFOCUS 组织)的赞助项目。这将有助于确保pandas作为世界级开源项目的成功开发。

这是 0.17.0 的一个小错误修复版本,包含大量错误修复以及一些新功能、增强功能和性能改进。我们建议所有用户升级到此版本。

亮点包括:

  • 支持条件 HTML 格式,请参阅此处

  • 在 csv 读取器和其他操作上释放 GIL,请参阅此处

  • 修复了 0.16.2 中的回归DataFrame.drop_duplicates,导致整数值结果不正确 ( GH 11376 )

新功能

条件 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 ) -DataFrameSeries函数.to_csv().to_html()现在.to_latex()可以处理以波形符开头的路径(例如~/Documents/)( GH 11438 )

  • DataFrame现在使用 a 的字段namedtuple作为列,如果未提供列(GH 11181

  • DataFrame.itertuples()现在如果可能的话返回namedtuple对象。 (GH 11269GH 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 11411datetime64[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 不能包含时性能改进NaNGH 11159

  • DatetimeIndex.year在大多数日期时间字段操作(例如,Series.dt.year)、规范化以及与 和 之间的转换PeriodDatetimeIndex.to_period释放GIL PeriodIndex.to_timestampGH 11263

  • 在一些滚动算法上释放 GIL:rolling_median, rolling_mean, rolling_max, rolling_min, rolling_var, rolling_kurt, rolling_skew( GH 11450 )

  • 读取和解析 中的文本文件时释放 GIL read_csvread_table( GH 11272 )

  • 改进的性能rolling_median( GH 11450 )

  • 改进的性能to_excel( GH 11352 )

  • 类别再现中的性能错误Categorical,在切割字符串以进行显示之前渲染字符串(GH 11305

  • 性能改进Categorical.remove_unused_categories,(GH 11643)。

  • Series改进了没有数据的构造函数的性能DatetimeIndexGH 11433

  • shift改进了、cumprod和与 groupby的性能cumsumGH 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 11374na_values=<a scalar>

  • .to_latex()当索引有名称时,输出中的错误会损坏( GH 10660

  • HDFStore.append编码长度超过最大未编码长度的字符串出现错误( GH 11234

  • 合并数据类型时出现错误(GH 11405datetime64[ns, tz]

  • HDFStore.select与 where 子句中的 numpy 标量进行比较时出现错误( GH 11283

  • DataFrame.ix使用MultiIndex 索引器时出现错误( GH 11372 )

  • 端点不明确的错误date_rangeGH 11626

  • 防止向访问器添加新属性.str.dt.cat。无法检索这样的值,因此设置它时会出错。 (GH 10673

  • tz 转换中的错误,时间和.dt访问器不明确(GH 11295

  • 使用不明确时间索引时输出格式中的错误(GH 11619

  • 系列与列表之类的比较中的错误(GH 11339

  • 错误DataFrame.replace与 a和不兼容的 to_replace (GH 11326GH 11153datetime64[ns, tz]

  • 未确定a 中的isnull位置为 null中的错误( GH 11206numpy.datetime64('NaT')numpy.array

  • 使用混合整数索引的类似列表的索引中的错误(GH 11320

  • 当索引为dtypepivot_table时出现错误(GH 10993margins=TrueCategorical

  • 错误DataFrame.plot无法使用十六进制字符串颜色(GH 10299

  • 从 0.16.2 开始回归DataFrame.drop_duplicates,导致整数值结果不正确 ( GH 11376 )

  • pd.eval列表错误中的一元操作错误( GH 11235

  • 零长度数组的错误squeeze()GH 11230GH 8999

  • describe()删除分层索引的列名称时出现错误( GH 11517

  • 未在方法上DataFrame.pct_change()传播axis关键字的错误( GH 11150.fillna

  • .to_csv()当整数和字符串列名混合作为参数传递时出现错误columnsGH 11637

  • 使用range, ( GH 11652 )进行索引时出现错误

  • 设置列时 numpy 标量的推断和保留 dtype 中的错误(GH 11638

  • to_sql使用 unicode 列名时出现 UnicodeEncodeError 错误( GH 11431)。

  • 修复( GH 11529xticks )设置中的回归。plot

  • holiday.dates遵守规则无法应用于假期和文档增强的错误( GH 11477GH 11533

  • Axes修复使用普通实例而不是SubplotAxesGH 11520GH 11556)时的绘图问题。

  • 当(GH 7124)时,错误DataFrame.to_latex()会产生额外的规则header=False

  • df.groupby(...).apply(func)当 func 返回Series包含新的 datetimelike 列时出现的错误( GH 11324 )

  • pandas.json当要加载的文件很大时出现错误( GH 11344

  • 重复列中的错误to_excelGH 11007GH 10982GH 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_formatGH 7791

  • DataFrame.join()生成错误(how='right'GH 11519TypeError

  • Series.quantile空列表结果中的错误Indexobjectdtype ( GH 11588 )

  • pd.merge结果为空Int64Index而不是Index(dtype=object)合并结果为空时的错误( GH 11588

  • Categorical.remove_unused_categories具有值时出现错误NaNGH 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

  • 艾米丽多尔森 +

  • 希罗诺+

  • 性的

  • 呜呜呜 +

  • 罗格

  • 沉默类星体 +

  • 辛赫克斯

  • 太古+