最近总有朋友在问我,数据分析和可视化展示已经入门了,想练手但没有数据怎么办?
不用怕!鸟哥今天给大家推荐1个存在大量数据的网站,并把详细教程写出来!
网站地址为:
https://data.stats.gov.cn/
这里有你需要的各类数据,即全面又准确
下面以分省财政收入数据为例,教你用python爬取各省数据:
打开火狐浏览器抓包工具,按下图方式操作,可以获得数据接口:
返回的数据中,有3个重点数据,'110000'为省市编码,每个省都有1个对应的编码,'2019'代表年份,data代表财政收入(亿元)
将数据往下拉,还能看到省市和编码的
先记住这些,后续编程要用到
这一步很容易理解,但是正常requests模拟请求会出现以下错误:
主要是因为网站不知道为什么会显示不安全链接,在浏览器测试如下:
具体哪里不安全咱也不知道,解决办法是直接忽略验证就行,代码如下:
import requestsimport jsonimport reimport pandas as pdurl='https://data.stats.gov.cn/easyquery.htm?m=QueryData&dbcode=fsnd&rowcode=reg&colcode=sj&wds=%5B%7B%22wdcode%22%3A%22zb%22%2C%22valuecode%22%3A%22A080101%22%7D%5D&dfwds=%5B%7B%22wdcode%22%3A%22sj%22%2C%22valuecode%22%3A%22LAST20%22%7D%5D&k1=1601122489572'headers={'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'}response=requests.get(url, headers=headers, verify=False)results=json.loads(response.text)
首先将省市名字和编码的对应关系存入字典中:
cityTocodes={}for i in results['returndata']['wdnodes'][1]['nodes']: cityTocodes[i['code']]=i['cname']print(cityTocodes)
然后将数据存入二维列表中:
codes=[]data = []datas = []for i in results['returndata']['datanodes']: pattern=re.compile(r'zb\.A080101_reg\.(\d+)_sj\.(\d+)') code=re.findall(pattern, i['code'])[0][0] if code not in codes: codes.append(code) datas.append(data) data=[] data.append(i['data']['data'])print(datas)
最后将数据转成DataFrame格式:
years=list(range(2000,2020))[::-1]datas.append(data)citys=[cityTocodes[i] for i in codes]city_datas=pd.DataFrame(datas[1:], columns=years, index=citys)
city_datas.to_excel('全国各省财政收入.xlsx')
网站内其他数据也可按照此方法获取
-完-
联系客服