版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
6.1成績數(shù)據(jù)預(yù)處理與分析學(xué)生成績是體現(xiàn)學(xué)生學(xué)習(xí)能力水平的重要數(shù)據(jù)之一。如何從各學(xué)期、各科目的大量學(xué)生成績中快速準(zhǔn)確讀取分析學(xué)生的綜合能力,成為學(xué)校各項(xiàng)工作的重要數(shù)據(jù)支持。一、數(shù)據(jù)源本案例以某年級(jí)1班到5班的數(shù)學(xué)、語文、英語、計(jì)算機(jī)四門學(xué)科的期末成績?yōu)槔?,?duì)其進(jìn)行數(shù)據(jù)分析,數(shù)據(jù)文件為score.xls,如圖6-1所示。圖6-1數(shù)據(jù)源二、要求1.查詢語文和英語都較好的同學(xué)。2.根據(jù)四科成績,計(jì)算總分,對(duì)總分進(jìn)行排名,查看名次的大概情況。3.計(jì)算總分的平均分和中位數(shù),并進(jìn)行比較。4.計(jì)算江蘇省學(xué)生四門學(xué)科的平均分,并加以比較。5.根據(jù)總分生成總分段,并分析哪個(gè)總分段的比例最高。6.總分等級(jí)為C的學(xué)生中,計(jì)算不同城市學(xué)生的平均分,并加以比較。三、步驟步驟1:導(dǎo)入庫,設(shè)置參數(shù)。導(dǎo)入所需要的庫pandas,利用pd.set_option解除顯示寬度的顯示,設(shè)置數(shù)據(jù)對(duì)齊。步驟1代碼如下:importpandasaspdpd.set_option('display.width',None)pd.set_option('display.unicode.east_asian_width',True)步驟2:數(shù)據(jù)拼接。利用循環(huán)語句分別導(dǎo)入1班、2班、3班、4班、5班的數(shù)據(jù),并利用append將其合并為一個(gè)數(shù)據(jù),命名為data,并查看數(shù)據(jù)的行數(shù)、列數(shù)和列名。步驟2代碼如下:data=pd.read_excel("c:/data/score.xls",sheet_name=0)foriinrange(1,5):data_append=pd.read_excel("c:/data/score.xls",sheet_name=i)print(data_append)data=data.append(data_append,ignore_index=True)輸出結(jié)果如圖6-2所示。圖6-2步驟2輸出結(jié)果步驟3:數(shù)據(jù)查詢。(1)查詢數(shù)據(jù)學(xué)號(hào)與四門學(xué)科的前5行。(2)查詢語文和英語都大于90分的數(shù)據(jù)。步驟3(1)代碼如下:print(data[['學(xué)號(hào)','數(shù)學(xué)','語文','英語','計(jì)算機(jī)']][:5])輸出結(jié)果如圖6-3所示。圖6-3步驟3(1)輸出結(jié)果步驟3(1)代碼如下:print(data.loc[(data['語文']>85)&(data['英語']>85)])輸出結(jié)果如圖6-4所示。圖6-4步驟3(2)輸出結(jié)果步驟4:添加新列。(1)生成新列“總分”,計(jì)算公式為:總分=數(shù)學(xué)+語文+英語+計(jì)算機(jī)。(2)將“地區(qū)”列拆分為兩列,分別命名為“省”、“城市”。步驟4(1)代碼如下:data['總分']=data['數(shù)學(xué)']+data['語文']+data['英語']+data['計(jì)算機(jī)']步驟4(2)代碼如下:data['省']=data['地區(qū)'].str.split('-',expand=True)[0]data['城市']=data['地區(qū)'].str.split('-',expand=True)[1]print(data.head())輸出結(jié)果如圖6-5所示。圖6-5步驟4輸出結(jié)果步驟5:數(shù)據(jù)排名。根據(jù)總分按照降序排名,如果總分相同,按照最小排名計(jì)算,并輸出“學(xué)號(hào)”、“總分”、“總分排名”的前5行,將排名結(jié)果存放在新列“總分排名”。步驟5代碼如下:data=data.sort_values(by='總分',ascending=False)data['總分排名']=data['總分'].rank(method='min',ascending=False)print(data[['學(xué)號(hào)','總分','總分排名']][:5])輸出結(jié)果如圖6-6所示。圖6-6步驟5輸出結(jié)果步驟6:數(shù)據(jù)分段。根據(jù)總分進(jìn)行分段,總分在300~最大總分為A,250~299為B,200~249為C,0~199以下為D,將排名結(jié)果存放在新列“總分等級(jí)”。步驟6代碼如下:data['總分等級(jí)']=pd.cut(data['總分'],bins=[0,199,249,299,data['總分'].max()],labels=['D','C','B','A'])print(data.head())輸出結(jié)果如圖6-7所示。圖6-7步驟6輸出結(jié)果步驟7:描述性統(tǒng)計(jì)分析(1)計(jì)算總分的平均分和中位數(shù)。(2)計(jì)算江蘇省四門學(xué)科的平均分。(3)統(tǒng)計(jì)總分不同等級(jí)比例,比例保留百分比兩位小數(shù)。步驟7(1)代碼如下:print("總分的平均值=%.2f"%data['總分'].mean())print("總分的中位數(shù)=%.2f"%data['總分'].median())輸出結(jié)果如圖6-8所示。圖6-8步驟7(1)輸出結(jié)果步驟7(2)代碼如下:data_loc=data.loc[data['省']=='江蘇']foriin['數(shù)學(xué)','語文','英語','計(jì)算機(jī)']:mean=data_loc[i].mean()print("江蘇省%s的平均分=%.2f"%(i,mean))輸出結(jié)果如圖6-9所示。圖6-9步驟7(2)輸出結(jié)果步驟7(3)代碼如下:count=data['總分等級(jí)'].value_counts(normalize=True,ascending=False)count=count.apply(lambdax:"%.2f%%"%(x*100))print("總分不同等級(jí)的比例為:\n",count)輸出結(jié)果如圖6-10所示。圖6-10步驟7(3)輸出結(jié)果步驟8:分類匯總。統(tǒng)計(jì)總分為C等級(jí)的學(xué)生的不同城市的總分平均分。步驟8代碼如下:data_loc=data.loc[data['總分等級(jí)']=='C']result2=data_loc.groupby(by='城市')['總分'].mean()result2=round(result2,2)print("總分等級(jí)為C等級(jí)的不同城市總分平均分為:\n",result2)輸出結(jié)果如圖6-11所示。圖6-11步驟8輸出結(jié)果四、結(jié)論1.從數(shù)據(jù)查詢分析的結(jié)果可以看出,語文和英語都大于85分的學(xué)生只有8條,占總體的比例不高。2.從數(shù)據(jù)排名分析的結(jié)果可以看出,320分可以排進(jìn)前40名,187分排在最后10名。3.從描述性統(tǒng)計(jì)分析的結(jié)果可以看出,總分的平均分和中位數(shù)較為接近,說明總分較為正常,兩端的極端值不是很多。4.從江蘇省學(xué)生的四科平均分的結(jié)果可以看出,數(shù)學(xué)和計(jì)算機(jī)較好。5.總分不同等級(jí)比例中,C最多,占了56.33%。6.總分等級(jí)為C的學(xué)生中,南京和成都的學(xué)生總分平均較高。6.2房產(chǎn)數(shù)據(jù)預(yù)處理與分析當(dāng)今時(shí)代,房價(jià)問題一直處于風(fēng)口浪尖,房價(jià)的上漲抑或下跌都牽動(dòng)著整個(gè)社會(huì)的利益,即便是政府出臺(tái)各種政策方針也只能是暫時(shí)抑制樓市的漲勢(shì),對(duì)于需要買房的人來說,除了關(guān)注這些變化和政策外,還有一個(gè)非常頭疼的問題,在哪里買房,房價(jià)怎樣。普通客戶會(huì)不?;ù罅烤滏溂摇簿涌偷确康禺a(chǎn)網(wǎng)站,借助他們展示的內(nèi)容進(jìn)行篩選,但因地區(qū)眾多,各個(gè)地段、房價(jià)差異的對(duì)比以及入手時(shí)機(jī)的把握,都得一個(gè)個(gè)去查閱與分析,非常麻煩。如果可以通過數(shù)據(jù)的爬取,再按照用戶希望的維度統(tǒng)計(jì)與分析,會(huì)讓數(shù)據(jù)變得清晰明了。本案例旨在對(duì)房產(chǎn)數(shù)據(jù)進(jìn)行預(yù)處理與分析,為剛需購房者提供有用信息。一、數(shù)據(jù)源本案例利用某爬蟲軟件爬取某房產(chǎn)網(wǎng)站中蘇州地區(qū)的房產(chǎn)數(shù)據(jù),數(shù)據(jù)文件為house.xlsx,如圖6-*所示。圖6-*數(shù)據(jù)源二、目標(biāo)1.數(shù)據(jù)爬取時(shí)缺失數(shù)據(jù)是常見的現(xiàn)象,通過某爬取軟件從網(wǎng)站爬取的數(shù)據(jù)時(shí),如果沒有爬取到的數(shù)據(jù)會(huì)返回“暫無數(shù)據(jù)”,這會(huì)影響后期的空值處理,將這些“暫無數(shù)據(jù)”轉(zhuǎn)換為空值,并統(tǒng)計(jì)各列的空值頻數(shù),查看缺失數(shù)據(jù)情況。2.數(shù)據(jù)爬取的數(shù)據(jù)往往是帶有單位的字符串,這也會(huì)影響后期的數(shù)據(jù)分析,所以需要將這些數(shù)去掉單位,再轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。如將字符串“均價(jià)”的40000元/m2轉(zhuǎn)換為數(shù)值40000。3.為了分析不同區(qū)的房產(chǎn)數(shù)據(jù),從地址中提取出區(qū)的數(shù)據(jù)。為了分析房齡的數(shù)據(jù),從建造年代中提取出房齡數(shù)據(jù)。4.篩選出區(qū)為“工業(yè)園”,均價(jià)在50000以下,容積率在1.5以下的房源數(shù)據(jù)。5.查詢房價(jià)最貴小區(qū)的前5名。6. 查詢停車位最少小區(qū)的前5名。7.統(tǒng)計(jì)所有數(shù)據(jù)的平均房價(jià)以及二手房總和數(shù)量。8.分析均價(jià)40000以上小區(qū)中,房源最多是哪個(gè)區(qū)。三、步驟步驟1:導(dǎo)入庫,設(shè)置參數(shù)。導(dǎo)入所需要的庫pandas,利用pd.set_option解除顯示寬度的顯示,設(shè)置數(shù)據(jù)對(duì)齊。步驟1代碼如下:importpandasaspdpd.set_option('display.width',None)pd.set_option('display.unicode.east_asian_width',True)步驟2:導(dǎo)入數(shù)據(jù)并查看。利用read_excel導(dǎo)入house.xlsx(house.xlsx存放在c:\data路徑中),將讀入的數(shù)據(jù)命名為data。查看data的行數(shù)、列數(shù)、列名以及數(shù)據(jù)的前5行。步驟2代碼如下:data=pd.read_excel("c:/data/house.xlsx")print("數(shù)據(jù)的行數(shù)=%d\n數(shù)據(jù)的列數(shù)=%d"%(data.shape[0],data.shape[1]))print("數(shù)據(jù)的所有列名為:\n",data.columns)print("數(shù)據(jù)的前5行為:\n",data.head())輸出結(jié)果如圖6-*所示。圖6-*步驟2輸出結(jié)果步驟3:數(shù)據(jù)空值處理。將數(shù)據(jù)中的“暫無數(shù)據(jù)”改為空值,統(tǒng)計(jì)出現(xiàn)空值的列及其空值數(shù)量,并按降序排序。步驟3代碼如下:importnumpyasnpdata=data.replace('暫無數(shù)據(jù)',np.nan)nun_result=data.isnull().sum()nun_result=nun_result[nun_result>0]nun_result=nun_result.sort_values(ascending=False)print("各列的空值數(shù)量為:\n",nun_result)輸出結(jié)果如圖6-*所示。圖6-*步驟3輸出結(jié)果步驟4:數(shù)據(jù)單位處理。將所有數(shù)據(jù)的單位去掉,并轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。如將“均價(jià)”列中的單位去掉,并將剩下的數(shù)據(jù)轉(zhuǎn)換為數(shù)值。步驟4代碼如下:data['均價(jià)']=data['均價(jià)'].str.replace('元/m2','')data['物業(yè)費(fèi)']=data['物業(yè)費(fèi)'].str.replace('元/㎡/月','')data['總建面積']=data['總建面積'].str.replace('m2','')data['總戶數(shù)']=data['總戶數(shù)'].str.replace('戶','')data['二手房房源數(shù)']=data['二手房房源數(shù)'].str.replace('套','')data['租房源數(shù)']=data['租房源數(shù)'].str.replace('套','')data['建造年代']=data['建造年代'].str.replace('年','')columns_list=['均價(jià)','物業(yè)費(fèi)','總建面積','停車位','二手房房源數(shù)','租房源數(shù)','建造年代','容積率']print(data.head())forcolumnincolumns_list:data[column]=data[column].astype("float")輸出結(jié)果如圖6-*所示。圖6-*步驟4輸出結(jié)果步驟5:添加新列。(1)將“地址”列拆分為3個(gè)部分,第1個(gè)部分生成新列“區(qū)”。(2)生成新列“房齡”,“房齡”列計(jì)算公式為:房齡=當(dāng)前年份(2020)-建造年代。步驟5(1)代碼如下:data['區(qū)']=data['地址'].str.split('-',expand=True)[0]print(data[['地址','區(qū)']][:5])輸出結(jié)果如圖6-*所示。圖6-*步驟5(1)輸出結(jié)果步驟5(2)代碼如下:data['房齡']=2020-data['建造年代']print(data[['建造年代','房齡']][:5])輸出結(jié)果如圖6-*所示。圖6-*步驟5(2)輸出結(jié)果步驟6:數(shù)據(jù)篩選。篩選出區(qū)為“工業(yè)園”,均價(jià)在50000以下,容積率在1.5以下的房源數(shù)據(jù)。步驟6代碼如下:data_loc=data.loc[(data['區(qū)']=='工業(yè)園')&(data['均價(jià)']<50000)&(data['容積率']<1.5)]print(data_loc[['小區(qū)名稱','區(qū)','均價(jià)','容積率']])輸出結(jié)果如圖6-*所示。圖6-*步驟6輸出結(jié)果步驟7:數(shù)據(jù)排序。(1)按照“均價(jià)”降序排序,并輸出“小區(qū)名稱”、“區(qū)”、“均價(jià)”的前5條數(shù)據(jù)。(2)按照“停車位”升序排序,并輸出“小區(qū)名稱”、“區(qū)”、“停車位”的前5條數(shù)據(jù)。步驟7(1)代碼如下:sort1=data.sort_values(by='均價(jià)',ascending=False)sort1=sort1[['小區(qū)名稱','區(qū)','均價(jià)']][:5]print(sort1)輸出結(jié)果如圖6-*所示。步驟7(2)代碼如下:sort2=data.sort_values(by='停車位',ascending=True)sort2=sort2[['小區(qū)名稱','區(qū)','停車位']][:5]print(sort2)輸出結(jié)果如圖7-*所示。圖6-*步驟7輸出結(jié)果步驟8:描述性統(tǒng)計(jì)分析。(1)計(jì)算所有數(shù)據(jù)的平均房價(jià)、二手房總和。(2)統(tǒng)計(jì)均價(jià)大于40000的數(shù)據(jù)中不同區(qū)的頻數(shù)。步驟8(1)代碼如下:mean=data['均價(jià)'].mean()mean=round(mean,0)sum=data['二手房房源數(shù)'].sum()print("房屋總均價(jià)為=",mean)print("二手房總房源數(shù)=",sum)輸出結(jié)果如圖6-*所示。圖6-*步驟8(1)輸出結(jié)果步驟8(2)代碼如下:data_loc=data.loc[data['均價(jià)']>40000]count=data_loc['區(qū)'].value_counts(ascending=False)print("均價(jià)40000以上小區(qū)的各區(qū)頻數(shù)統(tǒng)計(jì)結(jié)果為:\n",count)輸出結(jié)果如圖6-*所示。圖6-*步驟8(2)輸出結(jié)果四、結(jié)論1.工業(yè)園區(qū)中,均價(jià)為50000以下,容積率在1.5以下的房源數(shù)據(jù)包括:蘇州桃花源、新城花園。2.房價(jià)最貴小區(qū)的前5名為:湖濱四季、九龍倉國賓1號(hào)(別墅)、和風(fēng)雅致、金雞湖花園、拙政別墅。3.停車位最少小區(qū)的前5名為:姑蘇院子、羽絨新村、南環(huán)路3-1號(hào)小區(qū)、花溪苑三區(qū)、拙政別墅。4.平均房價(jià)為27099元,二手房總房源數(shù)為18525戶。5.均價(jià)40000以上小區(qū)中,工業(yè)園區(qū)最多。6.3餐飲數(shù)據(jù)分析與可視化餐飲行業(yè)是一個(gè)歷史悠久的行業(yè),在每一位經(jīng)理的腦袋里,都無時(shí)不刻不在盤算著門店的運(yùn)營情況,但絕大部分只把情況存在存在腦海里,這也是為什么在餐飲行業(yè)里,一直會(huì)聽到這樣的困惑:“一家店盈利,三家店打平,再開下去就虧了”。只憑一人的腦力,很難計(jì)算統(tǒng)籌如此多門店的利潤。一、數(shù)據(jù)源不同視角可能會(huì)得到不同答案,為了能全面了解和分析經(jīng)營情況,可以對(duì)菜品、就餐人數(shù)、銷售金額等多種分析視角進(jìn)行分析。本案例以某餐飲店2019年7月數(shù)據(jù)為例,對(duì)其進(jìn)行數(shù)據(jù)分析與可視化,數(shù)據(jù)文件為如圖6-23所示。圖6-23數(shù)據(jù)源其中,各個(gè)字段的意義如下:info_id:表示訂單編號(hào)。name:表示訂餐客戶姓名。number_consumers:表示就餐人數(shù)。dining_table_id:表示桌號(hào)。dishes_count:表示菜品數(shù)量。payable:表示消費(fèi)金額。start_time:表示下單時(shí)間。lock_time:表示結(jié)賬時(shí)間。order_status:表示訂單狀態(tài),“1”表示訂單結(jié)算成功,“0”表示缺少結(jié)賬時(shí)間,即“0”表示沒有結(jié)賬成功。二、目標(biāo)1.數(shù)據(jù)中有些數(shù)據(jù)缺少結(jié)賬時(shí)間,將這些數(shù)據(jù)去除。2.為了分析就餐時(shí)間,從下單時(shí)間和結(jié)賬時(shí)間中提取就餐時(shí)間。3.統(tǒng)計(jì)雙休日訂單占比。4.統(tǒng)計(jì)大桌(就餐人數(shù)在8到10人之間)訂單占比。5.計(jì)算平均銷售金額、平均就餐人數(shù)、平均菜品數(shù)量、平均就餐時(shí)間等總體指標(biāo)。6.統(tǒng)計(jì)不同就餐人數(shù)的訂單數(shù)量頻數(shù),并加以比較,分析哪些就餐人數(shù)的訂單較多。7.分析不同星期和不同就餐人數(shù)對(duì)于銷售金額的影響。8.統(tǒng)計(jì)消費(fèi)金額總和排名最高前5個(gè)客戶。9.計(jì)算周一到周日的菜品數(shù)量,并分析最高出現(xiàn)在周幾。10.計(jì)算周一到周日的消費(fèi)金額平均值。11.根據(jù)不同就餐人數(shù)統(tǒng)計(jì)頻數(shù)繪制柱形圖,分析哪些就餐人數(shù)的出現(xiàn)的情況較多。12.根據(jù)周一到周日的消費(fèi)金額(“payable”)的平均值繪制折線圖。三、步驟步驟1:導(dǎo)入庫,設(shè)置參數(shù)。(1)導(dǎo)入所需要的庫pandas、matplotlib.pyplot。(2)利用pd.set_option解除顯示寬度的顯示,設(shè)置數(shù)據(jù)對(duì)齊。(3)利用rcParams設(shè)置相關(guān)參數(shù),將顯示字體設(shè)置為黑體,字體大小設(shè)置為15。步驟1代碼如下:importpandasaspdimportmatplotlib.pyplotaspltpd.set_option('display.width',None)pd.set_option('display.unicode.east_asian_width',True)plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['font.size']=15步驟2:導(dǎo)入數(shù)據(jù)并查看。利用read_csv導(dǎo)入meal_info.csv(meal_info.csv存放在c:\data路徑中),將讀入的數(shù)據(jù)命名為data。查看data的行數(shù)與列數(shù)以及數(shù)據(jù)的前5行。步驟2代碼如下:data=pd.read_csv("c:\data\meal_info.csv",encoding='gbk')print("數(shù)據(jù)的行數(shù)=%d\n數(shù)據(jù)的列數(shù)=%d"%(data.shape[0],data.shape[1]))print("數(shù)據(jù)的前5行為:\n",data.head())輸出結(jié)果如圖6-24所示。圖6-24步驟2輸出結(jié)果步驟3:數(shù)據(jù)去空。(1)查看含有空值的列名及對(duì)應(yīng)的空值個(gè)數(shù)。(2)刪除沒有消費(fèi)金額或沒有結(jié)賬時(shí)間的數(shù)據(jù),“payable”和“l(fā)ock_time”兩列中均出現(xiàn)空值的行(即),結(jié)果在原數(shù)據(jù)中顯示,并查看數(shù)據(jù)的行數(shù)。步驟3代碼如下:null_result=data.isnull().sum()null_result=null_result.loc[null_result>0]null_result=null_result.sort_values(ascending=False)print("數(shù)據(jù)空值情況為:\n",null_result)data=data.dropna(axis=0,subset=['payable','lock_time'],how='any')print("去空后的數(shù)據(jù)的行數(shù)=",data.shape[0])輸出結(jié)果如圖6-25所示。圖6-25步驟3輸出結(jié)果步驟4:時(shí)間序列處理。(1)將下單時(shí)間(“start_time”)和結(jié)賬時(shí)間(lock_time)轉(zhuǎn)換成時(shí)間格式。(2)生成新列“meal_time”,表示就餐時(shí)間,其公式為:meal_time=lock_timestart_time。(3)從開始時(shí)間(“start_time”)中抽取出“星期”,生成新變量“weekday”(“星期”)。步驟4(1)代碼如下:data['start_time']=pd.to_datetime(data['start_time'])data['lock_time']=pd.to_datetime(data['lock_time'])步驟4(2)代碼如下:data['deal_time']=data['lock_time']-data['start_time']步驟4(3)代碼如下:data['weekday']=data['start_time'].dt.weekday_nameprint("數(shù)據(jù)的前5行為:\n",data.head())輸出結(jié)果如圖6-26所示。圖6-26步驟4輸出結(jié)果步驟5:數(shù)據(jù)篩選。(1)篩選雙休日的訂單數(shù)據(jù)(Saturday和Sunday),計(jì)算篩選結(jié)果的行數(shù),并計(jì)算其比例。(2)篩選就餐人數(shù)在8到10人之間的訂單數(shù)據(jù),計(jì)算篩選結(jié)果的行數(shù),并計(jì)算其比例。步驟5(1)代碼如下:loc_result1=data.loc[(data['weekday']=='Saturday')|(data['weekday']=='Sunday')]print("雙休日的訂單數(shù)據(jù)的比例為:%.2f%%"%(loc_result1.shape[0]/data.shape[0]*100))步驟5(2)代碼如下:loc_result2=data.loc[(data['number_consumers']>=8)&(data['number_consumers']<=10)]print("就餐人數(shù)在8到10人之間的訂單數(shù)據(jù)的比例為:%.2f%%"%(loc_result2.shape[0]/data.shape[0]*100))輸出結(jié)果如圖6-27所示。圖6-27步驟5輸出結(jié)果步驟6:描述性統(tǒng)計(jì)分析。(1)計(jì)算平均銷售金額、平均就餐人數(shù)、平均菜品數(shù)量、平均就餐時(shí)間。(2)統(tǒng)計(jì)不同就餐人數(shù)的訂單數(shù)量頻數(shù),并按降序排序。步驟6(1)代碼如下:pay_mean=round(data['payable'].mean(),2)con_mean=round(data['number_consumers'].mean(),2)dish_mean=round(data['dishes_count'].mean(),2)time_mean=data['deal_time'].mean()print("平均銷售金額為:",pay_mean)print("平均就餐人數(shù)為:",con_mean)print("平均菜品數(shù)量為:",dish_mean)print("平均就餐時(shí)間為:",time_mean)輸出結(jié)果如圖6-28所示。圖6-28步驟6(1)輸出結(jié)果步驟6(2)代碼如下:count_result=data['number_consumers'].value_counts(ascending=False)print("不同就餐人數(shù)的訂單數(shù)量頻數(shù):\n",count_result)輸出結(jié)果如圖6-29所示。圖6-29步驟6(2)輸出結(jié)果步驟7:交叉透視表分析。(1)制作數(shù)據(jù)交叉表,統(tǒng)計(jì)不同星期的不同就餐人數(shù)的頻數(shù)。(2)制作數(shù)據(jù)透視表,統(tǒng)計(jì)不同星期不同就餐人數(shù)的銷售金額平均值。步驟7(1)代碼如下:tab_result1=pd.crosstab(index=data['number_consumers'],columns=data['weekday'],margins=True)print("不同星期的不同就餐人數(shù)的數(shù)據(jù)交叉表為:\n",tab_result1)輸出結(jié)果如圖6-30所示。圖6-30步驟7(1)輸出結(jié)果步驟7(2)代碼如下:importnumpyasnptab_result2=pd.pivot_table(data,index='number_consumers',columns='weekday',values='payable',aggfunc=np.mean,margins=True)tab_result2=round(tab_result2,2)print("不同星期的不同就餐人數(shù)的銷售金額的平均值的數(shù)據(jù)透視表為:\n",tab_result2)輸出結(jié)果如圖6-31所示。圖6-31步驟7(2)輸出結(jié)果步驟8:分類匯總。(1)按客戶姓名統(tǒng)計(jì)消費(fèi)金額的和,查看消費(fèi)金額總和排名最高前5個(gè)客戶。(2)按星期統(tǒng)計(jì)菜品數(shù)量的和,按降序方式查看不同星期菜品數(shù)量和。(3)按星期統(tǒng)計(jì)消費(fèi)金額的平均值,查看不同星期的消費(fèi)金額平均值,結(jié)果四舍五入保留整數(shù)。步驟8(1)代碼如下:group_result1=data.groupby(by='name')['payable'].sum()group_result1=group_result1.sort_values(ascending=False)print("消費(fèi)金額總和排名最高前10個(gè)客戶",group_result1.head())輸出結(jié)果如圖6-32所示。圖6-32步驟8(1)輸出結(jié)果步驟8(2)代碼如下:group_result2=data.groupby(by='weekday')['dishes_count'].sum()group_result2=group_result2.sort_values(ascending=False)print("不同星期菜品數(shù)量和",group_result2)輸出結(jié)果如圖6-33所示。圖6-33步驟8(2)輸出結(jié)果步驟8(3)代碼如下:group_result3=data.groupby(by='weekday')['payable'].mean()group_result3=round(group_result3,0)print("不同星期的消費(fèi)金額平均值",group_result3)輸出結(jié)果如圖6-34所示。圖6-34步驟8(3)輸出結(jié)果步驟9:繪制柱形圖。(1)統(tǒng)計(jì)不同就餐人數(shù)統(tǒng)計(jì)頻數(shù)。(2)根據(jù)不同就餐人數(shù)統(tǒng)計(jì)頻數(shù)繪制柱形圖,柱形顏色為天藍(lán)色,柱形邊緣色未棕色,柱形寬度為0.3。圖標(biāo)標(biāo)題設(shè)為“不同就餐人數(shù)頻數(shù)統(tǒng)計(jì)”,x軸名稱設(shè)為“就餐人數(shù)”,y軸名稱設(shè)為“統(tǒng)計(jì)頻數(shù)”。步驟9代碼如下:result1=data['number_consumers'].value_counts(ascending=False)x=result1.indexheight=result1width=0.3plt.bar(x,height,width,color='skyblue',edgecolor='brown')plt.title("不同就餐人數(shù)頻數(shù)統(tǒng)計(jì)",color='r')plt.show()輸出結(jié)果如圖6-35所示。圖6-35步驟9輸出結(jié)果步驟10:繪制折線圖。(1)將繪圖窗口設(shè)為(8,8),統(tǒng)計(jì)周一到周日的消費(fèi)金額(“payable”)的平均值,并保留整數(shù)。(2)繪圖樣式采用“ggplot”,根據(jù)周一到周日的消費(fèi)金額(“payable”)的平均值繪制折線圖,線型的顏色為紅色。圖標(biāo)標(biāo)題設(shè)為“周一到周日平均消費(fèi)金額”,x軸名稱設(shè)為“星期”,y軸名稱設(shè)為“平均消費(fèi)金額”,并添加棕色數(shù)據(jù)標(biāo)簽。步驟10(1)代碼如下:plt.rcParams['figure.figsize']=(8,8)result2=data.groupby(by='weekday')['payable'].mean()result2=round(group_result2,0)步驟10(2)代碼如下:plt.style.use('ggplot')result2=result2.reindex(['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'])x=result2.indexy=result2plt.plot(x,y)plt.title("周一到周日平均消費(fèi)金額",color='r',size=25)fori,j,kinzip(x,y,y):plt.text(i,j+2,j,color='brown',size=16)plt.show()輸出結(jié)果如圖6-36所示。圖6-36步驟10輸出結(jié)果四、結(jié)論1.從數(shù)據(jù)空值統(tǒng)計(jì)的分析結(jié)果中可以看出,在945條數(shù)據(jù),缺少消費(fèi)金額的數(shù)據(jù)有18條。2.從數(shù)據(jù)篩選的分析結(jié)果中可以看出,雙休日訂單數(shù)據(jù)占比較多,該比例為57.95%。3.就餐人數(shù)在8-10人占比較少,該比例為24.18%,所以可適當(dāng)減少8-10人桌的數(shù)量。4.從描述性統(tǒng)計(jì)的分析結(jié)果中可以看出,平均銷售金額為492.54元,平均就餐人數(shù)為5.21人,平均菜品數(shù)量為11.78個(gè),平均就餐時(shí)間為49分鐘。根據(jù)平均就餐時(shí)間可以預(yù)估出翻桌的頻率。5.就餐人數(shù)為6人的訂單數(shù)量最多,其次是2人、8人和4人,均超過了160個(gè)訂單,遠(yuǎn)遠(yuǎn)大于其他就餐人數(shù)的訂單。6.從分類匯總的分析結(jié)果中可以看出,銷售金額排名前5的重點(diǎn)客戶為習(xí)有汐、于江濤、卓永梅、王錦鵬、王柯萌。可以針對(duì)這些客戶進(jìn)行針對(duì)性營銷。7.從不同星期和不同就餐人數(shù)的交叉表可以看出,周六和周日的6人和8人較多。8.從分類匯總的分析結(jié)果中可以看出,周一到周日的菜品數(shù)量和為:932、735、967、755、874、3375、3179,所以周六或周日菜品數(shù)量大約是平時(shí)的3-4倍。9.從柱形圖的結(jié)果中看出,偶數(shù)就餐人數(shù)情況要遠(yuǎn)遠(yuǎn)高于奇數(shù)就餐人數(shù)的情況,所以在設(shè)計(jì)不同人數(shù)套餐時(shí),需要考慮到這一點(diǎn)。10.從周一到周日的消費(fèi)金額的平均值折線圖來看,整體上是向上的,但是也有波動(dòng)。6.4超市數(shù)據(jù)分析與可視化隨著互聯(lián)網(wǎng)與大數(shù)據(jù)的發(fā)展,電商楊業(yè)得到飛速發(fā)展,每天產(chǎn)生成千上萬的數(shù)據(jù),挖掘出其中的價(jià)值尤為重要。在電商超市數(shù)據(jù)分析中,分析的內(nèi)容主要包括三個(gè)方面:為高管提供盈利性分析,為運(yùn)營部門提供產(chǎn)品分析,為銷售部門提供客戶分析。一、數(shù)據(jù)源本案例包括三個(gè)數(shù)據(jù)集:supermarket.csv、category.xlsx、region.txt。1.supermarket.csvsupermarket.csv數(shù)據(jù)集包括字段:利潤率、產(chǎn)品ID、產(chǎn)品名稱、利潤、發(fā)貨日期、國家、城市、子類別、客戶ID、客戶名稱、折扣、數(shù)量、省、細(xì)分、訂單ID、訂單日期、郵寄方式、銷售額。數(shù)據(jù)源1如圖6-37所示。圖6-37數(shù)據(jù)源1(部分)2.region.txtregion.txt數(shù)據(jù)集包括字段:地區(qū)、省。數(shù)據(jù)源2如圖6-38所示。圖6-38數(shù)據(jù)源2(部分)3.category.xlsxcategory.xlsx數(shù)據(jù)集包括字段:子類別、類別。數(shù)據(jù)源3如圖6-39所示。圖6-39數(shù)據(jù)源3(部分)二、目標(biāo)1.統(tǒng)計(jì)銷售金額排名的前5的產(chǎn)品,找出熱銷商品。2.計(jì)算所有年份的利潤,分析利潤變化趨勢(shì)。3.計(jì)算2015-2018年的利潤環(huán)比。4.計(jì)算2016年中南地區(qū)辦公用品的平均每月利潤。5.分析不同地區(qū)的不同類別對(duì)于銷售金額的影響。6.根據(jù)不同地區(qū)的平均銷售額繪制條形圖,分析哪些地區(qū)的平均銷售額較高。7.根據(jù)不同月份的平均銷售額、平均利潤、平均利潤率,在同一個(gè)繪圖窗口中繪制多子圖柱形圖與折線圖,并分析哪些月份銷售和利潤情況較好。8.根據(jù)不同郵寄方式的利潤繪制環(huán)形圖,并分析哪些郵寄方式的利潤和較高。三、步驟步驟1:導(dǎo)入庫,設(shè)置參數(shù)。(1)導(dǎo)入所需要的庫pandas、numpy、matplotlib.pyplot。(2)利用pd.set_option解除顯示寬度的顯示,設(shè)置數(shù)據(jù)對(duì)齊。(3)利用rcParams設(shè)置相關(guān)參數(shù),將顯示字體設(shè)置為黑體,字體大小設(shè)置為15。步驟1代碼如下:importpandasaspdimportmatplotlib.pyplotaspltpd.set_option('display.unicode.east_asian_width',True)pd.set_option('display.width',None)plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['font.size']=15步驟2:讀入數(shù)據(jù),合并數(shù)據(jù),顯示數(shù)據(jù)形狀。(1)導(dǎo)入超市的銷售數(shù)據(jù)supermarket.csv、地區(qū)分布數(shù)據(jù)region.txt、商品類別數(shù)據(jù)category.xlsx(三個(gè)文件均存放在c:\data路徑中),將導(dǎo)入的數(shù)據(jù)命名為data1、data2、data3。其中,region.txt文件的分隔符是Tab,category.xlsx的數(shù)據(jù)在Sheet1工作表內(nèi)。(2)利用merge函數(shù)將data1、data2、data3三個(gè)數(shù)據(jù)按照合適的關(guān)鍵字進(jìn)行合并,合并方式為外連接,命名為data。(3)輸出data的行數(shù)、列數(shù)、列名以及前5行。步驟2(1)代碼如下:data1=pd.read_csv("c:/data/supermarket.csv")data2=pd.read_csv("c:/data/region.txt",sep='\t')data3=pd.read_excel("c:/data/category.xlsx",sheet_name='Sheet1')步驟2(2)代碼如下:data=pd.merge(data1,data2,how='outer',on='省')data=pd.merge(data,data3,how='outer',on='子類別')步驟2(3)代碼如下:print("數(shù)據(jù)的行數(shù)=%d\n數(shù)據(jù)的列數(shù)=%d"%(data.shape[0],data.shape[1]))print("數(shù)據(jù)的前5行為:\n",data.head())輸出結(jié)果如圖6-40所示。圖6-40步驟2輸出結(jié)果步驟3:數(shù)據(jù)預(yù)處理(1)將利潤率中%格式改為小數(shù)形式,如5%改為0.05。(2)刪除數(shù)據(jù)中“訂單ID”、“產(chǎn)品ID”、“客戶ID”三個(gè)字段相同數(shù)據(jù)的行,保留第一次出現(xiàn)的值。步驟3(1)代碼如下:print(data['利潤率'].head(3))data['利潤率']=data['利潤率'].apply(lambdax:x.replace("%",""))#去掉利潤率中的%data['利潤率']=data['利潤率'].astype("float")/100#將去掉%的數(shù)據(jù)再除以100print(data['利潤率'].head(3))輸出結(jié)果如圖6-41所示。圖6-41步驟3(1)輸出結(jié)果步驟3(2)代碼如下:data=data.drop_duplicates(subset=['訂單ID','產(chǎn)品ID','客戶ID'],keep='first')print("去重后的行數(shù)=",data.shape[0])輸出結(jié)果如圖6-42所示。圖6-42步驟3(2)輸出結(jié)果步驟4:時(shí)間序列處理(1)將發(fā)貨日期和訂單日期轉(zhuǎn)換為日期格式。(2)從開始時(shí)間(“訂單日期”)中分別抽取出年和月,并生成新變量“年”、“月”。步驟4(1)代碼如下:print(data[['發(fā)貨日期','訂單日期']].dtypes)data['發(fā)貨日期']=pd.to_datetime(data['發(fā)貨日期'])data['訂單日期']=pd.to_datetime(data['訂單日期'])print(data[['發(fā)貨日期','訂單日期']].dtypes)輸出結(jié)果如圖6-43所示。圖6-43步驟4輸出結(jié)果步驟4(2)代碼如下:data['年']=data['訂單日期'].dt.yeardata['月']=data['訂單日期'].dt.monthprint(data[['訂單日期','年','月']][:5])輸出結(jié)果如圖6-44所示。圖6-44步驟4輸出結(jié)果步驟5:描述性統(tǒng)計(jì)分析(1)統(tǒng)計(jì)銷售金額排名的前5的產(chǎn)品。(2)計(jì)算所有年份的利潤,并降序排序。(3)計(jì)算2016年中南地區(qū)辦公用品的平均每月利潤。步驟5(1)代碼如下:group_result1=data.groupby(by='產(chǎn)品名稱')['銷售額'].sum()group_result1=group_result1.sort_values(ascending=False)print("銷售金額排名的前5的產(chǎn)品:\n",group_result1.head())輸出結(jié)果如圖6-45所示。圖6-45步驟5(1)輸出結(jié)果步驟5(2)代碼如下:group_result2=data.groupby(by='年')['利潤'].sum()group_result2=group_result2.sort_values(ascending=False)print("每年的利潤為:\n",group_result2)輸出結(jié)果如圖6-46所示。圖6-46步驟5(2)輸出結(jié)果步驟5(3)代碼如下:loc_result=data.loc[(data['年']==2016)&(data['地區(qū)']=='中南')&(data['類別']=='辦公用品')]mean=loc_result['利潤'].sum()/12mean=round(mean,2)print("2016年中南地區(qū)辦公用品的平均每月利潤為:",mean)輸出結(jié)果如圖6-47所示。圖6-47步驟5(3)輸出結(jié)果步驟6:計(jì)算2015-2018年的利潤環(huán)比。步驟6代碼如下:years=group_result2.indexvalues=group_result2n=len(values)hb_list=[]foriinrange(n):ifi==0:hb=0else:hb=(values.iloc[i]-values.iloc[i-1])/values.iloc[i-1]print("%d年的環(huán)比=%.2f%%"%(years[i],hb*100))輸出結(jié)果如圖6-48所示。圖6-48步驟6輸出結(jié)果步驟7:交叉透視表分析(1)繪制不同地區(qū)的不同類別的訂單頻數(shù)的頻數(shù)交叉表。(2)繪制不同地區(qū)的不同類別的銷售額平均值的數(shù)據(jù)透視表。步驟7(1)和步驟7(2)代碼如下:importnumpyasnptab1=pd.crosstab(index=data['子類別'],columns=data['地區(qū)'])print("不同地區(qū)的不同類別的訂單頻數(shù)\n",tab1)tab2=pd.pivot_table(data,index='子類別',columns='地區(qū)',values='銷售額',aggfunc=np.mean)tab2=round(tab2,0)print("不同地區(qū)的不同類別的銷售額平均值\n",tab2)輸出結(jié)果如圖6-49和圖6-50所示。圖6-49步驟7(1)輸出結(jié)果圖6-50步驟7(2)輸出結(jié)果步驟8:繪制條形圖。將窗口大小設(shè)為(8,6),統(tǒng)計(jì)不同地區(qū)的平均銷售額。根據(jù)不同地區(qū)的平均銷售額繪制條形圖,條形的寬度為0.3,圖標(biāo)標(biāo)題設(shè)為“不同地區(qū)的平均銷售額”,添加銷售額總平均值作為輔助線,輔助線為紅色虛線。步驟8代碼如下:plt.rcParams['figure.figsize']=(8,6)result1=data.groupby(by='地區(qū)')['銷售額'].mean()rusult1_mean=data['銷售額'].mean()y=result1.indexwidth=result1hight=0.3plt.barh(y,width,hight)plt.title("不同類別的平均銷售額")plt.axvline(rusult1_mean,color='r',linestyle=':')plt.show()輸出結(jié)果如圖6-51所示。圖6-51步驟8輸出結(jié)果步驟9:繪制多子圖的柱形折線疊加圖(1)將窗口大小設(shè)為(10,8),創(chuàng)建3行1列子圖。(2)在3個(gè)子圖中,根據(jù)不同月份的平均銷售額、平均利潤、平均利潤率,繪制多子圖柱形圖與折線圖,其中橫坐標(biāo)為月份,縱坐標(biāo)分別為平均銷售額、平均利潤、平均利潤率,橫坐標(biāo)刻度為1到12,柱形圖的顏色為天藍(lán),折線圖的顏色為紅色虛線。步驟9(1)代碼如下:plt.rcParams['figure.figsize']=(10,8)fig,axes=plt.subplots(3,1)ax=axes.ravel()步驟9(2)代碼如下:y=['銷售額','利潤','利潤率']names=['平均銷售額','平均利潤','平均利潤率']fori,j,kinzip(range(3),y,names):result2=data.groupby(by='月')[j].mean()x=result2.indexy=result2ax[i].bar(x,y,color='skyblue')ax[i].plot(x,y,color='brown',linestyle='--')ax[i].set_ylabel(k)ax[i].set_xticks(np.arange(1,13))plt.show()輸出結(jié)果如圖6-52所示。圖6-52步驟9輸出結(jié)果步驟10:繪制環(huán)形圖。統(tǒng)計(jì)不同郵寄方式的利潤和,根據(jù)不同郵寄方式的利潤和繪制環(huán)形圖,內(nèi)部文本顏色大小設(shè)為深綠色、16,餅圖的外部文本顏色大小設(shè)為紅色、20,設(shè)置標(biāo)題為“不同郵政方式的利潤和”。步驟10代碼如下:result3=data.groupby(by='郵寄方式')['利潤'].sum()c=['darkorange','yellowgreen','skyblue','lightyellow']patches,text1,text2=plt.pie(x=result3,labels=result3.index,autopct='%.1f%%',colors=c,radius=1)foriintext1: i.set_size(20) i.set_color('red')foriintext2: i.set_size(16) i.set_color('darkgreen')plt.pie(x=[1],colors='w',radius=0.6)plt.title("不同郵政方式的利潤和",color='b')plt.show()輸出結(jié)果如圖6-53所示。圖6-53步驟10輸出結(jié)果三、結(jié)論1.從數(shù)據(jù)去重的分析結(jié)果中可以看出,“訂單ID”、“產(chǎn)品ID”、“客戶ID”三個(gè)字段相同數(shù)據(jù)的行很少,說明絕大部分的數(shù)據(jù)均是可用的。2.從數(shù)據(jù)描述性統(tǒng)計(jì)的分析結(jié)果中可以看出,銷售金額排名的前5的產(chǎn)品中有兩件產(chǎn)品是扶手椅,分別排名第2名和第5名。3.從2015到2018的利潤環(huán)比情況看,利潤是逐年遞增的,并且2016年、2017年、2018年與上一年的利潤環(huán)比分別為26.3%、32.28%、9.52%。4.從交叉透視表分析結(jié)果可以看出,銷量數(shù)量較多包括椅子(華東地區(qū)與中南地區(qū))、裝訂機(jī)(華東地區(qū)與中南地區(qū)),平均銷售金額較多包括桌子(華北地區(qū)、東北地區(qū)和中南地區(qū))、復(fù)印機(jī)(華北地區(qū))、器具(西北地區(qū)、東北地區(qū)與華北地區(qū))。說明一些商品雖然銷量大,但利潤卻不大。5.從條形圖的結(jié)果中可以看出,在所有地區(qū)中,西北和華北平均銷售額超過了總體平均銷售額,說明這個(gè)地區(qū)的銷售情況較好。6.從多子圖柱形折線疊加圖的結(jié)果中可以看出,1月、3月、8月、和12月銷售和利潤情況較好,其他月份較差。7.從環(huán)形圖的結(jié)果中可以看出,標(biāo)準(zhǔn)級(jí)的郵寄方式貢獻(xiàn)的利潤最大,占比達(dá)到58.7%。8.從不同郵寄方式的利潤環(huán)形圖可以看出,標(biāo)準(zhǔn)級(jí)的情況最好。作為清潔能源的太陽能相對(duì)煤炭石油等能源來說是可再生、無污染的,只要有太陽就有太陽能,所以太陽能的利用被很多國家列為重點(diǎn)開發(fā)項(xiàng)目。太陽能具有波動(dòng)性和間歇性的特性,太陽能電站的輸出功率受光伏板本體性能、氣象條件、運(yùn)行工況等多種因素影響,具有很強(qiáng)的隨機(jī)性,由此帶來的大規(guī)模并網(wǎng)困境嚴(yán)重制約著光伏發(fā)電的發(fā)展。因此挖掘光伏發(fā)電數(shù)據(jù)中的價(jià)值,對(duì)光伏數(shù)據(jù)進(jìn)行分析尤為重要。一、數(shù)據(jù)源分析本案例包括三個(gè)數(shù)據(jù)集:photovoltaic.csv、wind_direction.xlsx、wind_speed.txt。1.photovoltaic.csvID:表示記錄編號(hào)。板溫:表示光伏電池板背測溫度。現(xiàn)場溫度:表示光伏電站現(xiàn)場溫度。轉(zhuǎn)換效率A:表示數(shù)據(jù)采集點(diǎn)A處的光伏板轉(zhuǎn)換效率。轉(zhuǎn)換效率B:表示數(shù)據(jù)采集點(diǎn)B處的光伏板轉(zhuǎn)換效率。轉(zhuǎn)換效率C:表示數(shù)據(jù)采集點(diǎn)C處的光伏板轉(zhuǎn)換效率。電壓A:表示數(shù)據(jù)采集點(diǎn)A處匯流箱電壓值。電壓B:表示數(shù)據(jù)采集點(diǎn)B處匯流箱電壓值。電壓C:表示數(shù)據(jù)采集點(diǎn)C處匯流箱電壓值。電流A:表示采集點(diǎn)A處匯流箱電流值。電流B:表示采集點(diǎn)B處匯流箱電流值。電流C:表示采集點(diǎn)C處匯流箱電流值。功率A:表示采集點(diǎn)A處的功率Pa,P=UI。功率B:表示采集點(diǎn)B處的功率Pb,P=UI。功率C:表示采集點(diǎn)C處的功率Pc,P=UI。發(fā)電量:表示光伏電廠現(xiàn)場發(fā)電量。數(shù)據(jù)源1如圖6-54所示。圖6-54數(shù)據(jù)源1(部分)2.wind_direction.xlsxID:表示記錄編號(hào)。風(fēng)向:表示光伏電廠現(xiàn)場風(fēng)的來向。數(shù)據(jù)源2如圖6-55所示。圖6-55數(shù)據(jù)源2(部分)3.wind_speed.txtID:表示記錄編號(hào)。風(fēng)速:表示光伏電廠現(xiàn)場風(fēng)速測量值。數(shù)據(jù)源3如圖6-56所示。圖6-56數(shù)據(jù)源3(部分)二、目標(biāo)1.根據(jù)三個(gè)點(diǎn)A、B、C的轉(zhuǎn)換效率、電流、電壓、功率計(jì)算出綜合轉(zhuǎn)換效率、電流、電壓、功率。2.篩選出板溫在10到30之間,發(fā)電量排名前10對(duì)應(yīng)的發(fā)電量、板溫、光照強(qiáng)度、轉(zhuǎn)換效率、風(fēng)速,查看是否有一些因素可能對(duì)于發(fā)電量有影響作用。3.計(jì)算不同月份總發(fā)電量,分析哪些月份的總發(fā)電量較高。4.計(jì)算不同小時(shí)段的平均發(fā)電量,分析哪些小時(shí)段平均發(fā)電量最高。5.計(jì)算發(fā)電量與光照強(qiáng)度、轉(zhuǎn)換效率、板溫之間之間的相關(guān)系數(shù),分析哪些因素是發(fā)電量的主要因素。6.根據(jù)板溫繪制直方圖,查看板溫的數(shù)據(jù)分布。7.根據(jù)發(fā)電量和光照強(qiáng)度兩列數(shù)據(jù)繪制雙重折線圖,并查看其關(guān)系,因?yàn)閮闪袛?shù)據(jù)的數(shù)據(jù)量綱不同,可以先對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化再畫圖。8.將板溫進(jìn)行數(shù)據(jù)分段,再繪制段的餅圖,分析哪個(gè)板溫段占比做多。三、分析步驟步驟1:導(dǎo)入庫,設(shè)置參數(shù)。(1)導(dǎo)入所需要的庫pandas、numpy、matplotlib.pyplot。(2)利用pd.set_option解除顯示寬度的顯示,設(shè)置數(shù)據(jù)對(duì)齊。(3)利用rcParams設(shè)置相關(guān)參數(shù),將顯示字體設(shè)置為黑體,設(shè)置顯示負(fù)號(hào),字體大小設(shè)置為15。步驟1代碼如下:importpandasaspdimportmatplotlib.pyplotaspltpd.set_option('display.unicode.east_asian_width',True)pd.set_option('display.width',None)plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['axes.unicode_minus']=Falseplt.rcParams['font.size']=15步驟2:讀入數(shù)據(jù),合并數(shù)據(jù),顯示數(shù)據(jù)形狀。(1)導(dǎo)入光伏數(shù)據(jù)的photovoltaic.csv、wind_direction.xlsx、wind_speed.txt(三個(gè)文件均存放在c:\data路徑中),將導(dǎo)入的數(shù)據(jù)命名為data1、data2、data3。其中,wind_speed.txt文件的分隔符是Tab,wind_direction.xlsx的數(shù)據(jù)在Sheet1工作表內(nèi)。(2)利用merge函數(shù)將data1、data2、data3三個(gè)數(shù)據(jù)按照關(guān)鍵字段“ID”進(jìn)行合并,合并方式為內(nèi)連接,命名為data。(3)輸出data的行數(shù)、列數(shù)、列名以及前5行。步驟2(1)代碼如下:data1=pd.read_csv("c:/data/photovoltaic.csv")data2=pd.read_excel("c:/data/wind_direction.xlsx")data3=pd.read_csv("c:/data/wind_speed.txt",sep='\t')步驟2(2)代碼如下:data=pd.merge(data1,data2,on='ID')data=pd.merge(data,data3,on='ID')步驟2(3)代碼如下:print("數(shù)據(jù)的行數(shù)=%d\n數(shù)據(jù)的列數(shù)=%d"%(data.shape[0],data.shape[1]))print("數(shù)據(jù)的列名為:\n",data.columns)print("數(shù)據(jù)的前5行為:\n",data.head())輸出結(jié)果如圖6-57所示。圖6-57步驟2輸出結(jié)果步驟3:添加新列。(1)生成新列“轉(zhuǎn)換效率”,計(jì)算公式為:轉(zhuǎn)換效率=(轉(zhuǎn)換效率A+轉(zhuǎn)換效率B+轉(zhuǎn)換效率C)/3。(2)生成新列“電壓”,計(jì)算公式為:電壓=(電壓A+電壓B+電壓C)/3。(3)生成新列“電流”,計(jì)算公式為:電流=(電流A+電流B+電流C)/3。(4)生成新列“功率”,計(jì)算公式為:功率=(功率A+功率B+功率C)/3。步驟3代碼如下:data['轉(zhuǎn)換效率']=(data['轉(zhuǎn)換效率A']+data['轉(zhuǎn)換效率B']+data['轉(zhuǎn)換效率C'])/3data['電壓']=(data['電壓A']+data['電壓B']+data['電壓C'])/3data['電流']=(data['電流A']+data['電流B']+data['電流C'])/3data['功率']=(data['功率A']+data['功率B']+data['功率C'])/3print(data[['轉(zhuǎn)換效率','電壓','電流','功率']][:5])輸出結(jié)果如圖6-58所示。圖6-58步驟3輸出結(jié)果步驟4:時(shí)間序列處理(1)將“時(shí)間”列轉(zhuǎn)換為日期格式。(2)從“時(shí)間”列中分別抽取出月、日、小時(shí),并生成新變量“月”、“日”、“時(shí)”。步驟4(1)代碼如下:data['時(shí)間']=pd.to_datetime(data['時(shí)間'])步驟4(2)代碼如下:data['月']=data['時(shí)間'].dt.monthdata['日']=data['時(shí)間'].dt.daydata['時(shí)']=data['時(shí)間'].dt.hourprint(data[['月','日','時(shí)']][:5])輸出結(jié)果如圖6-59所示。圖6-59步驟4輸出結(jié)果步驟5:數(shù)據(jù)篩選。篩選出板溫在10到30之間,發(fā)電量排名前10對(duì)應(yīng)的發(fā)電量、板溫、光照強(qiáng)度、轉(zhuǎn)換效率、風(fēng)速。步驟5代碼如下:data_loc=data.loc[(data['板溫']>=10)&(data['板溫']<=30)]data_loc=round(data_loc.sort_values(by='發(fā)電量',ascending=False),1)print(data_loc[['發(fā)電量','板溫','光照強(qiáng)度','轉(zhuǎn)換效率','風(fēng)速']][:10])輸出結(jié)果如圖6-60所示。圖6-60步驟5輸出結(jié)果步驟6:描述性統(tǒng)計(jì)分析(1)計(jì)算不同月份發(fā)電量,并按降序排序。(2)計(jì)算不同小時(shí)段的平均發(fā)電量,并按降序排序。步驟6(1)代碼如下:group_result1=data.groupby(by='月')['發(fā)電量'].sum()group_result1=group_result1.sort_values(ascending=False)print("不同月份發(fā)電量:\n"
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年滄州職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫附答案
- 2026年廣東農(nóng)工商職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試模擬測試卷及答案1套
- 2026黑龍江大興安嶺地區(qū)加格達(dá)奇區(qū)城市建設(shè)綜合服務(wù)中心公益性崗位招聘4人筆試參考題庫及答案解析
- 2026福建省產(chǎn)業(yè)股權(quán)投資基金有限公司福建省產(chǎn)投私募基金管理有限公司招聘筆試備考試題及答案解析
- 2026年安順職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案
- 2026年心理測試年齡考試題庫參考答案
- 2026福建三明市三元區(qū)農(nóng)林集團(tuán)權(quán)屬企業(yè)公開招聘駕駛員面試筆試備考題庫及答案解析
- 2025-2026學(xué)年下學(xué)期云南技師學(xué)院健康與社會(huì)服務(wù)學(xué)院編制外教師招聘(2人)筆試參考題庫及答案解析
- 2025年齊齊哈爾市龍沙區(qū)湖濱街道公益性崗位招聘2人備考題庫附答案
- 2025年湖北供銷集團(tuán)有限公司出資企業(yè)公開招聘28名工作人員筆試備考試題附答案
- 虛擬電廠課件
- 部隊(duì)核生化防護(hù)基礎(chǔ)課件
- 醫(yī)療器械胰島素泵市場可行性分析報(bào)告
- 2025年《處方管理辦法》培訓(xùn)考核試題(附答案)
- 租金催繳管理辦法
- 種植業(yè)合作社賬務(wù)處理
- JJF 2266-2025血液融漿機(jī)校準(zhǔn)規(guī)范
- 公司兩權(quán)分離管理制度
- 紫砂陶制品行業(yè)深度研究分析報(bào)告(2024-2030版)
- 餐飲公司監(jiān)控管理制度
- 種雞免疫工作總結(jié)
評(píng)論
0/150
提交評(píng)論