Python數(shù)據(jù)分析常用方法手冊(cè)

上傳人:xins****2008 文檔編號(hào):114138975 上傳時(shí)間:2022-06-27 格式:DOC 頁數(shù):12 大?。?4.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
Python數(shù)據(jù)分析常用方法手冊(cè)_第1頁
第1頁 / 共12頁
Python數(shù)據(jù)分析常用方法手冊(cè)_第2頁
第2頁 / 共12頁
Python數(shù)據(jù)分析常用方法手冊(cè)_第3頁
第3頁 / 共12頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Python數(shù)據(jù)分析常用方法手冊(cè)》由會(huì)員分享,可在線閱讀,更多相關(guān)《Python數(shù)據(jù)分析常用方法手冊(cè)(12頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、1. Pytho?n數(shù)據(jù)處理?和分析常用?語句 數(shù)據(jù)分析的?一般步驟包?括數(shù)據(jù)獲取?、數(shù)據(jù)整理、數(shù)據(jù)描述、數(shù)據(jù)分析 1.1 數(shù)據(jù)獲取 1.1.1 數(shù)據(jù)獲取方?式 1.1.2 查看數(shù)據(jù)屬?性 Data.shape? 查看數(shù)據(jù)多?少行、多少列 Data.colum?ns 查看數(shù)據(jù)列? Data.dtype?s 查看各數(shù)據(jù)?字段的屬性? 1.2 數(shù)據(jù)整理 #第二步: 做一些數(shù)據(jù)?的基本處理?: 1.2.1 數(shù)據(jù)基本處?理(類exce?l) #0.數(shù)據(jù)類型的?轉(zhuǎn)換 例如:如果要做時(shí)?間序列分析?,首先要將交?易日期從通?用對(duì)象(objec?t)轉(zhuǎn)換為日期

2、?對(duì)象(datet?ime) df['date'] = pd.to_da?tetim?e(df['date']) #1.如何獲取導(dǎo)?入的數(shù)據(jù)有?幾行幾列? 直接用df?.shape?,返回一個(gè)維?度(幾行,幾列)的元組; df.colum?ns.size #獲取列數(shù) df.iloc[:, 0].size #獲取行數(shù) #2.如何查看指?定行、列、子集? #df = panda?s.read_?excel?('1.xls',sheet?name= '店鋪分析日?報(bào)') df = df.loc[:,['股票代碼','股票名稱', '營業(yè)總收入?']]#訪

3、問指定的?列 #df=df['股票代碼'] #查看指定列? #DataF?rame.ix['index?_name?'] #查看指定行? #dataf?rame[m:n] #選擇多行 #dataf?rame[dataf?rame['col3'>5]] #條件篩選 #dataf?rame.ix[0:3,0:5] #選擇子集 #3.如何添加新?的列 例1:添加一個(gè)總?和欄來顯示?Jan、Feb和M?ar三個(gè)月?的銷售總額? df['total?'] = df['Jan']+df[

4、'Feb']+df['Mar'] 例2:把計(jì)算結(jié)果?添加為一個(gè)?新的列 df['P/E'] = df.收盤價(jià)/df.基本每股收?益 #新的列名,后面是對(duì)應(yīng)?的數(shù)值 例3:在exce?l表最后加?一行求各列?和 sum_r?ow=df[['Jan','Feb','Mar','total?']].sum() #4.如何刪除行?列 #df_de?lete=df.drop(['resul?t'],axis=1) #刪除列 #DataF?rame.drop(['index?1','index?2'...]) #刪除行 #5.如何對(duì)數(shù)據(jù)?進(jìn)行排序? d

5、f['P/E'].size #獲取‘P/E’ 這列共有多?少行 newdf?=df_de?lete.sort('P/E') #默認(rèn)升序排?列 sort_?index?也可以進(jìn)行?排序 #6.如何對(duì)數(shù)據(jù)?進(jìn)行篩選? #1.篩選出pr?edict?aqi_n?orm1這?一列大于1?00的行; aqics?v[aqics?v["predi?ctaqi?_norm?1"]>100] 也可以寫為?:data[data.收盤價(jià)>100] #2.使用&(并)與| (或)實(shí)現(xiàn)多條件?篩選 aqics?v[(aqics?v["FID"]>37898

6、?) & (aqics?v["FID"]<38766?) ] aqics?v[(aqics?v.predi?ctaqi?_norm?1>150) |(aqics?v.predi?ctaqi?_norm?1<100) ] #3.篩選后取另?外兩列數(shù)據(jù)? 如果只需要?其中兩列數(shù)?據(jù),而同時(shí)利用?另外兩列進(jìn)?行篩選時(shí)可?以這樣.如果只需要?其中的某幾?列可以寫為?aqics?v[['FID','x','y']] aqics?v[['x','y']][(aqics?v.FID >10000?) | (aqics?v.predi?ctaqi?_norm?1 >150)]

7、 #4.isin()用法:篩選某一列?數(shù)據(jù)符合等?于規(guī)定值 (它使得我們?可以定義一?個(gè)列表,里面包含我?們所希望查?找的值); data7?=data[data['股票代碼'].isin(['sh600?141','sh600?754','sh603?017','sh603?198'])] #同樣,以上這個(gè)語?句可以用q?uery()函數(shù)來查詢?,需要安裝n?umexp?r; data8?=data.query?('股票代碼 == ['sh600?141','sh600?754','sh603?017','sh603?198']') #map()函數(shù)也有這?個(gè)功能,樣式如下

8、: df[df["sku"].map(lambd?a x: x.start?swith?('B1')) & (df["quant?ity"] > 22)].head() #5.字符串方法?:篩選某一列?內(nèi)容包含特?定值 例如找出M?A金叉死叉?列所有含金?叉的行,但列不能含?空值 data8?=data7?[data7?['MA金叉死?叉'].str.conta?ins('金叉')] #6.如果列中存?在空值,空值處理方?法: #6.1 用fill?na()方法將空值?填充 data7?=data.filln?a(value?='你好') #6.2 或

9、者將列中?的空值刪除?; stock?_data? = stock?_data?[stock?_data?['市盈率TT?M'].notnu?ll()] #或6.2 用drop?na刪除缺?失值 stock?_data?.dropn?a(subse?t=['下個(gè)月漲跌?幅'], inpla?ce=True) #7.panda?s能夠理解?日期,在對(duì)日期數(shù)?據(jù)篩選方面?可以對(duì)某年?、某月進(jìn)行篩?選; data[data['交易日期']='2014-03'] data[data['交易日期']='2015'] data[(data['交易日期'] >='20140?701')

10、 & (data['交易日期'] <= '20140?715')].head() #8.對(duì)時(shí)間序列?數(shù)據(jù),設(shè)置交易日?期為新的索?引 df2 = data.set_i?ndex(['交易日期']) #通過切分來?獲得一段區(qū)?間 df2["20140?101":"20140?201"] df2['2014'] df2['2014-Dec'] #9.用uniq?ue()函數(shù)來獲取?一個(gè)不含重?復(fù)項(xiàng)的小列?表 df["name"].uniqu?e() #如果這個(gè)小?列表同時(shí)要?包含其他列?信息,可以用dr?op_du?plica?tes()函數(shù) df.drop_?dupl

11、i?cates?(subse?t=["accou?nt numbe?r","name"]).head() #7.數(shù)據(jù)轉(zhuǎn)置 df_su?m=pd.DataF?rame(data=sum_r?ow).T #8.簡單的統(tǒng)計(jì)?與篩選 1.2.2 將分割數(shù)據(jù)?讀取到一張?DataF?rame # 第五步: 數(shù)據(jù)跟文件?夾的交互——讀取、保存 #1.用for循?環(huán)和app?end函數(shù)?將文件夾中?不同表格的?數(shù)據(jù)經(jīng)過篩?選后加載到?同一張表格? impor?t panda?s as pd impor?t os stock?_code?_list?=[] for root

12、,dirs,files? in os.walk('overv?iew-data-sh/'): if files?: for f in files?: if'sh6'in f: stock?_code?_list?.appen?d(f.split?('.csv')[0]) all_s?tock_?sh=pd.DataF?rame() for code in stock?_code?_list?: stock?_data?=pd.read_?csv('overv?iew-data-sh/'+c

13、ode+'.csv',encod?ing='gbk') stock?_data?=stock?_data?[['交易日期','股票代碼', '股票名稱','漲跌幅', '成交額', '換手率', '流通市值','市盈率TT?M', '市銷率TT?M', '市現(xiàn)率TT?M', '市凈率', 'MA_5', 'MA_10?','MA_20?', 'MA_30?', 'MA_60?','MA金叉死?叉','MACD_?金叉死叉','KDJ_金?叉死叉','收盤價(jià)','開盤價(jià)']] stock?_data?['交易日期'] = pd.to_da?tetim?e(stock?_dat

14、a?['交易日期']) stock?_data?=stock?_data?[stock?_data?['交易日期']=='2016/9/30'] all_s?tock_?sh=all_s?tock_?sh.appen?d(stock?_data?,ignor?e_ind?ex=True) all_s?tock_?sh.shape? #2.用pd.conca?t將不同文?件夾中數(shù)據(jù)?加載到一個(gè)?DateF?rame #3.數(shù)據(jù)保存 all_s?tock_?sh.to_cs?v('全部股票當(dāng)?天市場數(shù)據(jù)?20160?930sh?.csv',encod?i

15、ng='gbk') 1.3 數(shù)據(jù)描述 1.3.1 繪圖與可視?化 %pylab? impor?t matpl?otlib?.pyplo?t as plt impor?t numpy? as np impor?t panda?s as pd data=pd.read_?csv('sh600?000.csv',encod?ing='gbk') data1?=data['收盤價(jià)'] data2?=data['交易日期'] # 在一張fi?gure里?面畫多張圖? fig=plt.figur?e() ax1=fig.add_s?ubplo?t(221) ax1.

16、plot(data1?,'g') # 設(shè)置X軸,Y軸,標(biāo)題 ax1.set_x?label?('Time') ax1.set_y?label?('Price?') ax1.set_t?itle('my first? matpl?otlib? plot') ax1.set_x?lim([data['交易日期']]) # 時(shí)間序列趨?勢圖-設(shè)置lab?el 如果要在同?一個(gè)圖中顯?示多個(gè)la?bel,可以用pl?t.legen?d()函數(shù) 代碼: %pylab? impor?t matpl?otlib?.pyplo?t as plt impor?t panda?s as

17、pd data=pd.read_?csv('overv?iew-data-sh/sh600?005.csv',encod?ing='gbk') data.交易日期=pd.to_da?tetim?e(data.交易日期) data1?=data.set_i?ndex('交易日期')['收盤價(jià)'].ix['2009'] data2?=data.set_i?ndex('交易日期')['開盤價(jià)'].ix['2009'] plt.title?('Trend?') plt.xlabe?l('Time') plt.ylabe?l('Price?') plt.plot(data1?,'k',l

18、abel?='1') plt.plot(data2?,'g',label?='2') plt.legen?d() #用lege?nd()函數(shù)可以在?一張圖里顯?示多個(gè)la?bel plt.show() # 餅圖 plt.subpl?ot(233) x = [1,2,3,4,5] y = [2.3,3.4,1.2,6.6,7.0] scatt?er(x,y) # 保存 savef?ig("demo.png") 例子:繪制股價(jià)的?時(shí)間序列圖? Panda?s最基本的?時(shí)間序列類?型是以時(shí)間?戳(Da

19、tat?imein?dex,Perio?dinde?x)為索引的S?eries?。 Set_i?ndex()方法將時(shí)間?列(colum?n)設(shè)置為in?dex data=data.set_i?ndex(['Unnam?ed: 0']) data.index?.name='time' 將inde?x轉(zhuǎn)為da?tatim?einde?x data.index?=pd.to_da?tetim?e(data.index?) data=data.resam?ple('B',fill_?metho?d='ffill?') 代碼: #利用Pyt?hon繪制?時(shí)間序列圖? %py

20、lab? impor?t matpl?otlib?.pyplo?t as plt impor?t numpy? as np impor?t panda?s as pd data=pd.read_?csv('sh600?000.csv',encod?ing='gbk') data=data[['收盤價(jià)','交易日期']] data=data.set_i?ndex(['交易日期']) data.index?=pd.to_da?tetim?e(data.index?) data=data.resam?ple('M',fill_?metho?d='ffill?') fig=pl

21、t.figur?e() ax1=fig.add_s?ubplo?t(211) ax1.plot(data,'g') ax1.set_x?lable?('Time') ax1.set_y?lable?('Price?') ax1.set_t?itle('my first? matpl?otlib? plot') 1.4 數(shù)據(jù)分析 1.4.1 數(shù)據(jù)聚合與?分組運(yùn)算 #1.group?by技術(shù) from panda?s impor?t DataF?rame,Serie?s impor?t numpy? as np df=DataF?rame({'key1':['a','a

22、','b','b','a'], 'key2':['one','two','one','two','one'], 'data1?':np.rando?m.randn?(5), 'data2?':np.rando?m.randn?(5)}) #1.1 按照key?1進(jìn)行分組?,計(jì)算dat?a1的平均?值mean?? group?ed=df['data1?'].group?by(df['key1']).mean() 或者:index?_data?s=index?_data?s.group?by('股票代

23、碼').count?() #1.2 按照key?1進(jìn)行分組?,計(jì)算dat?a1、data2?的平均值? df.group?by(['key1']).mean() #1.3 按照key?1進(jìn)行分組?,計(jì)算dat?a1、data2?求和? means?=df.group?by(['key1','key2']).sum() means?.unsta?ck() #用unst?ack()來取消堆疊?/拆分列 #1.4 選取部分列?進(jìn)行聚合 means?_data?1=df.group?by(['key1','key2'])[['data2?']].mean()

24、 #或mean?s_dat?a1=df.group?by(['key1','key2'])['data2?'].mean() #或mean?s_dat?a1=df['data2?'].group?by([df['key1'],df['key2']]).mean() #1.5 如何向Da?taFra?me添加一?個(gè)列 tips['tip/total?_bill?']=tips['tip']/tips['total?_bill?'] tips.count?() #獲取每個(gè)c?olumn?共有多少列? #或者用ti?ps.iloc[:].size #獲取共有多?少列 #

25、1.6 找出tip?s1里面,tip大于?10的,并降序排列?? tips_?10=tips[tips.tip>6].sort('tip',ascen?ding=False?) #1.7 對(duì)列sex?分組后,對(duì)另一列(tip/total?_bill?)進(jìn)行排序 def top(self,n): retur?n self.sort('tip/total?_bill?',ascen?ding=False?)[:n] #top(tips) tips.group?by(['sex']).apply?(top,n=5) #1.8 按照某一列?內(nèi)容的部分?字母進(jìn)行分?

26、組排序 比如,某一列由不?同星期+日期組成,但只想按照?這一列的星?期進(jìn)行排序?? #get_d?ay=lambd?a day: tips.day[:1] # 選擇列中的?第一個(gè)字母?,按第一個(gè)字?母排序 #tips.group?by(get_d?ay).apply?(top,n=5) #group?by 可以調(diào)用函?數(shù) #1.9 采用多個(gè)聚?合函數(shù)返回?多個(gè)聚合值? tips2?=tips1?.group?by(['sex','smoke?r'])['total?_bill?','tip'] tips2?.agg(['mean','sum','std','max'])

27、 #2.0 計(jì)算tip?和tota?l_bil?l之間的相?關(guān)系數(shù) #corr=lambd?a x: x.corrw?ith(x['tips']) tips_?corr=tips.group?by(['sex']) tips_?corr.apply?(lambd?a g: g['tip'].corr(g['total?_bill?'])) #2.1 根據(jù)日價(jià)格?變化計(jì)算各?股票之間的?年度相關(guān)系?數(shù) by_ye?ar=data.group?by(lambd?a x:x.year) corr=lambd?a x: x.corrw?ith(x['SPX']) da

28、ta_?by_ye?ar=by_ye?ar.apply?(corr) 2. merge? 合并 1. Appen?d P= 2. Conca?t 例子1:使用con?cat()函數(shù)將兩個(gè)?不同邏輯結(jié)?構(gòu)的對(duì)象能?連接: 將股票數(shù)據(jù)?中的前5個(gè)?和后5個(gè)合?并; Data1?=data[:3] Data2?=df[:3] Pd.conca?t([Data1?,Data2?],ignor?e_ind?ex=Ture) 例子2:將兩個(gè)相同?邏輯結(jié)構(gòu)的?對(duì)象能連接? impor?t panda?s as pd dates?=range?(20161?010,20161?

29、020) piece?s=[] for date in dates?: path='overv?iew-push-%d/stock? overv?iew.csv' % date date=pd.read_?csv(path,encod?ing='gbk') piece?s.appen?d(date) datas?=pd.conca?t(piece?s) 3. Join 將美國運(yùn)通?公司和可可?可樂公司近?一年中每個(gè)?月的交易總?量 表(包含公司代?碼)與30只道?瓊斯成分股?股票信息表?合并; Pd.merge?(data1?,data2?

30、,on='code') 3. 聚類分析 3.1K-均值聚類 sciki?t-learn? 語言包 #K-Mean聚?類的一個(gè)小?例子 from pylab? impor?t * from scipy?.clust?er.vq impor?t * list1?=[88,64,96,85] list2?=[92,99,95,94] list3?=[91,87,99,95] list4?=[78,99,97,81] list5?=[88,78,98,84] list6?=[100,95,100,92] data=vstac?k((list1?,list2?,list3?,list4?,list5?,list6?)) centr?oids,_=kmean?s(data,2) resul?t,_=vq(data,centr?oids) print? (resul?t)

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!