python数据分析:Apply的使用
2019-04-14 本文已影响149人
数据蛙datafrog
本文是《数据蛙三个月强化课》的第八篇总结教程,如果想要了解作者从转行后一直以来的思考,可以阅读谈谈转行数据分析以及工作心得。温馨提示:如果您已经熟悉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函数测试