python量化開發(fā)3|常用相關(guān)庫和函數(shù)知識(shí)點(diǎn)

今天是2017.4.20r。

年后這么久才實(shí)習(xí),這是第四天了,這幾天看著代碼一直是處于困和好困的狀態(tài)。說實(shí)話自己還不擅長和別人打招呼,然后和小組的人吃飯都感覺拘束的不行,就當(dāng)是一種鍛煉吧總是要經(jīng)歷的。(自我安慰)

想到上周日晚上和學(xué)良坐城際回來sz,他跟我一樣公司要求必須實(shí)習(xí),于是兩人就感嘆有點(diǎn)不明白為什么快畢業(yè)了別人都是趁著論文送審后出去到處耍,而我們卻還這么苦逼,我自己還要想著三方和駕照的事。反正對于自己可能真的還沒有從心理上達(dá)到工作的狀態(tài),我也想要畢業(yè)旅行啊啊啊啊啊。

上一篇的知識(shí)點(diǎn)介紹是年前實(shí)習(xí)記錄的一點(diǎn),現(xiàn)在去看已經(jīng)沒有什么印象了。后面的工作涉及基金評價(jià)的開發(fā),這幾天看代碼時(shí)又陸陸續(xù)續(xù)看到有用到python和數(shù)據(jù)庫、用python計(jì)算一些指標(biāo)等,自己對python很多庫中的函數(shù)都沒接觸過,所以這里再接著記錄一些。


1、二重MultiIndex的Series可以unstack()成DataFrame
data:

Row_1  Col_1     0        Row_2  Col_1     4
       Col_2     1               Col_2     5
       Col_3     2               Col_3     6
       Col_4     3               Col_4     7

Row_3  Col_1     8        Row_4  Col_1    12
       Col_2     9               Col_2    13
       Col_3    10              Col_3    14
       Col_4    11              Col_4    15

data.unstack():

Paste_Image.png

2、datetime庫使用
datetime.datetime.strftime():用于將任何日期時(shí)間轉(zhuǎn)化為指定時(shí)間格式字符串的函數(shù)
datetime.datetime.strptime():將字符串轉(zhuǎn)為指定日期型的函數(shù);

Paste_Image.png

3、replace(0,np.nan) :表示用null值來替換0

4、dropna():表示去除掉null值

5、set_index(‘NAME’):表示將列NAME設(shè)為固定的索引列,不再作為值

6、resample: Pandas中的resample,重新采樣,一般是對原來的一段時(shí)間樣本重新處理的一個(gè)方法。
常見的可取resample(‘d/w/m/q’)四個(gè)值 ,分別對應(yīng)每天、每周周天、每個(gè)月月末、每個(gè)季度末。
Resample(‘d’).last()后一般跟一個(gè)last(),用于顯示抽樣出來的值。

例如:fund_nav=fund_nav.replace(0,np.nan).dropna().set_index('enddate').resample('D').last()
其中set_index('enddate').resample('D') 是將enddate作為了固定的index,然后以日期進(jìn)行resample重新取樣。

7、st=fund_nav.index[0]-pd.Timedelta(days=10):表示st起始日期取10天前的日期。

8、sql中where條件下的1=1
使用 where 1=1 的好處
假如我們將上述的語句改為:
  string MySqlStr=”select * from table where 1=1 ”;
  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Age=“+“'Age.Text'“;
  }
  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text“;
  }
  現(xiàn)在,也存在兩種假設(shè)
 ?、俜N假設(shè)
  如果兩個(gè)IF都成立,那么,語句變?yōu)椋?br>   MySqlStr=”select * from table where 1=1 and Age='18' and Address='云南省文山州廣南縣小波嗎村'”,很明顯,該語句是一條正確的語句,能夠正確執(zhí)行,如果數(shù)據(jù)庫有記錄,肯定會(huì)被查詢到。
 ?、诜N假設(shè)
  如果兩個(gè)IF都不成立,那么,語句變?yōu)椋篗ySqlStr=”select * from table where 1=1”,現(xiàn)在,我們來看這條語句,由于where 1=1 是為True的語句,因此,該條語句語法正確,能夠被正確執(zhí)行,它的作用相當(dāng)于:MySqlStr=”select * from table”,即返回表中所有數(shù)據(jù)。

9、python中l(wèi)en()函數(shù)可以用來計(jì)算字符串、列表以及字典的長度。

10、Python 字典(Dictionary) update() 函數(shù)
dict.update(dict2) 用于把字典dict2的鍵/值對更新到dict里

11.png

11、 shift()函數(shù)的使用, nav_S.shift(1)用于將series nav_S中的值整體向后移動(dòng)1

12、 python中copy()和deepcopy()的區(qū)別

12.png

13、缺失值填充方法——ffill()和 bfill()
當(dāng)一個(gè)series中出現(xiàn)缺失值時(shí),用ffill()表示用空值的前一個(gè)值來填充,bfill()則表示用空值后面的值來填充。

obj3 = Series(['blue', 'purple', 'yellow'], index=[1, 2, 4])
a=obj3.reindex(range(6), method='ffill')
結(jié)果為:
0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow

14、pandas中iloc、loc、ix的區(qū)別是什么?
區(qū)別在于:

  • iloc是根據(jù)前多少行/列來確定值,只能接收整數(shù)
  • loc則是接收字典中的“索引值”來得到相應(yīng)數(shù)值,若給的索引值不存在,則返回錯(cuò)誤
  • ix既可以接收取前多少行的整數(shù)值,也可以接收索引值。
    s = pd.Series(np.nan, index=[49,48,47,46,45, 1, 2, 3, 4, 5])

例如:
df.iloc[3]表示取第3行的值;df.loc[3]則表示取索引值為3的值;df.ix[:'c', :4]則表示取索引值為‘c’的前幾行,以及前4列的值

15、dropna()的 使用
b=a.dropna(),則直接將a中的nan值給刪除掉了

0    purple  
1    purple
2    purple
3    yellow
4    yellow
5       NaN

0    purple
1    purple
2    purple
3    yellow
4    yellow
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容