数据可视化matplotlib(一)---亚马逊销售飙升榜
????????數(shù)據(jù)可視化是數(shù)據(jù)分析的重要任務(wù)之一。
? ? ? ? 之前有獲取到亞馬遜銷(xiāo)售飆升榜的數(shù)據(jù),但是排名只是按列表順序排序,銷(xiāo)售排名上升的幅度只有數(shù)字的變化,體現(xiàn)的不是很直觀。
????????所以使用python的matplotlib實(shí)現(xiàn)對(duì)數(shù)據(jù)的可視化,能直觀的看出來(lái)數(shù)據(jù)的對(duì)比和變化。
一、matplotlib
????????Matplotlib 是 Python 的繪圖庫(kù),可以用來(lái)繪制各種靜態(tài),動(dòng)態(tài),交互式的圖表。
python3 -m pip install -U matplotlib? ? ? ? 安裝完成之后,寫(xiě)一個(gè)簡(jiǎn)單的小測(cè)試:
import matplotlib.pyplot as pltdata = [1,2,2,5,8,1,2] plt.plot(data) plt.show()? ? ? ? ?先自定義一個(gè)list生成圖表,若配置正確的話(huà)就能生成如下簡(jiǎn)單的線(xiàn)型圖:
?
?二、使用Dataframe生成柱狀圖
? ? ? ? 在pandas中有很多方法可以實(shí)現(xiàn)對(duì)Dataframe和Series的可視化。
? ? ? ? Dataframe和Series都有一個(gè)plot屬性繪制基本的圖形,但是默認(rèn)情況下polt生成的都是折線(xiàn)圖。
? ? ? ? 所以我們需要用polt繪制不同圖標(biāo)的其他方法,比如柱狀圖的polt.bar()方法可以繪制垂直的柱狀圖,plot.barh()用于繪制水平的柱狀圖。
?????????默認(rèn)情況下,在繪制柱狀圖時(shí),Series和Dataframe的索引會(huì)成為x軸(bar())或者y(barh())軸的刻度。
三、Movers & Shakers數(shù)據(jù)可視化
? ? ? ? 結(jié)合上次的亞馬遜銷(xiāo)售飆升榜,來(lái)做一個(gè)電子區(qū)的熱銷(xiāo)榜銷(xiāo)售上升幅度的柱狀圖。
? ? ? ? 我這里使用的是ipidea的代理,因?yàn)閬嗰R遜在國(guó)內(nèi)還是無(wú)法正常訪問(wèn)的,好的代理能幫助你更好的獲取數(shù)據(jù),高質(zhì)量低延遲,而且新用戶(hù)可以白嫖哦!
????????http://www.ipidea.net/?utm-source=csdn&utm-keyword=?wb
????????那個(gè)up箭頭就是銷(xiāo)售量漲幅。不知道為什么榜一居然沒(méi)有,取數(shù)據(jù)的時(shí)候就把他忽略掉。
testUrl = "https://www.amazon.com/gp/movers-and-shakers/electronics/ref=zg_bsms_nav_0" headers = {"authority":"www.amazon.com","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","user-agent":f"{UserAgent}", } res = requests.get(testUrl, headers=headers, proxies=proxies,verify=False) content = res.content.decode("utf-8") sel = Selector(text=content) nodes = sel.css("#gridItemRoot") indexList = [] upgradeList = [] for node in nodes[1:]:itemName = node.css(".zg-grid-general-faceout a span div::text").extract_first()ranks = node.css(".aok-inline-block")upgrade = ranks.css(".zg-grid-pct-change::text").extract_first().replace("%","").replace(",","")indexList.append(itemName)upgradeList.append(int(upgrade))? ? ? ? 獲取到商品名和商品銷(xiāo)售漲幅之后將數(shù)據(jù)存入兩個(gè)list中,一個(gè)作為圖標(biāo)數(shù)據(jù),將商品名作為x軸的刻度。
dataframe = pd.DataFrame(upgradeList,index=indexList) dataframe.plot.bar() plt.show()? ? ? ? 目前,最基礎(chǔ)的數(shù)據(jù)可視化就完成了。?
?
總結(jié)
以上是生活随笔為你收集整理的数据可视化matplotlib(一)---亚马逊销售飙升榜的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 手把手教你使用 Java 和 Redis
- 下一篇: 0基础建站教程,1小时建网站,王通教程