Python_part 1

一、python基本操作

1、jupyter快捷鍵:a和b添加新行;m是轉(zhuǎn)換為Markdown模式,y是code模式。執(zhí)行:shift+enter;自動補全:tab;幫助文檔:shift+tab。

2、三劍客:numpy/pandas/matplotlib【最好管理員模式安裝,此時jupyter notebook出來是英文,且很卡;以普通用戶身份打開,為中文版,且很順暢】

3、數(shù)組和列表的區(qū)別:①字符串》浮點型》整型;②數(shù)組中存儲的數(shù)據(jù)元素必須是統(tǒng)一類型。

4、三種方式返回數(shù)組:

① array();

② matplotlib.pyplot 【讀取圖片使用.imread(讀入)和.imshow(顯示)】;

③ zero()、one()、linspace()、arange()、random系列。

5、numpy的常用屬性:shape(行數(shù),列數(shù),顏色數(shù))/ndim/size/dtype('元素類型')

6、切片操作:切前兩行/列 =》將圖片上下左右翻轉(zhuǎn),arr[行切片,列切片],arr[::-1,::-1] #將數(shù)組的行列倒置;

7、reshape(行數(shù),列數(shù)):數(shù)組內(nèi)數(shù)據(jù)行列變形。

8、級聯(lián)操作:將多個numpy數(shù)組進行橫向或縱向的拼接 =》將圖片上下左右拼接,numpy.concatenate((數(shù)組1,數(shù)組2),axis=1),為橫向拼接;axis=0,為縱向拼接。若有數(shù)組3,即三維數(shù)組,則有axis=2。必須同一維度!

9、常用的聚合操作:sum、max、min、mean

10、常用的數(shù)學(xué)函數(shù):三角函數(shù)(sin/cos/tan)、numpy.around(數(shù)組,decimals),返回指定數(shù)字的四舍五入值,decimals:舍入的小數(shù)位數(shù)(默認為0,若為負,整數(shù)將四舍五入到小數(shù)點左側(cè)的位置)。

11、矩陣相關(guān)

① numpy.eye() 返回一個單位矩陣。

② array.T 返回該數(shù)組轉(zhuǎn)置后的矩陣。

③ numpy.dot(數(shù)組1,數(shù)組2) 返回數(shù)組乘法之后的矩陣。


二、pandas基本操作

(1) Series(values, index), values:一組數(shù)據(jù);index:相關(guān)數(shù)據(jù)的索引標簽。由列表/numpy/字典創(chuàng)建。僅為一維數(shù)據(jù)源。

(2) DataFrame(values,columes,index)是一個表格型的數(shù)據(jù)結(jié)構(gòu),按照一定順序排列的多列數(shù)據(jù)組成。有行和列索引及值,以此擴展series,是多維。 由ndarray或字典創(chuàng)建。

DataFrame的屬性:values、columns、index、shape,無dtype。

DataFrame的索引操作:對行、隊列、元素進行索引。iloc:隱式索引;loc:顯式索引。

DataFrame的切片操作:對行、列進行切片。

- 索引:

? - df[col]:取列

? - df.loc[index]:取行

? - df.iloc[index,col]:取元素

- 切片:

? - df[index1:index3]:切行

? - df.iloc[:,col1:col3]:切列

(3) 時間數(shù)據(jù)類型的轉(zhuǎn)換:pd.to_datetime(col);將某一列設(shè)置為行索引:df.set_index()。


三、實踐

1、需求:股票分析

① 使用tushare包(財經(jīng)類)獲取某股票的歷史行情數(shù)據(jù)。

df=tushare.get_k_data(code,start)? ?#獲取網(wǎng)上數(shù)據(jù),股票代碼和開始時間

df.to_XXX? # 將網(wǎng)上數(shù)據(jù)存到本地

df=pd.read_csv('./XXX.xxx')? ?#將本地數(shù)據(jù)讀入到df

② 輸出該股票所有收盤比開盤上漲3%以上的日期。

df[(df['close']-df['open'])/df['open']>=0.03].index

③ 輸出該股票所有開盤比前日收盤跌幅超過2%的日期。

df[(df['open']-df['close'].shift(1))/df['close'].shift(1)<=-0.02].index

④ 假如從2010年1日1日開始,每月第一個交易日買入1手股票,每年最后一個交易日賣出所有股票,到今天為止,收益如何?

df.resample('M').first()? ?#數(shù)據(jù)重新取樣,每月第一個交易日

2、雙均線策略

① 均線的計算分析

② 金叉&死叉

③ 練習(xí):假如我從2010年1月1日開始,廚師資金為10萬元,金叉盡量買入,死叉全部賣出,則到今天為止,我的炒股收益率如何?

3、清洗缺失值、空值、重復(fù)值、異常值

①?處理丟失數(shù)據(jù):None和np.nan(NaN),區(qū)別:np.nan是float類型;None是NoneType類型。

注:數(shù)據(jù)分析中常常使用某些形式的運算來處理原始數(shù)據(jù),若原數(shù)據(jù)中的空值為NAN的形式,則不會干擾或中斷運算;NAN可以參與運算;None不可以參與運算。在pandas中,若遇到None形式的空值,則會強制轉(zhuǎn)換成NAN形式。

② 處理空值:isnull連用any,notnull連用all,dropna(可直接刪除缺失的行或列),fillna(覆蓋缺失值)。

③ 去重:df[列索引].unique,該列中有哪些不同的元素。

④ 處理異常值:若占比小,則刪除;若樣本量很小,可考慮使用均值或其他統(tǒng)計量取代;將其視為缺失值,利用統(tǒng)計模型填補。

4、DateFrame的級聯(lián)&合并操作

區(qū)別:merge需要依據(jù)某一共同列來合并,使用pd.merge()時,會自動根據(jù)兩者相同column名稱的那一列,作為key來進行合并;注:每一列元素的順序不要求一致。

map是series的方法,只能被series調(diào)用。

排序?qū)崿F(xiàn)的隨機抽樣:take()【只能使用隱式索引】、np.random.permutation() 【隨機排列序列】。


四、pandas的高級操作:

① 映射:創(chuàng)建一個映射關(guān)系列表,把values元素和一個特定的標簽或字符串綁定(給一個元素值提供不同的表現(xiàn)形式)。

② 分組聚合:groupby()函數(shù),查看分組情況;

高級數(shù)據(jù)聚合:使用groupby分組后,也可使用transform和apply提供的自定義函數(shù)實現(xiàn)更多的運算。

df.groupby('item')['price'].sum() === df.groupby('item')['price'].apply(sum)

③ 透視表:一種可以對數(shù)據(jù)動態(tài)排布并分類匯總的表格格式。

pivot_table(index,values,columns,aggfunc),index參數(shù)是分類匯總的分類條件。

優(yōu)點:靈活性高,操作性強,脈絡(luò)清晰易理解。

練習(xí):查看哈登對陣每個隊伍的得分,則需對每個隊伍進行分類并計算其各類得分的平均值;想看對陣同一對手在不同主客場下的數(shù)據(jù),分類條件為對手和主客場。

④ 交叉表:是一種用于計算分組的特殊透視圖,對數(shù)據(jù)進行匯總。

pd.crosstab(index,colums),index:分類數(shù)據(jù),交叉表的行索引;columns:列索引。

df.describ(),將有數(shù)據(jù)的列統(tǒng)計出均值,最大最小值等數(shù)據(jù)。

df[列索引].value_counts():統(tǒng)計列中各元素出現(xiàn)的次數(shù)。

⑤ plt.plot(x,y):繪制線性圖(單條/多條),設(shè)置坐標系的比例plt.figure(figsize=(a,b)),設(shè)置圖例legend()和軸的標識;圖例保存,figure.savefig()。

柱狀圖:plt.bar(索引,數(shù)據(jù)值,條形寬度);

散點圖:scatter(x,y,s,c),s指標量,c指顏色;

餅圖:pie(x);

直方圖:hist(bins,normed,color,orientation)。

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

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

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