今天是2017.4.20r侨糟。
年后這么久才實(shí)習(xí)碍扔,這是第四天了,這幾天看著代碼一直是處于困和好困的狀態(tài)秕重。說實(shí)話自己還不擅長和別人打招呼不同,然后和小組的人吃飯都感覺拘束的不行,就當(dāng)是一種鍛煉吧總是要經(jīng)歷的溶耘。(自我安慰)
想到上周日晚上和學(xué)良坐城際回來sz二拐,他跟我一樣公司要求必須實(shí)習(xí),于是兩人就感嘆有點(diǎn)不明白為什么快畢業(yè)了別人都是趁著論文送審后出去到處耍凳兵,而我們卻還這么苦逼百新,我自己還要想著三方和駕照的事。反正對于自己可能真的還沒有從心理上達(dá)到工作的狀態(tài)庐扫,我也想要畢業(yè)旅行啊啊啊啊啊饭望。
上一篇的知識點(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è)
①種假設(shè)
如果兩個(gè)IF都成立叶组,那么拯田,語句變?yōu)椋?br>
MySqlStr=”select * from table where 1=1 and Age='18' and Address='云南省文山州廣南縣小波嗎村'”,很明顯甩十,該語句是一條正確的語句船庇,能夠正確執(zhí)行,如果數(shù)據(jù)庫有記錄枣氧,肯定會被查詢到溢十。
②種假設(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中的值整體向后移動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ù)值,若給的索引值不存在同窘,則返回錯誤
- 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