版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
利用Python處理和分析Excel表中數(shù)據(jù)實戰(zhàn)【利用python進行數(shù)據(jù)分析——基礎篇】利用Python處理和分析Excel表中數(shù)據(jù)實戰(zhàn)原創(chuàng)2017年06月28日15:09:32標簽:python/數(shù)據(jù)分析/excel/新浪微博作為一個學習用Python進行數(shù)據(jù)分析的新手來說,通過本文來記錄分享一些我在用Python中的pandas、numpy來分析Excel表中數(shù)據(jù)的數(shù)據(jù)清洗和整理的工作,目的是熟悉numpy以及pandas基礎操作,所有操作利用Excel均可以方便實現(xiàn)。備注:本文中使用的是ipython完成的編輯數(shù)據(jù)來源及結構本文所分析的數(shù)據(jù)是通過爬蟲抓取的微博數(shù)據(jù)。選取新浪微博為數(shù)據(jù)平臺,選取我國34個省的旅游政務官方微博為研究對象,利用爬蟲軟件Gooseeker爬取微博信息,包括用戶名、粉絲數(shù)、開博日期、當月原創(chuàng)微博總數(shù)No、當月總微博數(shù)N、單條博文的轉發(fā)數(shù)、單條博文的評論數(shù)、條博文的點贊數(shù)。爬取的數(shù)據(jù)表格test.xlsx包括以下幾個sheet中,基本表結構見下1、All(所有博文):所有字段見下:其中有用字段是‘用戶名、微博內(nèi)容、時間、轉發(fā)數(shù)、評論數(shù)、點贊數(shù)’,共有6585條數(shù)據(jù)(備注:轉發(fā)數(shù)中的缺失值為“轉發(fā)”,評論數(shù)中的缺失值為“評論”,點贊數(shù)中的缺失值為“贊”):2、sf(各省信息表,此表中:省份名完整)3、sfwibo(此表記錄的是各個微博賬號對應的省份名,省份名不完整,已知各個省份名只有前兩個字完整)4、base_info2(爬取的微博賬戶的相關信息)(備注:此處的“昵稱”與sfweibo中的“微博用戶名”等同)本文思路:Step1:對于All表:1)取出有用字段。2)處理缺失值。3)數(shù)據(jù)透視Step2:對于sf和sfweibo表:1)以省份名做數(shù)據(jù)連接成sf_sfweibo。2)并與All表做數(shù)據(jù)連接sf_sfweibo_All。Step3:對于base_info表:1)與sf_sfweibo_All做數(shù)據(jù)連接2)計算h值3)處理數(shù)據(jù)4)計算相關性Step4:導出最后結果到一個Excel文件中,完成數(shù)據(jù)處理。、數(shù)據(jù)處理過程:step1:#-*-coding=utf-8-*-#導入需要的包from__future__importdivisionimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromnumpy.randomimportrandnfrompandasimportSeries,DataFramefromdatetimeimportdatetimeimportxlrd,openpyxlxlsx_file=pd.ExcelFile('test1.xlsx')All=xlsx_file.parse('All')1)取出有用字段#刪掉表格中的無用列,保留有用列d1=All.drop(All.columns[:11],axis=1,inplace=False)All=d1.drop(d1.columns[-1],axis=1,inplace=False)#顯示表格前五行All.head()#查看去重未處理前表中記錄長度len(All)#獲取到重復的行的行號的前20個All[All.duplicated()==True].index[:20]#刪除掉重復的行,在原值上直接修改sf_sfweibo1.to_excel('sf_sfweibo.xlsx',index=False)2)并與All表做數(shù)據(jù)連接sf_sfweibo_All#連接sf_sfweibo和All_pivot兩表sf_sfweibo=sf_sfweibo1sf_sfweibo_All_pivot=pd.merge(sf_sfweibo,All_pivot,left_on=u'微博用戶名',right_on=u'用戶名',right_index=True)#顯示連接后的表格的前五行sf_sfweibo_All_pivot.head()#將連接后的表進行存儲sf_sfweibo_All_pivot.to_excel('sf_sfweibo_All_pivot.xlsx',index=False)step3:1)與sf_sfweibo_All做數(shù)據(jù)連接#處理爬取的用戶的基本信息表base_infobase=xlsx_file.parse('base_info')base.head()#將base表與sf_sfweibo_All_pivot進行連接sf_sfweibo_All_pivot_base=base.merge(sf_sfweibo_All_pivot,left_on=u'昵稱',right_on=u'微博用戶名')ssapb=sf_sfweibo_All_pivot_base#名稱太長,換個名稱ssapb.head()#替換某列的名字ssapb.rename(columns={u'當月總微博數(shù)_x':u'當月總微博數(shù)'},inplace=True)#刪除其中的多余列ssapb=ssapb.drop([u'昵稱',u'當月總微博數(shù)_y'],axis=1)#讀取第一行的數(shù)ssapb.iloc[0]#添加一列(當月原創(chuàng)數(shù)=當月總微博數(shù)-當月轉發(fā)數(shù))ssapb[u'當月原創(chuàng)數(shù)']=ssapb[u'當月總微博數(shù)']-ssapb[u'當月轉發(fā)數(shù)']#將某列同時與某段字符串連接,通過觀察網(wǎng)頁可以發(fā)現(xiàn)這是網(wǎng)址的特點linkfix="?is_ori=1&is_forward=1&is_text=1&is_pic=1&is_video=1&is_music=1&is_\article=1&key_word=&start_time=2017-05-01&end_time=2017-05-31&is_search=1&is_searchadv=1#_0"ssapb[u'當月博文網(wǎng)址']=ssapb[u'主頁鏈接']+linkfixallfix="?profile_ftype=1&is_all=1#_0"ssapb[u'全部博文網(wǎng)址']=ssapb[u'主頁鏈接']+allfix#計算出篇均轉發(fā)/點贊/評論,并添加列ssapb[u'篇均點贊']=ssapb[u'點贊數(shù)']/ssapb[u'當月總微博數(shù)']ssapb[u'篇均轉發(fā)']=ssapb[u'轉發(fā)數(shù)']/ssapb[u'當月總微博數(shù)']ssapb[u'篇均評論']=ssapb[u'評論數(shù)']/ssapb[u'當月總微博數(shù)']#讀取表中的第一行數(shù)據(jù)ssapb.iloc[0]#存儲表格ssapb.to_excel('ssapb.xlsx',index=False)2)計算h值#將All表分組,獲取表格的index值gb=All.groupby(u'用戶名')gb1=gb.size()gbindex=gb1.indexprintgbindex,gb1#根據(jù)h指數(shù)的定義,分別計算轉發(fā)/評論/點贊h指數(shù)#再記錄下每個“用戶名的最大互動度max(轉發(fā)+評論+點贊)”sortAllf=All.sort_values(by=[u'用戶名',u'轉發(fā)數(shù)'],ascending=[True,False])sortAllc=All.sort_values(by=[u'用戶名',u'評論數(shù)'],ascending=[True,False])sortAlll=All.sort_values(by=[u'用戶名',u'點贊數(shù)'],ascending=[True,False])mm=(sortAllf,sortAllc,sortAlll)#將計算得到的結果重新存儲到一個新的DataFrame中All_h=pd.DataFrame(np.arange(136).reshape(34,4),columns=['fh','ch','lh','max_hdd'],index=gbindex)fh=[]ch=[]lh=[]max_hdd=[]forjinrange(len(mm)):foriingbindex:tempdf=mm[j][mm[j][u'用戶名']==i]tempdf['hdd']=tempdf[u'轉發(fā)數(shù)']+tempdf[u'評論數(shù)']+tempdf[u'點贊數(shù)']max_hdd.append(tempdf['hdd'].max())tempdf['numf']=range(len(tempdf))ifj==0:a=len(tempdf[tempdf[u'轉發(fā)數(shù)']>=tempdf['numf']+1])fh.append(a)elifj==1:b=len(tempdf[tempdf[u'評論數(shù)']>=tempdf['numf']+1])ch.append(b)else:c=len(tempdf[tempdf[u'點贊數(shù)']>=tempdf['numf']+1])lh.append(c)All_h['fh']=fhAll_h['ch']=chAll_h['lh']=lh#因為,前面的循環(huán)一共循環(huán)了三遍,使得All_h重復了3遍,因此只要獲取前34位即可All_h['max_hdd']=max_hdd[:34]#插入一個綜合h指數(shù),該指數(shù)是轉發(fā)/評論/點贊h指數(shù)三個的均值All_h.insert(3,'HS',All_h.iloc[:,:3].mean(1))#更改列名稱All_h.rename(columns={'fh':u'轉發(fā)h指數(shù)','ch':u'評論h指數(shù)',\'lh':u'點贊h指數(shù)','HS':u'綜合h指數(shù)','max_hdd':u'單篇最大互動度'},inplace=True)All_h.head()#連接ssapb和All_h表格ssapb_All_h=pd.merge(ssapb,All_h,left_on=u'微博用戶名',right_on=u'用戶名',right_index=True)#加一列原創(chuàng)率ssapb_All_h[u'原創(chuàng)率']=ssapb_All_h[u'當月原創(chuàng)數(shù)']/ssapb_All_h[u'當月總微博數(shù)']ssapb_All_h.iloc[0]#存檔ssapb_All_h.to_excel('ssapb_All_h.xlsx',index=False)3)計算相關性#獲取原DataFrame中的幾列存儲到新的DataFrame中,計算綜合h指數(shù)與其他分指數(shù)之間的相關性f1=ssapb_All_h.loc[:,[u'綜合h指數(shù)',u'轉發(fā)h指數(shù)',u'評論h指數(shù)',u'點贊h指數(shù)']]#計算f1中各列數(shù)據(jù)的相關性corr1=f1.corr()#將該相關性結果存檔corr1.to_excel('corr1.xlsx')corr1#獲取原DataFrame中的幾列存儲到新的DataFrame中,計算綜合h指數(shù)與其他微博信息之間的相關性f2=ssapb_All_h.loc[:,[u'綜合h指數(shù)',u'轉發(fā)數(shù)',u'評論數(shù)',u'點贊數(shù)',u'篇均轉發(fā)',u'篇均評論',u'篇均點贊']]corr2=f2.corr()corr2.to_excel('corr2.xlsx')corr2#獲取原DataFrame中的幾列存儲到新的DataFrame中,計算綜合h指數(shù)與其他信息之間的相關性f3=ssapb_All_h.loc[:,[u'綜合h指數(shù)',u'原創(chuàng)率',u'粉絲數(shù)',u'微博總數(shù)',u'單篇最大互動度']]corr3=f3.corr()corr3.to_excel('corr3.xlsx')corr3#重新排序列aa=ssapb_All_h.iloc[:,[8,9,10,5,15,16,0,1,2,3,4,6,14,7,11,12,13,24,20,21,22,23,17,18,19,25]]aa.to_excel('finally.xlsx')aa.iloc[0]4)處理數(shù)據(jù),處理浮點位數(shù)/轉成百分位數(shù)#將表中的浮點類型保留至小數(shù)點后四為f=lambdax:'%.4f'%xaa.ix[:,21:]=aa.ix[:,21:].applymap(f)aa.ix[:,21:]=aa.ix[:,21:].astype('float64')aa.iloc[0]#將原創(chuàng)率轉成百分比形式f1=lambdax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)藥師培訓機構哪家最好
- 活塞壓縮機培訓課件
- 2024-2025學年安徽省A10名校聯(lián)盟高一下學期5月學情調研考地理試題(C卷)(解析版)
- 2024-2025學年青海省海南藏族自治州高二下學期期末考試歷史試題(解析版)
- 2024-2025學年山東省濟南市高二下學期期末質量檢測歷史試題(解析版)
- 2026年經(jīng)濟學專業(yè)知識進階試題集
- 2026年人力資源管理實務人事招聘與培訓高頻考點題
- 2026年IoT開發(fā)工程師進階試題設備通信與云平臺集成
- 2026年律師職業(yè)資格考試模擬題及答案
- 2026年商業(yè)法再教育必修問題解答集
- 2026內(nèi)蒙古鄂爾多斯市伊金霍洛旗九泰熱力有限責任公司招聘熱電分公司專業(yè)技術人員16人備考考試試題及答案解析
- 2026中國電建招聘面試題及答案
- GB/T 36132-2025綠色工廠評價通則
- 車隊春節(jié)前安全培訓內(nèi)容課件
- 2025年溫州肯恩三位一體筆試英語真題及答案
- 化學實驗員應該知道的100個實驗室小常識
- 牛津閱讀樹4級(30本)目錄
- 填料密封和機械密封講義課件
- 審計報告征求意見書模板
- 排水管渠(溝道)系統(tǒng)課件
- 第6章 受壓構件截面承載力(6-3)
評論
0/150
提交評論