51

我用Python帮朋友做了张猪肉数据分析图,结果。。。

 4 years ago
source link: http://developer.51cto.com/art/201911/605369.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我用Python帮朋友做了张猪肉数据分析图,结果。。。 - 51CTO.COM

我用Python帮朋友做了张猪肉数据分析图,结果。。。

事情的经过是这样的:我开开心心的去一家烧饼店吃饭,抬头一看,二师兄又涨价了,叹了口气,再这么下去真的要吃不起夹肉的烧饼了,点了两个烧饼一碗馄饨。

作者:朱小五来源:凹凸玩数据|2019-11-04 15:22

事情的经过是这样的:

我开开心心的去一家烧饼店吃饭

0df6fb6393bbcf64f8fdf128121282bf.png-wh_651x-s_2301907046.png

抬头一看,二师兄又涨价了

叹了口气,再这么下去真的要吃不起夹肉的烧饼了

点了两个烧饼一碗馄饨

快吃完的时候,收到了朋友阿东的微信

阿东是我初中同学,好些日子没联系了

5230f65a496da45ab11f8c8c0a46d888.png

眼瞅着他快聊到区块链了,虽然这事不靠谱,但还是答应了阿东帮他做图。

我赶紧吃完最后一口,回公司,决定不午睡了。

阿东想要这样的图:

444d10f5b1b3b84b88718fc4cdccf3fd.png

折线图嘛,先获取数据吧

正好图片中显示了数据来源:“中国养猪网”

打开官网,找到并跳转到猪价网址 http://zhujia.zhuwang.cc/

9cd7acf84bd6036caa0d446a68738bcf.png-wh_600x-s_1435984451.png

F12,Network查看异步请求XHR,成功找到价格接口。

c82474d56a5cfd614d2d587b8b05d5b4.png-wh_600x-s_3190318921.png

新标签页打开,在线解析Json数据,不了解这块知识的朋友可以点击 在python里玩转Json数据

e905f1dc998fe03d0e099c02b006a2d9.png-wh_600x-s_3368758346.png

部分爬虫代码(完整代码见文末下载地址):

  1. def get_comments(url): 
  2.     doc = get_json(url) 
  3.     dic = {} 
  4.     dic['pigprice'] = doc['pigprice'] 
  5.     dic['pig_in'] = doc['pig_in'] 
  6.     dic['pig_local'] = doc['pig_local'] 
  7.     dic['maizeprice'] = doc['maizeprice'] 
  8.     dic['bean'] = doc['bean'] 
  9.     a = '-'.join(doc['time'][3]) 
  10.     b = time.strftime('%Y-%m-%d',time.localtime(time.time())) 
  11.     print(dateRange(a,b)) 
  12.     dic['time'] = dateRange(a,b) 
  13.     return pd.DataFrame(dic) 
  14. data =get_comments('http://zhujia.zhuwang.cc/index/api/chartData?areaId=-1&aa=1571997555296') 

运行结果:

b382f2425b4b2a6ad7fdef1be94ab76f.png

成功获取最近一年的各种价格√

下面开始给阿东做折线图:

生猪价格的话选第一个外三元就好了,

使用 matplotlib 轻松可以做出折线图。

  1. from pylab import mpl 
  2. import  matplotlib.pyplot as plt 
  3. mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体 
  4. mpl.rcParams['axes.unicode_minus'] 
  5. plt.figure(figsize=(8,4), dpi=80) 
  6. plt.plot(data['time'],data['pigprice'], color="r",linestyle = "-") 
  7. plt.xticks(data['time'][2::121], rotation=0) 
  8. plt.xlabel("生猪(外三元) 元/公斤") 

02d1fd5e42fdbd323ce2e92a22992fe9.png

感觉还差点东西,可以标注一下最新一天的价格

另外既然已经获取了玉米和豆粕的价格,就一起做了吧~

利用 plt.subplot 可以绘制多个子图

  1. from pylab import mpl 
  2. import  matplotlib.pyplot as plt 
  3. mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体 
  4. mpl.rcParams['axes.unicode_minus'] 
  5. plt.figure(figsize=(8,10), dpi=80) 
  6. plt.figure(1) 
  7. ax1 = plt.subplot(311) 
  8. plt.plot(data['time'],data['pigprice'], color="r",linestyle = "-") 
  9. plt.xticks([]) 
  10. 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)) 
  11. plt.xlabel("生猪(外三元) 元/公斤") 
  12. ax2 = plt.subplot(312) 
  13. plt.plot(data['time'],data['maizeprice'],color="y",linestyle = "-") 
  14. plt.xticks([]) 
  15. plt.xlabel("玉米(15%水分) 元/吨") 
  16. ax3 = plt.subplot(313) 
  17. plt.plot(data['time'],data['bean'],color="g",linestyle = "-") 
  18. plt.xlabel("豆粕(43%蛋白) 元/吨") 
  19. plt.xticks(data['time'][2::121], rotation=0) 

f64efc37fcadba9be83b39aa6ef324d4.png

cdd18b88f207ad27ee88c98a46b00cd3.png

发给阿东。

却得到这样的回复

2a1956a27f5b4d2f2fcff64ae58678ed.png

ae90c04da7df8dd304bf05bc263ed0bc.png-wh_600x-s_1191225673.png

原来在他心里是这么定义朋友的啊。

这很东哥,

这很兄弟。

一键爬取最新猪价&可视化的代码已上传github:

https://github.com/zpw1995/aotodata/tree/master/interest/pig

【编辑推荐】

【责任编辑:华轩 TEL:(010)68476606】
点赞 0

关注“51CTO技术栈”微信公众号获取更多精彩内容

大家都在看猜你喜欢

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK