我有一個函數,它讀入一堆用戶輸入的原始數據,並將它編譯成熊貓系列。在下面的示例中,我將它稱爲create_data
,它只是構建了一個隨機系列,長度爲n
。從熊貓系列創建類對象並應用方法
>>> def create_data(n):
... return pd.Series(np.random.randint(1, 100, n))
...
>>>
>>> function_result=create_data(10)
>>> function_result
0 73
1 91
2 31
3 44
4 19
5 30
6 42
7 56
8 69
9 70
dtype: int32
然後,我有一套功能,希望能夠適用於這個系列。在這個例子中,我創建了一個計算系列與其一階差分之間的相關性的例子。
>>> def temporal_corr(x):
... return pd.concat([x, x.shift()], 1).corr().iloc[0, 1]
...
我可以明明只是通過調用函數應用到一系列...
>>> temporal_corr(function_result)
0.38714413906049816
但是,假設我有一個我想在這一系列使用幾種不同的功能。它會更有意義(或者有可能)創建一個類,該類使用函數create_data
構造一個對象,然後在該類中有一組函數可以作爲方法應用?我創建一個類並在下面定義這個函數。
>>> class myobj:
... def __init__(self, myobj):
... self.myobj = myobj
...
... def temporal_corr(self):
... return pd.concat([self.myobj, self.myobj.shift()], 1).corr().iloc[0, 1]
...
>>> a = myobj(function_result)
>>> a.temporal_corr()
0.38714413906049816
什麼是有myobj
作爲函數create_data
的結果來創建的類對象的最佳方式?我希望能夠撥打create_data
,並將結果作爲我可以撥打temporal_corr()
的對象。
我不知道我理解這個問題。如果你想'create_data'返回一個'myobj'實例,爲什麼不這樣做:'def create_data(n):return myobj(pd.Series(np.random.randint(1,100,n)))' – Blckknght
你爲什麼要這麼做?它使代碼更復雜,沒有任何好處。 – BlackJack