手记

最流行的开源数据分析,处理和可视化工具pandas的未来

走向pandas 1.0

  • 推荐使用方法链

不使用方法链的例子:

import pandas

df = pandas.read_csv('data/titanic.csv.gz') 

df = df[df.Age < df.Age.quantile(.99)] 

df['Age'].fillna(df.Age.median(), inplace=True) 

df['Age'] = pandas.cut(df['Age'], 

                      bins=[df.Age.min(), 18, 40, df.Age.max()],

                      labels=['Underage', 'Young', 'Experienced'])

df['Sex'] = df['Sex'].replace({'female': 1, 'male': 0}) 

df = df.pivot_table(values='Sex', columns='Pclass', index='Age', aggfunc='mean') 

df = df.rename_axis('', axis='columns') 

df = df.rename('Class {}'.format, axis='columns') 

df.style.format('{:.2%}')

使用方法链的例子:

import pandas

(pandas.read_csv('data/titanic.csv.gz')

      .query('Age < Age.quantile(.99)')

      .assign(Sex=lambda df: df['Sex'].replace({'female': 1, 'male': 0}),

              Age=lambda df: pandas.cut(df['Age'].fillna(df.Age.median()),

                                        bins=[df.Age.min(), 18, 40, df.Age.max()],

                                        labels=['Underage', 'Young', 'Experienced']))

      .pivot_table(values='Sex', columns='Pclass', index='Age', aggfunc='mean')

      .rename_axis('', axis='columns')

      .rename('Class {}'.format, axis='columns')

      .style.format('{:.2%}'))

他们更喜欢方法链的主要原因是:可读性和性能。不过实际上长方法链的可读性不太好。参考资料:https://tomaugspurger.github.io/method-chaining.html

  • 不建议使用inplace

pandas核心团队不鼓励使用inplace参数,最终会删除inplace。原因如下:

inplace在方法链中不起作用;使用inplace通常不会阻止创建副本;删除inplace选项会降低pandas代码库的复杂性。

就个人而言,我是inplace的粉丝,我喜欢写df.reset_index(inplace = True)而不是df = df.reset_index()。话虽这么说,许多初学者确实在内部感到困惑,并且有一个明确的方法来做大熊猫的事情,所以最终我会对弃用很好。

如果您想了解更多关于如何在熊猫中管理内存的话,我建议您观看Marc演讲的这个5分钟部分。

  • Apache Arrow

Apache Arrow作为pandas的后台。 Arrow是由pandas创始人Wes McKinney在2015年创建的,用于解决pandas DataFrame的许多潜在局限性(以及其他语言中的类似数据结构)。

Arrow的目标是创建一个开放标准,用于表示原生支持复杂数据格式的表格数据,并针对性能进行了高度优化。尽管Arrow的灵感来自pandas,但它的设计目标是成为跨多种语言的数据科学工作的共享计算基础架构。

Arrow最终用作pandas后端可能在pandas 1.0之后,对于pandas最终用户来应该是是透明的。但会带来更好的性能,并且支持在pandas中使用大于内存的数据集。

  • 扩展数组

Extension Arrays允许您创建用于pandas的自定义数据类型。

之前大熊猫团队必须编写大量自定义代码来实现NumPy本身不支持的数据类型(例如分类)。随着Extension Arrays的发布,现在任何人都可以使用的自定义类型的通用接口。

pandas团队已经使用此接口编写支持缺失值的整数数据类型,也称为“NA”或“NaN”值。以前将任何值标记为缺失,则整数列将转换为浮点数。Integer NA”类型将在下一版本(0.24)中提供。

  • 其他弃用

ix访问器已在0.20版本中弃用,请使用loc和iloc。

在版本0.20中也弃用了三维数据的Panel数据结构,而支持具有MultiIndex的DataFrame。

DataFrame主要为缺失值时,SparseDataFrame可能会在即将发布的版本中弃用。 (但是您应该能够将数据存储在常规DataFrame中。)




作者:python作业AI毕业设计
链接:https://www.jianshu.com/p/c7a108e5ed00


0人推荐
随时随地看视频
慕课网APP