今天是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():

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

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、 shift()函數(shù)的使用, nav_S.shift(1)用于將series nav_S中的值整體向后移動(dòng)1
12、 python中copy()和deepcopy()的區(qū)別

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