我正在进行探索性数据分析,同时这样做我多次使用相同的代码行。所以我开始知道为什么我不能为此编写函数。但我是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次类似的代码,所以我想为上面的代码编写函数,使我的代码更小。所以请帮助我如何定义。
提前致谢
答案 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>)