大熊猫的功能数据处理

pandas-pl的Python项目详细描述


pandas ply是一个很薄的层,使用pandas可以更轻松地操作数据。特别是,在pandas需要变异、保存中间值或其他笨拙的构造的情况下,它提供了优雅、功能性、可链接的语法。这样,它的目标是使pandas更接近r的dplyr包提供的“数据操作语法”。

例如,以下面的dplyr代码为例:

flights%>%group_by(year,month,day)%>%summarise(arr=mean(arr_delay,na.rm=TRUE),dep=mean(dep_delay,na.rm=TRUE))%>%filter(arr>30&dep>30)

pandas中最常用的表达方式可能是:

grouped_flights=flights.groupby(['year','month','day'])output=pd.DataFrame()output['arr']=grouped_flights.arr_delay.mean()output['dep']=grouped_flights.dep_delay.mean()filtered_output=output[(output.arr>30)&(output.dep>30)]

pandas ply让您改为编写:

(flights.groupby(['year','month','day']).ply_select(arr=X.arr_delay.mean(),dep=X.dep_delay.mean()).ply_where(X.arr>30,X.dep>30))

在我们看来,这段pandas ply代码比原来的pandas代码更干净、更具表现力、更可读、更简洁、更不易出错。

关于pandas ply的解释性说明上面的代码示例:

  • pandas ply的方法(如上面的ply_selectply_where)直接附加到pandas对象,并且可以立即使用,无需任何包装或重定向。它们以前缀ply_开始,以区别于内置的pandas方法。
  • pandas ply的方法是以sql的运算符命名的(并在其后建模)。(但请记住,这些运算符的出现顺序并不总是与sql语句中的顺序相同:SELECT a FROM b WHERE c GROUP BY d可能映射到b.ply_where(c).groupby(d).ply_select(a)
  • pandas ply包含一个简单的系统,用于构建“符号表达式”以作为其方法的参数。^上面的{tt6}$是ply.symbolic.Symbol的实例。对该符号的操作将生成更大的复合符号表达式。当pandas-ply接收到作为参数的符号表达式时,它会将其转换为函数。例如,上面代码中的X.arr > 30可以作为lambda x: x.arr > 30提供。使用符号表达式可以省略lambda x:,从而减少代码的混乱。

警告

pandas ply是新的,处于开发的实验阶段。api还不稳定。期待意外。

(欢迎拉取请求。请随时与我们联系pandas-ply@coursera.org.)

使用pandas ply

安装pandas ply时使用:

$ pip install pandas-ply

pandas ply的典型用法是从:

importpandasaspdfrompandas_plyimportinstall_ply,X,sym_callinstall_ply(pd)

在调用install_ply之后,所有pandas对象都附加了pandas ply的方法。

API参考

完整的api引用可在http://pythonhosted.org/pandas-ply/获得。

可能的操作步骤

  • 扩展pandas'本机groupby以支持符号表达式?
  • 扩展pandas'本机apply以支持符号表达式?
  • .ply_call添加到pandas对象以扩展可链接性?
  • ply_select的版本,它支持依赖于早期计算列的后期计算列?
  • 支持谨慎列排序的ply_select版本?
  • 更好地处理指数?

许可证

版权所有2015 Coursera Inc.

根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用Java学习Eclipse可视化编辑器Swing   eclipse如何找到运行Java程序所需的时间?   JAVA用于在Tomcat 8上运行Jena API的lang.UnsupportedClassVersionError   java在Main中调用字符串方法   javascript“子进程”。exec无法运行Java函数   java如何使用Gmail API获取电子邮件正文内容   java为什么客户端看不到服务器发送的第一条消息?   java无法在安卓 WebView中滚动到顶部   从服务器运行web服务时,java代码中的日期为空   从子任务返回后执行后台任务时发生java错误   java无法一致地处理弹出窗口   java(Android)通过蓝牙向µ控制器发送字节   java无法在emulator中启动AVD?安卓工作室   Android Java应用程序正在冻结,没有返回错误消息   java如何使用TestNg记录测试历史?