網(wǎng)上有很多關(guān)于pos機數(shù)據(jù)清除,學(xué)會利用Pandas處理復(fù)雜任務(wù)的知識,也有很多人為大家解答關(guān)于pos機數(shù)據(jù)清除的問題,今天pos機之家(www.sengkou.cn)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機數(shù)據(jù)清除
天下代碼一大抄, 抄來抄去有提高, 看你會抄不會抄!
本系列文章還是引用之前的理念,閱讀文章,你不需要記,只要知道這一篇在講什么即可,收藏起來,用的時候過來抄代碼。
好了,通過前面四節(jié)的Pandas技能學(xué)習(xí),現(xiàn)在我們已經(jīng)了解了Pandas所有的數(shù)據(jù)處理技巧,本篇我們主要就是實戰(zhàn),處理相對復(fù)雜的案例。
在本篇章節(jié)中,我們將爬取杭州租賃信息,并通過前面四節(jié)學(xué)習(xí)的pandas知識,對數(shù)據(jù)進行清洗和分析。然后利用PyEcharts生成圖表。在本篇文章中,你可以學(xué)習(xí)到實戰(zhàn)案例,并最終可以掌握生成報表的知識。
注意: 如果下面案例,對Pandas語法還不太熟, 請重新復(fù)習(xí)。《第二篇:數(shù)據(jù)探索與清洗:使用Pandas輕松預(yù)處理數(shù)據(jù)》
第一篇:Pandas入門指南:掌握Python數(shù)據(jù)處理利器第二篇:數(shù)據(jù)探索與清洗:使用Pandas輕松預(yù)處理數(shù)據(jù)第三篇:深入了解Pandas數(shù)據(jù)結(jié)構(gòu):Series與DataFrame第四篇:數(shù)據(jù)選擇與過濾:Pandas中的強大索引技巧第五篇:數(shù)據(jù)操作與轉(zhuǎn)換:學(xué)會利用Pandas處理復(fù)雜任務(wù)【當(dāng)前篇】一、核心知識點爬取杭州房屋租賃信息,對杭州房屋租賃市場進行分析,并最終生成分析報表。這中間有四個方面的技術(shù)點:
1.1 數(shù)據(jù)爬取本篇文章的數(shù)據(jù)爬取,我們直接使用RPA工具, 進行爬取。所謂RPA工具,其實就是軟件工具,用于自動化執(zhí)行重復(fù)、規(guī)范和可預(yù)測的任務(wù)。RPA工具通過模擬和自動化人類在計算機上的交互,可以執(zhí)行各種操作,如數(shù)據(jù)輸入、處理等。可以做到爬蟲的功能。
本篇我們要使用的工具是: `八爪魚采集器` ,當(dāng)然像這類工具還有很多,比如影刀、后裔采集器等。
這些工具都是可視化的,非常適合小白。不過處理起來還是有些局限性,不是特別的靈活和容易控制,如果本系列文章效果不錯,小編可能還會出RPA工具系列的文章。
1.2 數(shù)據(jù)清洗將爬取的數(shù)據(jù),導(dǎo)出CSV文件,然后通過Pandas讀取文件,并對數(shù)據(jù)進行清洗和轉(zhuǎn)換。得到我們最終想要的數(shù)據(jù)。
這里面主要用到的就是在第二篇中我們所學(xué)習(xí)的Pandas知識, 如果忘記了,可以重新回去看看。
1.3 數(shù)據(jù)分析對清洗后的數(shù)據(jù),進行數(shù)學(xué)處理,得到我們的分析數(shù)據(jù)。這里我們主要用到的功能,都是Pandas基本的功能。 so easy。
1.4 生成報表報表的展示我們采用Pyecharts報表工具,干過開發(fā)的同學(xué)多少都聽過Echarts,Echarts 是一個由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計,得到了眾多開發(fā)者的認(rèn)可。而 Python 是一門富有表達力的語言,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上數(shù)據(jù)可視化時,pyecharts 誕生了。所以本節(jié)也會演示Pyecharts的處理。
好了,廢話不多說,本期的主要內(nèi)容就是這些,下面開始實操。
二、案例實操2.1 數(shù)據(jù)采集這里直接使用八爪魚采集器進行采集。
這就是八爪魚采集器,可以看到模版還挺多的,我們點擊這些模版,基本不用配置什么就可以繼續(xù)進行數(shù)據(jù)采集。
這里我們直接使用安居客的數(shù)據(jù),輸入安居客的地址,點擊自動識別網(wǎng)頁。
可以看到自動識別后的數(shù)據(jù)在下面展示。
如果是我們要的數(shù)據(jù),那么我們就可以點擊右上角的采集按鈕,進行采集。可以看到我的采集數(shù)據(jù)正在采集中了。
等待任務(wù)執(zhí)行完成后,我們就可以導(dǎo)出數(shù)據(jù)了。點擊右下角的數(shù)據(jù)導(dǎo)出。
到這里我們就生成了一份原始采集數(shù)據(jù)。
杭州地鐵線租房_杭州租房_價格_房價_房產(chǎn)網(wǎng)-安居客租房網(wǎng).csv
2.2 數(shù)據(jù)清洗首先我們打開數(shù)據(jù)看下,有用的信息還是不少呢,不過有點分散。需要我們進行梳理下。
下面我們就用Pandas對數(shù)據(jù)進行處理吧。
2.2.1 數(shù)據(jù)讀取read_csv 函數(shù)讀取csv文件import pandas as pd# 原始數(shù)據(jù)ori_home_list = pd.read_csv('./杭州地鐵線租房_杭州租房_價格_房價_房產(chǎn)網(wǎng)-安居客租房網(wǎng).csv')# 一共885條有效數(shù)據(jù)len(ori_home_list)ori_home_list.columns
看一下列名稱,有點亂: Index([‘標(biāo)題’, ‘標(biāo)題鏈接’, ‘圖片’, ‘標(biāo)簽’, ‘標(biāo)簽1’, ‘標(biāo)簽2’, ‘標(biāo)簽3’, #‘detailsitem’,‘detailsitem_鏈接’, ‘detailsitem4’, ‘關(guān)鍵詞’, ‘zuside’],dtype=‘object’)
因為亂,所以下面我們要對這些列進行清洗,清洗的方法,可能是替換,也可能是抽取里面的數(shù)據(jù)。下面處理的步驟,小編都配有圖,通過觀察圖中原始數(shù)據(jù)的規(guī)則,利用合適的方法,進行數(shù)據(jù)清洗。
2.2.2 處理房型通過表格中的數(shù)據(jù),我們發(fā)現(xiàn)標(biāo)簽1和標(biāo)簽2加起來就是房型。
下面我們寫一個函數(shù)將標(biāo)簽1和2進行合并。
apply 逐行執(zhí)行函數(shù)def funcHomeType(df): fx = '{}室{}廳'.format(df['標(biāo)簽1'],df['標(biāo)簽2']) df['房型'] = fx return dfori_home_list.apply(func = funcHomeType , axis=1 )2.2.3 處理區(qū)域
可以看到我們的區(qū)域信息是在 detailsitem 列中, 由于這個字段中文本較多,所以處理起來比較困難。具體的處理代碼實現(xiàn)細(xì)節(jié),下面用代碼和配圖展示。內(nèi)容較多,一定要理解。
我們先打印下原始數(shù)據(jù),可以看到是有換行符的。下面我們主要使用2個處理技巧,將數(shù)據(jù)進行提取。split函數(shù): 通過輸入分隔字符,將數(shù)據(jù)分隔成數(shù)組。 然后第二個是 strip函數(shù): 清除字符前后的空格。
下面我們看下面的處理步驟,首先看下原始數(shù)據(jù),我們看到是使用\換行符進行分隔的。
那么我們就可以先通過換行符進行分隔。
- home_list['detailsitem'].str.split('\')[1][2] 通過換行進行分隔,先拿到帶有區(qū)域的文本。
- home_list['detailsitem'].str.split('\')[1][2].strip() `移除先后空格`
- home_list['detailsitem'].str.split('\')[1][2].strip().split(' ') `根據(jù)空格再分隔`
- home_list['detailsitem'].str.split('\')[1][2].strip().split(' ')[0] `得到區(qū)域`
- home_list['detailsitem'].str.split('\')[1][2].strip().split(' ')[0].split('-') `得到區(qū)域`
思路就是這樣啊,下面我們在函數(shù)中處理。
def funcHomeType(df): fx = '{}室{}廳'.format(df['標(biāo)簽1'],df['標(biāo)簽2']) df['房型'] = fx address = df['detailsitem'].split('\')[2].split('\')[0].strip() df['區(qū)域'] = address.split(' ')[0].split('-')[0] return df2.2.4 清洗面積
面積其實就是標(biāo)簽3,所以這里我們可以重命名,也可以新增一列。我這列采用新增一列。
home_list['面積'] = home_list['標(biāo)簽3']2.2.5 清洗價格
規(guī)則比較簡單: 直接通過正則提取。
home_list['租賃價格'] = home_list['zuside'].str.extract('(\\d+) 元/月')2.2.6 清洗地鐵距離和線路
規(guī)則: 都是數(shù)字, 通過?號線能定位到線路; 通過站?m能定位到距離。所以我們直接通過正則提取。
這里會運用到正則匹配的知識,其中\(zhòng)\d+ 意思是匹配1個或多個數(shù)字。 .*是匹配任何字符。如果你對正則不是熟悉,可以在網(wǎng)站搜索。
home_list['地鐵距離'] = home_list['關(guān)鍵詞'].str.extract('站(.*)')home_list['地鐵線路'] = home_list['關(guān)鍵詞'].str.extract('(\\d+)號線')2.2.7 清洗小區(qū)
新增一列
home_list['小區(qū)'] = home_list['detailsitem4']2.2.8 保存清洗后的數(shù)據(jù)
通過上面的提取,我們可以得到 [‘區(qū)域’,‘小區(qū)’,‘面積’,‘租賃價格’,‘房型’,‘地鐵距離’,‘地鐵線路’], 我們只保留這些列,然后保存到 home.xlsx文件中。
new_home_list = home_list[['區(qū)域','小區(qū)','面積','租賃價格','房型', '地鐵距離','地鐵線路']]new_home_list.to_excel('home.xlsx')2.3 數(shù)據(jù)分析 & 生成報表2.3.1 杭州市平均租賃價格
公式: sum(總租賃價格) / sum(總租賃面積)
這里我們會對面積和租賃價格進行數(shù)學(xué)計算,所以需要就將他們轉(zhuǎn)換成浮點型。sum對某一列進行求和,然后相除。結(jié)論: 杭州市單位面積租賃價格,約為: 90元
# 轉(zhuǎn)換成浮點型new_home_list['面積'] = new_home_list['面積'].astype(float)new_home_list['租賃價格'] = new_home_list['租賃價格'].astype(float)price_unit = new_home_list['租賃價格'].sum() / new_home_list['面積'].sum()# '杭州市平均租賃價格: 90.0678446063538''杭州市平均租賃價格: {}'.format(price_unit)2.3.2 杭州各區(qū)域租賃價格
前面是杭州范圍的租賃價格,這里我們求每個區(qū)域的租賃價格。其實就是根據(jù)區(qū)域進行分組。在pandas中可以使用 groupby函數(shù),按照區(qū)域的維度看單位面積的平均價格。
grouped = new_home_list.groupby('區(qū)域')# 會重新生成一列數(shù)據(jù)grouped = grouped['租賃價格'].sum() / grouped['面積'].sum()area_price = grouped.reset_index()# 新生成的每平米的租賃價格,重命名area_price = area_price.rename(columns={0:'租賃價/米'})x軸是區(qū)域y軸是價格
然后我們生成報表
from pyecharts import options as optsfrom pyecharts.charts import Barbar_chart = Bar()bar_chart.add_xaxis(area_price['區(qū)域'].tolist())bar_chart.add_yaxis('租賃價/米', area_price['租賃價/米'].tolist(), markline_opts=opts.MarkLineOpts(data=[ opts.MarkLineItem(type_="average")]))bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="區(qū)域租賃價格柱狀圖"))bar_chart.set_series_opts(label_opts=opts.LabelOpts(position='top'))bar_chart.render_notebook()2.3.3 杭州房源分布分析
grouped = new_home_list.groupby(by=['區(qū)域'])['區(qū)域'].count()# 將DataFrame的兩列數(shù)據(jù)轉(zhuǎn)換為餅圖數(shù)據(jù)格式data_list = list(zip(grouped.index.tolist(), grouped.tolist()))#[('上城', 75),# ('臨安', 15),# ('臨平', 45),# ('余杭', 15),# ('拱墅', 210),# ('濱江', 30),# ('蕭山', 405),# ('西湖', 75),# ('錢塘', 15)]data_listfrom pyecharts import options as optsfrom pyecharts.charts import Piepie_chart = Pie()# 設(shè)置餅圖的數(shù)據(jù)和標(biāo)簽pie_chart.add("", data_list)# 設(shè)置餅圖的標(biāo)題和樣式pie_chart.set_global_opts(title_opts=opts.TitleOpts(title="杭州房源分布分析"), legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"))pie_chart.render_notebook()2.3.4 房租最貴的小區(qū) TOP 10
同樣使用groupby小區(qū)的維度,計算單位面積租金。
grouped = new_home_list.groupby(by=['小區(qū)'])['租賃價格'].sum() / new_home_list.groupby(by=['小區(qū)'])['面積'].sum()# 根據(jù)價格進行排期 grouped = grouped.sort_values(ascending=False)# 獲取前10小區(qū)grouped = grouped.head(10)grouped = grouped.sort_values()
生成條形圖
add_xaxis 添加x坐標(biāo)數(shù)據(jù)add_yaxis 添加y坐標(biāo)數(shù)據(jù)reversal_axis 左邊反轉(zhuǎn),柱形圖轉(zhuǎn)條形圖bar_chart = Bar()bar_chart.add_xaxis(grouped.index.tolist())bar_chart.add_yaxis('租賃平方價/元', grouped.round(2).tolist())# 柱狀圖反轉(zhuǎn)成條形圖bar_chart.reversal_axis()bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="房租最貴的小區(qū) TOP 10"))bar_chart.set_series_opts(label_opts=opts.LabelOpts(position='right'))bar_chart.render_notebook()
全系列課程均是免費, 你的關(guān)注是我繼續(xù)的動力,下篇更精彩。
以上就是關(guān)于pos機數(shù)據(jù)清除,學(xué)會利用Pandas處理復(fù)雜任務(wù)的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機數(shù)據(jù)清除的知識,希望能夠幫助到大家!









