版本 0.16.2(2015 年 6 月 12 日)# 这是 0.16.1 的一个小错误修复版本,包括大量错误修复以及一些新功能(pipe()方法)、增强功能和性能改进。 我们建议所有用户升级到此版本。 亮点包括: 新pipe方法请看这里 有关如何将numba与pandas一起使用的文档,请参阅此处 v0.16.2 中的新增功能 新功能 管道 其他增强功能 API变更 性能改进 Bug修复 贡献者 新功能# 管道# 我们引入了一种新方法DataFrame.pipe()。正如名称所暗示的,pipe 应该用于通过函数调用链来传输数据。目标是避免混淆嵌套函数调用,例如 # df is a DataFrame # f, g, and h are functions that take and return DataFrames f(g(h(df), arg1=1), arg2=2, arg3=3) # noqa F821 逻辑从内向外流动,函数名称与其关键字参数分开。这可以重写为 ( df.pipe(h) # noqa F821 .pipe(g, arg1=1) # noqa F821 .pipe(f, arg2=2, arg3=3) # noqa F821 ) 现在代码和逻辑都是从上到下流动的。关键字参数位于其函数旁边。总体而言,代码更具可读性。 在上面的示例中,函数f、g和h每个函数都期望 DataFrame 作为第一个位置参数。当您希望应用的函数在第一个参数以外的任何地方获取其数据时,请传递一个元组来指示 DataFrame 应流向的位置。例如:(function, keyword) In [1]: import statsmodels.formula.api as sm In [2]: bb = pd.read_csv("data/baseball.csv", index_col="id") # sm.ols takes (formula, data) In [3]: ( ...: bb.query("h > 0") ...: .assign(ln_h=lambda df: np.log(df.h)) ...: .pipe((sm.ols, "data"), "hr ~ ln_h + year + g + C(lg)") ...: .fit() ...: .summary() ...: ) ...: Out[3]: <class 'statsmodels.iolib.summary.Summary'> """ OLS Regression Results ============================================================================== Dep. Variable: hr R-squared: 0.685 Model: OLS Adj. R-squared: 0.665 Method: Least Squares F-statistic: 34.28 Date: Tue, 22 Nov 2022 Prob (F-statistic): 3.48e-15 Time: 05:35:23 Log-Likelihood: -205.92 No. Observations: 68 AIC: 421.8 Df Residuals: 63 BIC: 432.9 Df Model: 4 Covariance Type: nonrobust =============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------- Intercept -8484.7720 4664.146 -1.819 0.074 -1.78e+04 835.780 C(lg)[T.NL] -2.2736 1.325 -1.716 0.091 -4.922 0.375 ln_h -1.3542 0.875 -1.547 0.127 -3.103 0.395 year 4.2277 2.324 1.819 0.074 -0.417 8.872 g 0.1841 0.029 6.258 0.000 0.125 0.243 ============================================================================== Omnibus: 10.875 Durbin-Watson: 1.999 Prob(Omnibus): 0.004 Jarque-Bera (JB): 17.298 Skew: 0.537 Prob(JB): 0.000175 Kurtosis: 5.225 Cond. No. 1.49e+07 ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. [2] The condition number is large, 1.49e+07. This might indicate that there are strong multicollinearity or other numerical problems. """ Pipe 方法的灵感来自于 UNIX 管道,它通过进程传输文本。最近dplyr和magrittr(%>%)为R引入了流行的管道运算符。 请参阅文档了解更多信息。 (GH 10129) 其他增强功能# 添加rsplit到索引/系列 StringMethods ( GH 10303 ) DataFrame删除了IPython 笔记本中 HTML 表示的硬编码大小限制,并将其留给 IPython 本身(仅适用于 IPython v3.0 或更高版本)。这消除了大框架笔记本中出现的重复滚动条(GH 10231)。 请注意,笔记本电脑具有限制显示非常大的帧的功能(通过单击输出的左侧)。您还可以使用 pandas 选项配置 DataFrame 的显示方式,请参阅此处。toggle output scrolling axisnow的参数DataFrame.quantile也接受index和column。 ( GH 9543 ) API 更改# Holiday现在,NotImplementedError如果在构造函数中同时使用offset和 ,则会引发observance错误,而不是返回不正确的结果(GH 10217)。 性能改进# 使用( GH 7754 )提高Series.resample性能dtype=datetime64[ns] 提高性能( str.splitGH 10081 )expand=True Bug修复# 当给出Series.hist一行时,错误会引发错误( GH 10214)Series HDFStore.select修改传递的列列表的错误( GH 7212) Python 3 中的Categoricalrepr中display.width的错误( GH 10087)None to_json某些方向的错误和CategoricalIndex会出现段错误(GH 10317) 某些 nan 函数没有一致的返回数据类型的错误(GH 10251) DataFrame.quantile检查是否传递了有效轴时出现错误( GH 9543) groupby.apply聚合中不保留类别的错误Categorical(GH 10138) 如果是小数,则忽略to_csv其中的错误(GH 10209)date_formatdatetime DataFrame.to_json混合数据类型的错误( GH 10289) 合并时缓存更新中的错误 ( GH 10264 ) 整数数据类型可能溢出的错误mean()(GH 10172) Panel.from_dict指定时不设置 dtype 的错误( GH 10058 ) 传递类似数组时会Index.union引发错误。 AttributeError(GH 10149) Timestamp's' microsecond、quarter、dayofyear和属性返回类型中的错误,week而不是内置的。 (GH 10050)daysinmonthnp.intint 访问,属性时会NaT引发错误。 (GH 10096)AttributeErrordaysinmonthdayofweek 使用该设置时索引 repr 中存在错误max_seq_items=None(GH 10182)。 dateutil在各种平台上获取时区数据时出现错误( GH 9059、GH 8639、GH 9663、GH 10121) 显示混合频率的日期时间时出现错误;以正确的精度显示“ms”日期时间。 (GH 10170) setitem类型提升应用于整个块的错误( GH 10280) Series算术方法中的错误可能会错误地保存名称( GH 10068) 对多个键进行分组时出现错误GroupBy.get_group,其中之一是分类键。 (GH 10132) timedelta 算术后出现错误DatetimeIndex且TimedeltaIndex名称丢失(GH 9926) 嵌套DataFrame结构中的错误(GH 10160)dictdatetime64 使用钥匙Series的构造错误(GH 9456)dictdatetime64 错误Series.plot(label="LABEL")设置标签不正确(GH 10119) plot不默认 matplotlib 设置的错误axes.grid(GH 9792) 导致字符串包含指数但没有小数点的错误,而int不是解析器解析的float小数点(GH 9565)engine='python'read_csv 指定时Series.align重置中的错误( GH 10067)namefill_value read_csv导致未在空 DataFrame 上设置索引名称的错误( GH 10184) SparseSeries.abs重置中的错误name(GH 10241) 切片中的错误TimedeltaIndex可能会重置频率(GH 10292) 当组密钥包含(GH 6992)时会GroupBy.get_group引发错误ValueErrorNaT 构造函数中的错误SparseSeries忽略输入数据名称(GH 10258) 如果底层数据类型是浮点,则删除类别时Categorical.remove_categories会导致错误( GH 10156)ValueErrorNaN infer_freq 推断 to_offset 不支持的时间规则 (WOM-5XXX) 的错误 ( GH 9425 ) where 表格式中的错误DataFrame.to_hdf()会针对无效(非字符串)列名称引发看似不相关的错误。现在这是明确禁止的。 ( GH 9057 ) 处理空屏蔽的错误DataFrame(GH 10126)。 MySQL 接口无法处理数字表/列名称的错误 ( GH 10255 ) 错误返回了除(GH 10245)之外的其他时间分辨率的read_csv数组date_parserdatetime64[ns] Panel.apply当结果 ndim=0 时出现错误( GH 10332) read_hdf无法通过的错误auto_close(GH 9327)。 read_hdf无法使用开放商店的错误( GH 10330)。 添加empty时出现错误DataFrames,现在会导致一个DataFrame空.equals(DataFrameGH 10181)。 错误to_hdf并HDFStore没有检查 complib 选择是否有效(GH 4582,GH 8874)。 贡献者# 共有 34 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。 安德鲁·罗森菲尔德 阿特米·科尔钦斯基 伯纳德·威勒斯 + 克里斯特·范德梅伦 克里斯蒂安·休顿 + 康斯坦丁·格伦·埃文斯 + 丹尼尔·朱利叶斯·拉西曼 + 埃文·赖特 弗朗西斯科·布伦杜 + 加埃坦·德·门滕 + 杰克·范德·普拉斯 詹姆斯·希伯特 + 杰夫·雷巴克 乔里斯·范登博什 贾斯汀·莱彻 + 陈嘉禾 + 凯文·谢泼德 莫尔塔达·梅哈尔 莫顿·福克斯 + 罗宾·威尔逊 + 辛赫克斯 史蒂芬·霍耶 托马斯·格兰杰 汤姆·阿贾米安 汤姆·奥格斯普格 吉树·巴斯克斯·巴埃萨 金英根 奥斯汀+ 贝赫扎德·努里 杰雷巴克 性的 雷克恰帕西拉 + scls19fr 辛赫克斯