版本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.all
和Series.any
现在支持level
和skipna
参数。Series.all
,Series.any
,Index.all
,以及Index.any
不再支持out
和keepdims
参数,这些参数的存在是为了与ndarray兼容。各种索引类型不再支持all
和any
聚合函数,现在将引发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_categoricals
至StataReader
和read_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.all
和Series.any
现在支持level
和skipna
参数 (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
现在支持all
和any
聚合函数。 (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 dtypeobject
(GH8778).
性能#
错误修复#
系列与的合并中出现错误
category
数据类型,这些数据类型被强制到object
。 (GH8641 )TIMESTAMP-TIMESTAMP未返回Timedelta类型和具有时区的类DATE操作中的错误 (GH8865 )
生成一致的时区不匹配异常(TZ操作时没有时区或时区不兼容),现在将返回
TypeError
而不是ValueError
(仅限几个边缘情况), (GH8865 )报告为
TypeError
当在GROUPBY中传递无效/没有参数时 (GH8015 )Bug in packaging pandas with
py2app/cx_Freeze
(GH8602, GH8831)io.data.Options
现在提高RemoteDataError
当雅虎没有提供到期日,并且没有从雅虎收到数据时 (GH8761 ), (GH8783 )。当传递数据类型和名称并且分析的数据是不同的数据类型时,CSV分析中的错误消息不清楚 (GH8833 )
对具有空列表和至少一个布尔索引器的多索引进行切片时出错 (GH8781 )
io.data.Options
现在提高RemoteDataError
当雅虎没有到期日的时候 (GH8761 )。Timedelta
粗人现在可能是麻木的整型和浮点型 (GH8757 )。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 acrossNDFrame
objects to provide compat with numpy >= 1.9.1; buggy withnp.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 )回归到
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 +