Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第10章 實(shí)戰(zhàn)演練-租房數(shù)據(jù)統(tǒng)計(jì)分析_第1頁(yè)
Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第10章 實(shí)戰(zhàn)演練-租房數(shù)據(jù)統(tǒng)計(jì)分析_第2頁(yè)
Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第10章 實(shí)戰(zhàn)演練-租房數(shù)據(jù)統(tǒng)計(jì)分析_第3頁(yè)
Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第10章 實(shí)戰(zhàn)演練-租房數(shù)據(jù)統(tǒng)計(jì)分析_第4頁(yè)
Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第10章 實(shí)戰(zhàn)演練-租房數(shù)據(jù)統(tǒng)計(jì)分析_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第10章實(shí)戰(zhàn)演練——租房數(shù)據(jù)統(tǒng)計(jì)分析《Python數(shù)據(jù)分析與應(yīng)用:從數(shù)據(jù)獲取到可視化(第2版)》學(xué)習(xí)目標(biāo)/Target

掌握Pandas讀寫(xiě)功能,能夠熟練地從文件中讀取數(shù)據(jù)

掌握重復(fù)值的檢測(cè)與處理方式,能夠檢測(cè)與刪除重復(fù)值

掌握數(shù)據(jù)類(lèi)型的轉(zhuǎn)換方式,能夠根據(jù)需要轉(zhuǎn)換數(shù)據(jù)的類(lèi)型

掌握Matplotlib的基本使用,能夠繪制柱形圖、折線圖和餅圖章節(jié)概述/Summary隨著中國(guó)經(jīng)濟(jì)的快速發(fā)展,北京市的資源和就業(yè)機(jī)會(huì)吸引了很多外來(lái)人口,使北京市逐漸成為中國(guó)人口密集的城市之一。本章將以北京市某年的租房數(shù)據(jù)為例,運(yùn)用前面章節(jié)所學(xué)知識(shí)完整呈現(xiàn)數(shù)據(jù)處理、分析及可視化的過(guò)程。目錄/Contents01數(shù)據(jù)收集02數(shù)據(jù)處理03數(shù)據(jù)分析與展現(xiàn)數(shù)據(jù)收集10.110.1

數(shù)據(jù)收集目前網(wǎng)絡(luò)上有很多的租房平臺(tái),比如自如、愛(ài)屋吉屋、房天下、鏈家等,其中鏈家是目前市場(chǎng)占有率最高的公司,給用戶(hù)提供了可靠的房源信息。10.1

數(shù)據(jù)收集我們采集了鏈家網(wǎng)站發(fā)布的租房信息,并將數(shù)據(jù)保存在lianjia_houses.csv文件中。鏈家官網(wǎng)上并沒(méi)有提供平谷、懷柔、密云、延慶等偏遠(yuǎn)地區(qū)的租房數(shù)據(jù),所以本案例的分析不會(huì)涉及到這四個(gè)區(qū)。數(shù)據(jù)來(lái)源10.1

數(shù)據(jù)收集讀取房源數(shù)據(jù)使用read_csv()函數(shù)從lianjia_houses.csv文件讀取房源數(shù)據(jù)。importnumpyasnpimportpandasaspdfile_data=

pd.read_csv(r'C:\Users\itcast\Desktop\lianjia_houses.csv',

encoding='gbk')file_data.head()10.1

數(shù)據(jù)收集查看摘要信息使用info()方法查看file_data對(duì)象的摘要信息。file_()數(shù)據(jù)處理10.210.2.1

重復(fù)值檢測(cè)與處理盡管租房數(shù)據(jù)整體是比較規(guī)整的,但或多或少會(huì)存在一些問(wèn)題,不能直接用做數(shù)據(jù)分析。為此,在進(jìn)行分析前我們需要對(duì)租房數(shù)據(jù)進(jìn)行一系列的檢測(cè)與處理,提高數(shù)據(jù)的質(zhì)量。10.2.1

重復(fù)值檢測(cè)與處理檢測(cè)重復(fù)值如果希望知道租房數(shù)據(jù)中是否存在重復(fù)值,則可以通過(guò)duplicated()方法檢測(cè)。使用duplicated()方法對(duì)租房數(shù)據(jù)進(jìn)行檢測(cè),只要有重復(fù)值,就會(huì)把它所在行的值映射為T(mén)rue。dup_value=file_data.duplicated()file_data[dup_value==True]10.2.1

重復(fù)值檢測(cè)與處理刪除重復(fù)值使用drop_duplicates()方法刪除租房數(shù)據(jù)中的重復(fù)值,并重置行索引。file_data=file_data.drop_duplicates(ignore_index=True)file_data10.2.2

數(shù)據(jù)類(lèi)型轉(zhuǎn)換在這套租房數(shù)據(jù)中,“面積(㎡)”一列的數(shù)據(jù)里面有中文字符“平米”,不能直接參與計(jì)算。為了方便后續(xù)對(duì)“面積(㎡)”一列的數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算,我們需要將“面積(㎡)”一列數(shù)據(jù)的類(lèi)型轉(zhuǎn)換為數(shù)字類(lèi)型。10.2.2

數(shù)據(jù)類(lèi)型轉(zhuǎn)換轉(zhuǎn)換面積列數(shù)據(jù)的類(lèi)型獲取“面積(㎡)”一列的數(shù)據(jù),將這列數(shù)據(jù)末尾的中文字符“平米”去掉,并通過(guò)astype()方法將去掉后的數(shù)據(jù)轉(zhuǎn)換為float64類(lèi)型。new_arr=np.array([])area_data=file_data['面積(㎡)'].valuesforiinarea_data:new_arr=np.append(new_arr,i[:-2])new_arr=new_arr.astype(np.float64)file_data.loc[:,'面積(㎡)']=new_arrfile_data.tail()10.2.2

數(shù)據(jù)類(lèi)型轉(zhuǎn)換“戶(hù)型”一列數(shù)據(jù)顯示的格式不是十分統(tǒng)一,大部分?jǐn)?shù)據(jù)顯示的是“*室*廳”“*室*衛(wèi)”,個(gè)別數(shù)據(jù)顯示的是“*房間*衛(wèi)”。為了方便用戶(hù)后期統(tǒng)計(jì)戶(hù)型的數(shù)量,這里會(huì)將“房間”替換成“室”,以保證數(shù)據(jù)的一致性。10.2.2

數(shù)據(jù)類(lèi)型轉(zhuǎn)換統(tǒng)一戶(hù)型列數(shù)據(jù)的格式獲取“戶(hù)型”一列的數(shù)據(jù),遍歷每個(gè)數(shù)據(jù),使用replace()方法將數(shù)據(jù)的“房間”替換為“室”。housetype_data=file_data['戶(hù)型']temp_list=[]foriinhousetype_data:new_info=i.replace('房間','室')temp_list.append(new_info)file_data.loc[:,'戶(hù)型']=temp_listfile_data.tail()數(shù)據(jù)分析與展現(xiàn)10.310.3.1

房源數(shù)量分析實(shí)現(xiàn)思路如果希望統(tǒng)計(jì)北京市各區(qū)(平谷、懷柔、密云、延慶等偏遠(yuǎn)地區(qū)除外)在租房源的數(shù)量,則需要先將租房數(shù)據(jù)按照“區(qū)域”一列進(jìn)行分組,再統(tǒng)計(jì)每個(gè)分組包含數(shù)據(jù)的總數(shù)量。10.3.1

房源數(shù)量分析創(chuàng)建保存數(shù)量的對(duì)象為了便于用戶(hù)只查看跟“區(qū)域”與“數(shù)量”有關(guān)的數(shù)據(jù),這里創(chuàng)建一個(gè)DataFrame對(duì)象

,通過(guò)該對(duì)象保存后面計(jì)算的各區(qū)的總數(shù)量。new_df=pd.DataFrame({'區(qū)域':file_data['區(qū)域'].unique(),

'數(shù)量':[0]*13})new_df此時(shí)數(shù)量一列的值都是010.3.1

房源數(shù)量分析按區(qū)域分組統(tǒng)計(jì)數(shù)量通過(guò)groupby()方法將file_data對(duì)象按照“區(qū)域”一列進(jìn)行分組,使用count()方法統(tǒng)計(jì)每個(gè)分組包含數(shù)據(jù)的總數(shù)量,并將數(shù)量按照從大到小的順序進(jìn)行排列。#按“區(qū)域”列分組,并統(tǒng)計(jì)每個(gè)分組的數(shù)量groupy_area=file_data.groupby(by='區(qū)域').count()new_df['數(shù)量']=groupy_area.valuesnew_df=new_df.sort_values(by=['數(shù)量'],ascending=False)new_df10.3.1

房源數(shù)量分析繪制柱形圖使用Matplotlib繪制一張柱形圖,通過(guò)柱形圖反映北京市各區(qū)在租房源的數(shù)量。importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']house_region=new_df['區(qū)域']house_count=new_df['數(shù)量']x=np.arange(house_region.values.size)bar_rect=plt.bar(x,house_count,

tick_label=house_region.values.tolist(),

width=0.5,color='lightcoral')...plt.show()10.3.2

戶(hù)型數(shù)量分析實(shí)現(xiàn)思路如果希望統(tǒng)計(jì)北京市各種戶(hù)型在租房源的數(shù)量,則需要先將租房數(shù)據(jù)按照“戶(hù)型”一列進(jìn)行分組,再統(tǒng)計(jì)每個(gè)分組包含數(shù)據(jù)的總數(shù)量。10.3.2

戶(hù)型數(shù)量分析統(tǒng)計(jì)戶(hù)型數(shù)量定義一個(gè)函數(shù)來(lái)計(jì)算各種戶(hù)型房源的數(shù)量,獲取“戶(hù)型”一列的數(shù)據(jù),并通過(guò)該函數(shù)得到戶(hù)型以及該戶(hù)型房源的數(shù)量。defall_house(arr):arr=np.array(arr)key=np.unique(arr)result={}forkinkey:mask=(arr==k)arr_new=arr[mask]v=arr_new.sizeresult[k]=vreturnresulthouse_array=file_data['戶(hù)型']house_info=all_house(house_array)10.3.2

戶(hù)型數(shù)量分析篩選戶(hù)型由于個(gè)別戶(hù)型的房源需求量比較少,所以這里可以篩選出數(shù)量大于50的房源。使用字典推導(dǎo)式將戶(hù)型數(shù)量大于50的元素篩選出來(lái),并將篩選后的結(jié)果轉(zhuǎn)換成DataFrame類(lèi)的對(duì)象。house_type=dict((key,value)forkey,valuein

house_info.items()ifvalue>50)show_houses=pd.DataFrame({'戶(hù)型':[xforxinhouse_type.keys()],

'數(shù)量':[xforxinhouse_type.values()]})10.3.2

戶(hù)型數(shù)量分析繪制條形圖為了能夠直觀地看到不同戶(hù)型之間的數(shù)量差異,這里可以使用條形圖進(jìn)行展示,其中條形圖的縱軸坐標(biāo)代表戶(hù)型種類(lèi),橫軸坐標(biāo)代表數(shù)量。importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']house_type=show_houses['戶(hù)型']house_type_num=show_houses['數(shù)量']y=np.arange(house_type.values.size)plt.barh(y,house_type_num,height=0.7,

color='darkcyan',alpha=0.8)

plt.yticks(y,house_type)...plt.show()10.3.3

房源平均租金分析實(shí)現(xiàn)思路這里說(shuō)的平均租金是各區(qū)房租的總金額(按月計(jì)算)除以房屋的總面積。如果希望統(tǒng)計(jì)北京市各區(qū)在房源的平均租金,則需要先將“價(jià)格(元/月)”和“面積(㎡)”這兩列數(shù)據(jù)分別按照“區(qū)域”一列進(jìn)行分組,再統(tǒng)計(jì)每個(gè)分組包含房源的總數(shù)量。10.3.3

房源平均租金分析創(chuàng)建保存租金的對(duì)象創(chuàng)建一個(gè)DataFrame類(lèi)的對(duì)象,該對(duì)象有“房租總金額”“總面積(㎡)”這兩列,每列的初始值均為0。df_all=pd.DataFrame({'區(qū)域':file_data['區(qū)域'].unique(),

'房租總金額':[0]*13,'總面積(㎡)':[0]*13})df_all10.3.3

房源平均租金分析按區(qū)域分組統(tǒng)計(jì)總金額和總面積按照“區(qū)域”一列分別對(duì)“價(jià)格(元/月)”一列和“面積(㎡)”一列的數(shù)據(jù)進(jìn)行分組,使用sum()方法計(jì)算每個(gè)分組的和,得到房租總金額和房屋總面積,之后將它們賦值給df_all對(duì)象的相應(yīng)列。sum_price=file_data['價(jià)格(元/月)'].groupby(file_data['區(qū)域']).sum()sum_area=file_data['面積(㎡)'].groupby(file_data['區(qū)域']).sum()df_all['房租總金額']=sum_price.valuesdf_all['總面積(㎡)']=sum_area.valuesdf_all10.3.3

房源平均租金分析增加“每平米租金(元)”一列在df_all對(duì)象的基礎(chǔ)上增加“每平米租金(元)”一列,用于保存計(jì)算的平均租金。df_all['每平米租金(元)']=round(df_all['房租總金額']/

df_all['總面積(㎡)'],2)df_all10.3.3

房源平均租金分析合并對(duì)象將之前創(chuàng)建的new_df對(duì)象與df_all對(duì)象進(jìn)行合并,由于這兩個(gè)對(duì)象中都包含“區(qū)域”一列,所以這里可以采用主鍵的方式進(jìn)行合并。df_merge=pd.merge(new_df,df_all)df_merge10.3.3

房源平均租金分析繪制柱形圖+折線圖借用圖表直觀地展示各區(qū)房源的具體情況,其中房源數(shù)量可以用柱狀圖進(jìn)行展示,平均租金可以用折線圖進(jìn)行展示。fig=plt.figure()ax1=fig.add_subplot(111)ax1.plot(l,price,marker='o',ms=5,color='r',label='價(jià)格')fori,(_x,_y)inenumerate(zip(l,price)):plt.text(_x,_y,price[i],color='black',fontsize=10)ax2=ax1.twinx()ax2.bar(l,num,alpha=0.3,color='green',label='數(shù)量')10.3.4

房源面積區(qū)間分析實(shí)現(xiàn)思路如果希望了解各面積區(qū)間的占比情況,則需要先獲取租房數(shù)據(jù)中的最大面積和最小面積,根據(jù)具體情況劃分幾個(gè)面積分組,再統(tǒng)計(jì)每個(gè)分組的數(shù)量,之后使用餅圖展示各面積區(qū)間的占比情況。10.3.4

房源面積區(qū)間分析計(jì)算最大面積和最小面積使用max()與min()方法分別計(jì)算出房屋面積的最大值和最小值。print('房屋最大面積是%d平米'%(file_data['面積(㎡)'].max()))print('房屋最小面積是%d平米'%(file_data['面積(㎡)'].min()))10.3.4

房源面積區(qū)間分析劃分面積區(qū)間我們參照鏈家官網(wǎng)的面積區(qū)間將房屋面積劃分為8個(gè)區(qū)間,使用describe()方法描述各個(gè)區(qū)間出現(xiàn)的次數(shù)(counts)以及頻率(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論