python数据分析:Apply的使用

浏览: 1369

本文是《数据蛙三个月强化课》的第八篇总结教程,如果想要了解作者从转行后一直以来的思考,可以阅读谈谈转行数据分析以及工作心得。温馨提示:如果您已经熟悉apply函数的使用,大可不必再看这篇文章,或是之挑选部分内容

一:Apply函数的用法

1.apply函数的定义
对于pandas包中,apply函数应该是用的较多的了。这里我们一起从函数的定义开始来学习。在 juypter编辑器中输入?df.apply()便可以得到详细的函数定义,以及方便理解的案例。下面我节选一些常用参数来和大家一起探讨下

函数定义:
----------
 df.apply(func, axis=0, broadcast=False, raw=False,     reduce=None, args=(), **kwds)
函数的理解:
----------
apply函数中可以来使用自定义的函数(func);对于func中传递的参      
数,如果axis =0 应用于每一列上, 如果axis=1应用于每一行上 
参数:
----------
func : 自定义的函数
    函数应用在每一列或是每一行上
axis : {0 or 'index'1 or 'columns'}, default 0
    * 0 or 'index': 应用函数在每一列上
    * 1 or 'columns': 应用函数在每一行上
args : 元组
    额外的给自定义函数传递一个元组参数
    array/series
 其中还是可以给自定义参数传递一个字典参数    
Returns
-------
applied : Series or DataFrame

2.apply函数的应用举例
我们先观察下测试的数据,数据点击可下载 提取码:34uj

数据展示的是某类文章被报刊接收时间和发表时间,这里的时间间隔正是我们想要求得的。下面我们一起来处理看看

  import datetime   #用来计算日期差的包
def dataInterval(data1,data2):
    d1 = datetime.datetime.strptime(data1, '%Y-%m-%d')
    d2 = datetime.datetime.strptime(data2, '%Y-%m-%d')
    delta = d1 - d2
    return delta.days

def getInterval(arrLike):  #用来计算日期间隔天数的调用的函数
    PublishedTime = arrLike['PublishedTime']
    ReceivedTime = arrLike['ReceivedTime']
    days = dataInterval(PublishedTime.strip(),ReceivedTime.strip())  #注意去掉两端空白
    return days

这时我们再看,TimeInterval列已经有数据了,然后大家自己运行函数看看

二:apply函数结合group by的使用

这里我们还是使用上面的数据,但是我们想让每类文章中参考次数大于平均值的为1,小于平均值的为0,那如何来操作呢?

  • 先看下groupby 之后的数据,传到apply中是如何

这里能够看到是传入的每组的dataframe

  • 看下最后的结果

    大家看完好好的操作下,熟练的掌握apply函数,pandas就基本会了80%,加油!

参考资料:
1.Apply函数测试

推荐 0
本文由 DataFrog 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册