版本0.15.2(2014年12月12日)#

这是0.15.1版的次要版本,包括大量错误修复以及几个新功能、增强功能和性能改进。需要对API进行少量更改来修复现有的错误。我们建议所有用户升级到此版本。

API更改#

  • 编入索引 MultiIndex Beyond lex-Sort Depth现在受支持,尽管按词法排序的索引将具有更好的性能。 (GH2646 )

    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]
    
  • 系列中唯一的错误: category Dtype,它返回所有类别,而不管它们是否被使用(请参见 GH8559 以供讨论)。之前的行为是返回所有类别:

    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 [9]: cat = pd.Categorical(['a', 'b', 'a'], categories=['a', 'b', 'c'])
    
    In [10]: cat.unique()
    Out[10]: 
    ['a', 'b']
    Categories (3, object): ['a', 'b', 'c']
    
  • Series.allSeries.any 现在支持 levelskipna 参数。 Series.allSeries.anyIndex.all ,以及 Index.any 不再支持 outkeepdims 参数,这些参数的存在是为了与ndarray兼容。各种索引类型不再支持 allany 聚合函数,现在将引发 TypeError 。 (GH8302 )。

  • Allow equality comparisons of Series with a categorical dtype and object dtype; previously these would raise TypeError (GH8938)

  • 窃听 NDFrame :冲突的属性/列名现在在获取和设置之间行为一致。以前,当一个列和一个名为 y 曾经存在过, data.y 将返回该属性,而 data.y = z 将更新该列 (GH8994 )

    In [11]: data = pd.DataFrame({'x': [1, 2, 3]})
    
    In [12]: data.y = 2
    
    In [13]: data['y'] = [2, 4, 6]
    
    In [14]: data
    Out[14]: 
       x  y
    0  1  2
    1  2  4
    2  3  6
    
    [3 rows x 2 columns]
    
    # this assignment was inconsistent
    In [15]: data.y = 5
    

    旧行为:

    In [6]: data.y
    Out[6]: 2
    
    In [7]: data['y'].values
    Out[7]: array([5, 5, 5])
    

    新行为:

    In [16]: data.y
    Out[16]: 5
    
    In [17]: data['y'].values
    Out[17]: array([2, 4, 6])
    
  • Timestamp('now') 现在相当于 Timestamp.now() 因为它返回本地时间,而不是UTC。另外, Timestamp('today') 现在相当于 Timestamp.today() 而且两人都有 tz 作为一种可能的论点。 (GH9000 )

  • 修复了对基于标签的切片的负步距支持 (GH8753 )

    旧行为:

    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 [18]: s = pd.Series(np.arange(3), ['a', 'b', 'c'])
    
    In [19]: s.loc['c':'a':-1]
    Out[19]: 
    c    2
    b    1
    a    0
    Length: 3, dtype: int64
    

增强#

Categorical 增强功能:

  • 添加了将分类数据导出到Stata的功能 (GH8633 )。看见 here 对于导出到STATA数据文件的分类变量的限制。

  • 添加了标志 order_categoricalsStataReaderread_stata 选择是否对导入的分类数据进行排序 (GH8836 )。看见 here 有关从STATA数据文件导入分类变量的详细信息。

  • 添加了将分类数据导出到HDF5或从HDF5导出分类数据的功能 (GH7621 )。查询的工作方式与对象数组相同。然而, category 以更高效的方式存储数据类型的数据。看见 here 作为一个例子和注意事项,W.r.t.以前的Pandas版本。

  • 添加了对以下各项的支持 searchsorted() 在……上面 Categorical 班级 (GH8420 )。

其他增强功能:

  • 添加了在将DataFrame写入数据库时指定列的SQL类型的功能 (GH8778 )。例如,指定使用SqlalChemy String 键入而不是缺省值 Text 字符串列的类型:

    from sqlalchemy.types import String
    data.to_sql('data_dtype', engine, dtype={'Col_1': String})  # noqa F821
    
  • Series.allSeries.any 现在支持 levelskipna 参数 (GH8302 ):

    In [20]: s = pd.Series([False, True, False], index=[0, 0, 1])
    
    In [21]: s.any(level=0)
    Out[21]: 
    0     True
    1    False
    Length: 2, dtype: bool
    
  • Panel 现在支持 allany 聚合函数。 (GH8302 ):

    >>> 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 班级 (GH5351 )。

  • 添加了Google Analytics (pandas.io.ga) basic documentation (GH8835). See here _.

  • Timedelta 算术回报 NotImplemented 在未知情况下,允许通过自定义类进行扩展 (GH8813 )。

  • Timedelta 现在支持算术 numpy.ndarray 适当数据类型的对象(仅限NumPy 1.8或更高版本) (GH8884 )。

  • 已添加 Timedelta.to_timedelta64() 方法设置为公共API (GH8884 )。

  • 已添加 gbq.generate_bq_schema() 函数添加到GBQ模块 (GH8325 )。

  • Series 现在使用地图对象的方式与生成器相同 (GH8909 )。

  • 将上下文管理器添加到 HDFStore 用于自动关闭 (GH8791 )。

  • to_datetime 获得了 exact 关键字,以允许格式不需要与提供的格式字符串完全匹配(如果其 False )。 exact 默认为 True (这意味着完全匹配仍然是默认设置) (GH8904 )

  • 已添加 axvlines PARALLEL_COLUDIES绘图函数的布尔选项,决定是否打印垂直线,默认为True

  • 添加了读取表页脚到Read_html的功能 (GH8552 )

  • to_sql now infers data types of non-NA values for columns that contain NA values and have dtype object (GH8778).

性能#

  • 当skipprows为READ_CSV中的整数时减少内存使用量 (GH8681 )

  • Performance boost for to_datetime conversions with a passed format=, and the exact=False (GH8904)

错误修复#

  • 系列与的合并中出现错误 category 数据类型,这些数据类型被强制到 object 。 (GH8641 )

  • TIMESTAMP-TIMESTAMP未返回Timedelta类型和具有时区的类DATE操作中的错误 (GH8865 )

  • 生成一致的时区不匹配异常(TZ操作时没有时区或时区不兼容),现在将返回 TypeError 而不是 ValueError (仅限几个边缘情况), (GH8865 )

  • 在使用 pd.Grouper(key=...) 没有标高/轴或仅标高 (GH8795GH8866 )

  • 报告为 TypeError 当在GROUPBY中传递无效/没有参数时 (GH8015 )

  • Bug in packaging pandas with py2app/cx_Freeze (GH8602, GH8831)

  • 窃听 groupby 不包括的签名*args or * *Kwargs (GH8733 )。

  • io.data.Options 现在提高 RemoteDataError 当雅虎没有提供到期日,并且没有从雅虎收到数据时 (GH8761 ), (GH8783 )。

  • 当传递数据类型和名称并且分析的数据是不同的数据类型时,CSV分析中的错误消息不清楚 (GH8833 )

  • 对具有空列表和至少一个布尔索引器的多索引进行切片时出错 (GH8781 )

  • io.data.Options 现在提高 RemoteDataError 当雅虎没有到期日的时候 (GH8761 )。

  • Timedelta 粗人现在可能是麻木的整型和浮点型 (GH8757 )。

  • 修复了几个未解决的错误 Timedelta 算术和比较 (GH8813GH5963GH5436 )。

  • sql_schema 现在生成适当的方言 CREATE TABLE 报表 (GH8697 )

  • slice 字符串方法现在将步骤考虑在内 (GH8754 )

  • 窃听 BlockManager 其中,设置不同类型的值会破坏块完整性 (GH8850 )

  • 窃听 DatetimeIndex 在使用时 time 对象为关键字 (GH8667 )

  • 窃听 merge 哪里 how='left'sort=False 不会保留左侧帧顺序 (GH7331 )

  • 窃听 MultiIndex.reindex 在级别进行重新索引不会对标签重新排序 (GH4088 )

  • Dateutil时区的某些操作中存在错误,表现在Dateutil 2.3中 (GH8639 )

  • 具有固定/本地偏移时区的DatetimeIndex迭代中的回归 (GH8890 )

  • 窃听 to_datetime 在分析纳秒时使用 %f 格式化 (GH8989 )

  • io.data.Options 现在提高 RemoteDataError 当雅虎没有提供到期日,并且没有从雅虎收到数据时 (GH8761 ), (GH8783 )。

  • FIX:字体大小仅在垂直的x轴上设置,或在水平的y轴上设置。 (GH8765 )

  • 修正了在Python3中读取大型CSV文件时被0除的问题 (GH8621 )

  • 使用输出多索引时出现错误 to_html,index=False 这将添加一个额外的列 (GH8452 )

  • 从STATA文件导入的分类变量保留了底层数据中的序号信息 (GH8836 )。

  • Defined .size attribute across NDFrame objects to provide compat with numpy >= 1.9.1; buggy with np.array_split (GH8846)

  • 跳过matplotlib<=1.2的直方图测试 (GH8648 )。

  • BUG在哪里 get_data_google 返回的对象数据类型 (GH3995 )

  • 窃听 DataFrame.stack(..., dropna=False) 当DataFrame的 columns 是一种 MultiIndex 谁的 labels 不引用其所有 levels 。 (GH8844 )

  • Bug in that Option context applied on __enter__ (GH8514)

  • 重采样中的错误,当跨多天进行重采样且最后一个偏移量不是从范围的起点开始计算时,会导致ValueError (GH8683 )

  • BUG在哪里 DataFrame.plot(kind='scatter') 检查数据帧中是否存在np.数组时失败 (GH8852 )

  • 窃听 pd.infer_freq/DataFrame.inferred_freq 当指数包含DST天数时,这妨碍了适当的次日频率推断 (GH8772 )。

  • Bug where index name was still used when plotting a series with use_index=False (GH8558).

  • 当部分(或全部)级别名称为数字时,尝试堆叠多个列时出现错误 (GH8584 )。

  • 窃听 MultiIndex 哪里 __contains__ 如果索引不是按词汇排序或唯一的,则返回错误结果 (GH7724 )

  • 错误CSV:修复跳过行中尾随空白的问题, (GH8679 ), (GH8661 ), (GH8983 )

  • 回归到 Timestamp 不分析UTC的‘Z’区域指示符 (GH8771 )

  • 窃听 StataWriter 无论实际大小如何,都会生成244个字符的写入字符串 (GH8969 )

  • 当DateTime64系列包含NAT时,由Cummin/Cummax引发的Error。 (GH8965 )

  • 如果缺少值,DataReader中的错误将返回对象dtype (GH8980 )

  • 如果启用了共享并且索引是时间序列,则在绘制时出现错误,将在多个轴上显示标签 (GH3964 )。

  • 将单位传递给TimedeltaIndex构造函数两次将单位转换为纳秒的错误。 (GH9011 )。

  • 绘制类句点数组时出现错误 (GH9012 )

贡献者#

共有49人为此次发布贡献了补丁。名字中带有“+”的人第一次贡献了一个补丁。

  • Aaron Staple

  • Angelos Evripiotis +

  • Artemy Kolchinsky

  • Benoit Pointet +

  • Brian Jacobowski +

  • Charalampos Papaloizou +

  • Chris Warth +

  • David Stephens

  • Fabio Zanini +

  • Francesc Via +

  • Henry Kleynhans +

  • Jake VanderPlas +

  • Jan Schulz

  • Jeff Reback

  • Jeff Tratner

  • Joris Van den Bossche

  • Kevin Sheppard

  • Matt Suggit +

  • Matthew Brett

  • Phillip Cloud

  • Rupert Thompson +

  • Scott E Lasley +

  • Stephan Hoyer

  • Stephen Simmons +

  • Sylvain Corlay +

  • Thomas Grainger +

  • Tiago Antao +

  • Tom Augspurger

  • Trent Hauck

  • Victor Chaves +

  • Victor Salgado +

  • Vikram Bhandoh +

  • WANG Aiyong

  • Will Holmgren +

  • behzad nouri

  • broessli +

  • charalampos papaloizou +

  • immerrr

  • jnmclarty

  • jreback

  • mgilbert +

  • onesandzeroes

  • peadarcoyle +

  • rockg

  • seth-p

  • sinhrks

  • unutbu

  • wavedatalab +

  • Åsmund Hjulstad +