我用Python幫朋友做了張豬肉數(shù)據(jù)分析圖,結(jié)果。。。
事情的經(jīng)過是這樣的:
我開開心心的去一家燒餅店吃飯
抬頭一看,二師兄又漲價(jià)了
嘆了口氣,再這么下去真的要吃不起夾肉的燒餅了
點(diǎn)了兩個(gè)燒餅一碗餛飩
快吃完的時(shí)候,收到了朋友阿東的微信
阿東是我初中同學(xué),好些日子沒聯(lián)系了
眼瞅著他快聊到區(qū)塊鏈了,雖然這事不靠譜,但還是答應(yīng)了阿東幫他做圖。
我趕緊吃完最后一口,回公司,決定不午睡了。
開工!
阿東想要這樣的圖:
折線圖嘛,先獲取數(shù)據(jù)吧
正好圖片中顯示了數(shù)據(jù)來源:“中國(guó)養(yǎng)豬網(wǎng)”
打開官網(wǎng),找到并跳轉(zhuǎn)到豬價(jià)網(wǎng)址 http://zhujia.zhuwang.cc/
F12,Network查看異步請(qǐng)求XHR,成功找到價(jià)格接口。
新標(biāo)簽頁打開,在線解析Json數(shù)據(jù),不了解這塊知識(shí)的朋友可以點(diǎn)擊 在python里玩轉(zhuǎn)Json數(shù)據(jù)
部分爬蟲代碼(完整代碼見文末下載地址):
- def get_comments(url):
- doc = get_json(url)
- dic = {}
- dic['pigprice'] = doc['pigprice']
- dic['pig_in'] = doc['pig_in']
- dic['pig_local'] = doc['pig_local']
- dic['maizeprice'] = doc['maizeprice']
- dic['bean'] = doc['bean']
- a = '-'.join(doc['time'][3])
- b = time.strftime('%Y-%m-%d',time.localtime(time.time()))
- print(dateRange(a,b))
- dic['time'] = dateRange(a,b)
- return pd.DataFrame(dic)
- data =get_comments('http://zhujia.zhuwang.cc/index/api/chartData?areaId=-1&aa=1571997555296')
運(yùn)行結(jié)果:
成功獲取最近一年的各種價(jià)格√
下面開始給阿東做折線圖:
生豬價(jià)格的話選第一個(gè)外三元就好了,
使用 matplotlib 輕松可以做出折線圖。
- from pylab import mpl
- import matplotlib.pyplot as plt
- mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默認(rèn)字體
- mpl.rcParams['axes.unicode_minus']
- plt.figure(figsize=(8,4), dpi=80)
- plt.plot(data['time'],data['pigprice'], color="r",linestyle = "-")
- plt.xticks(data['time'][2::121], rotation=0)
- plt.xlabel("生豬(外三元) 元/公斤")
感覺還差點(diǎn)東西,可以標(biāo)注一下最新一天的價(jià)格
另外既然已經(jīng)獲取了玉米和豆粕的價(jià)格,就一起做了吧~
利用 plt.subplot 可以繪制多個(gè)子圖
- from pylab import mpl
- import matplotlib.pyplot as plt
- mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默認(rèn)字體
- mpl.rcParams['axes.unicode_minus']
- plt.figure(figsize=(8,10), dpi=80)
- plt.figure(1)
- ax1 = plt.subplot(311)
- plt.plot(data['time'],data['pigprice'], color="r",linestyle = "-")
- plt.xticks([])
- plt.annotate(data['pigprice'][365], xy=(data['time'][365], 40), xytext=(data['time'][270], 35), arrowprops=dict(facecolor='black', shrink=0.1, width=0.5))
- plt.xlabel("生豬(外三元) 元/公斤")
- ax2 = plt.subplot(312)
- plt.plot(data['time'],data['maizeprice'],color="y",linestyle = "-")
- plt.xticks([])
- plt.xlabel("玉米(15%水分) 元/噸")
- ax3 = plt.subplot(313)
- plt.plot(data['time'],data['bean'],color="g",linestyle = "-")
- plt.xlabel("豆粕(43%蛋白) 元/噸")
- plt.xticks(data['time'][2::121], rotation=0)
完工,
發(fā)給阿東。
卻得到這樣的回復(fù)
原來在他心里是這么定義朋友的啊。
可以,
這很東哥,
這很兄弟。
一鍵爬取最新豬價(jià)&可視化的代碼已上傳github:
https://github.com/zpw1995/aotodata/tree/master/interest/pig