如何在python中编写函数?

时间:2015-03-31 15:15:40

标签: python

我正在进行探索性数据分析,同时这样做我多次使用相同的代码行。所以我开始知道为什么我不能为此编写函数。但我是python的新手我不喜欢我知道如何准确定义一个函数。所以请帮帮我......

textdata是我的主要数据框和tonumber,smstext是我的变量

# subsetting the textdata
mesbytonum = textdata[['tonumber', 'smstext']]
# calculating the no.of messages by tonumber
messbytonum_freq = mesbytonum.groupby('tonumber').agg(len)
# resetting the index
messbytonum_freq.reset_index(inplace=True)
# making them in a descending order
messbytonum_freq_result = messbytonum_freq.sort(['smstext'], ascending=[0])
#calcuating percentages
messbytonum_freq_result['percentage'] = messbytonum_freq_result['smstext']/sum(messbytonum_freq_result['smstext'])
# considering top10
top10tonum = messbytonum_freq_result.head(10)
# top10tonum  

我已经重复了20次类似的代码,所以我想为上面的代码编写函数,使我的代码更小。所以请帮助我如何定义。

提前致谢

1 个答案:

答案 0 :(得分:4)

该功能的定义如下:

def func(arg1, arg2, argN):
    # do something
    # you may need to return value(s) too

并且这样称呼:

func(1,2,3) # you can use anything instead of 1,2 and 3

将是

def MyFunc(textdata):
    mesbytonum = textdata[['tonumber', 'smstext']]
    messbytonum_freq = mesbytonum.groupby('tonumber').agg(len)
    messbytonum_freq.reset_index(inplace=True)
    messbytonum_freq_result = messbytonum_freq.sort(['smstext'], ascending=[0])
    messbytonum_freq_result['percentage'] = messbytonum_freq_result['smstext']/sum(messbytonum_freq_result['smstext'])
    top10tonum = messbytonum_freq_result.head(10)
    return   # what do you want to return?

# use this function
result=MyFunc(<argument here>)

# then you need to use result somehow

您的函数也可以返回多个值

return spam, egg

你必须像这样使用

mySpam, myEgg=MyFunction(<argument>)