利用python爬取百度地图火锅数据并利用Tableau可视化

问题

爬取的数据

api结果

JOSN数据

https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&c=1&wd=%E7%81%AB%E9%94%85&da_src=pcmappg.map&on_gel=1&l=5&gr=2&b=(9677951.714231128,1730014.8154582584;13993877.97804421,4767148.112215612)&pn=0&auth=W5zNFT6g0%40%40TZT24DwfQCHL0B35%40g6SWuxLBNERBNLHtBalTBnlcAZzvYgP1PcGCgYvjPuVtvYgPMGvgWv%40uVtvYgPPxRYuVtvYgP%40vYZcvWPCuVtvYgP%40ZPcPPuVtvYgPhPPyheuVtvhgMuxVVty1uVtCGYuNtJLmCUZIdbTbNdB9A1cv3uVtGccZcuVtPWv3GuBtR9KxXwPYIUvhgMZSguxzBEHLNRTVtcEWe1GD8zv7u%40ZPuzteL1wWveuBt0iyfixAN152T1N51wquTTGLFfy9GUIsxC2wvaaZyY&seckey=6VKbNl%2BEMipcFlMIHjKIybzZLU9kk4sn5QN4bSBp2q0%3D%2CWG3XhzBOLtVO6h67UdvVmni8%2B3Bln8Ck4hk87v17WepaJJGH6dhpwmT6%2BDFFFxM0PzMMjvdyWI3GVS3KZF3h7VAmP8Uf%2FgHuvAYxhdl%2Bg3tTRJP61I1dKdR8CStOr3FOveukTMBWS1MCb27ID9RcqkXg%2FooVgmwzXbrwkgpjDldMXr3TwWmVV01n8v032nwY&device_ratio=2&tn=B_NORMAL_MAP&nn=0&u_loc=11869559,3030727&ie=utf-8&t=1637483768544&newfrom=zhuzhan_webmap

python爬虫

其实这次的爬虫很简单,长话短说

import requests
import pandas as pd 

url = "https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&c=1&wd=%E7%81%AB%E9%94%85&da_src=pcmappg.map&on_gel=1&l=3&gr=1&b=(1174135.838217428,-5261081.159856323;14879172.105572648,10545685.908882445)&pn=0&auth=RLVSxNUz96XX1SYEcDCQSa4cR9aNvG96uxLBNExRNBTtA%3Dk6Amkbz8yvYgP1PcGCgYvjPuVtvYgPMGvgWv%40uxtw8055yS8v7uvYgP%40vYZcvWPCuVtvYgP%40ZPcPPuVtvYgPhPPyheuVtvhgMuxVVty1uVtCGYuxtE20w5V198P8J9v7u1cv3uztexZFTHrwzDv5ooioGdFPWv3GuVtPYIuVtPYIUvhgMZSguxzBEHLNRTVtcEWe1aDYyuVt%40ZPuzteL1wWveuztghxehwz4DPGz6DB4vjnOOAGzu%3D%3D8xC&seckey=7W5%2BIhO%2B9UrQ2WX2V%2BE0KmrfRnfNjQ0Xg0YEc5Iu%2Fz8%3D%2CszNX4bkys1gfYd65mAyKk1JSwTAQrk4A7iOGDLHckvKsmeFsawFeIWwGdwoAZuFMnHE%2BuWYgg3T%2FtZUz1hiMdKD0LrtR1TZBjQm%2Fyt5c7mduGqYLkdWpXM0c%2FJ%2FgiJFFtmSDOxvMAiCeWh%2BUqQNFnJfZBvzsRINMb8JuZYiO%2Fiq3KhhPoNAWt%2BYfDFOJdd3u&device_ratio=2&tn=B_NORMAL_MAP&nn=0&u_loc=11871969,3028287&ie=utf-8&t=1637418793652&newfrom=zhuzhan_webmap"

payload={}
headers = {
  'Cookie': 'BAIDUID=C715F06E5DE06ABAF85A3CE841D57766:FG=1'
}

response = requests.request("GET", url, headers=headers, data=payload)

# print(response.json())

data = response.json()['more_city']
df = pd.DataFrame(data)
print(df)

结果

pandas处理数据

我们需要对city列处理
需要处理的列

我们头脑一定要清晰,我以前做了蛮久,但是现在一些就这次来了,我们的思路,分列,行列转换,然后提取数据。

导入模块

import numpy as np
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType,SymbolType
%matplotlib inline

读取数据

data = pd.read_excel('2021-11-20-23-44-7-79835853400-火锅数据.xlsx')
df = pd.DataFrame(data['city'])
df.head()

数据

数据分列

df = df['city'].str.split(',', expand=True)
df.shape

数据大小,后面有用

行列转换

表格转一列
df_stack = df.stack()
df_stack = pd.DataFrame(df_stack)
print(df_stack.head(10))
print(df_stack.shape)

一列数据

数据大小

行列转换

我们这里解释一下,2513×1,我们要转换成359×7。

df_temp =pd.DataFrame(np.reshape(df_stack.to_numpy(), (359,7)))
df_course = df_temp[[0,5,6]]
正则表达式提取
df_effect = df_course[5].str.extract('([\u4e00-\u9fa5]+)', expand=True)

df_effect['Name'] = df_effect[0]
df_effect.drop(0, axis=1, inplace=True)
df_effect['Code'] = df_course[0].str.extract('([0-9]*$)', expand=True)
df_effect['Num'] = df_course[6].str.extract('(\d+.*\d+)', expand=True)

df_effect.head()

结果

导出数据
df_effect.to_excel('2021-11-20-23-44-7-79835853400-火锅数据-效果.xlsx')

省份数据可视化

省份数据提取

data.head()

需要可视化的数据

df_province = data[['province','province_id','num']]
df_province.head()
df_province.to_excel('火锅_省份数据.xlsx')

省份数据

pyecharts数据可视化

我们这次选择pyecharts来数据可视化,注意Pyecharts里面省份要一样,比如上海市不能识别,只有上海才可以识别。

df_province['province'] = df_province['province'].str.replace('省','')
df_province['province'] = df_province['province'].str.replace('市','')
df_province['province'].replace({'内蒙古自治区':'内蒙古','广西壮族自治区':'广西','新疆维吾尔自治区':'新疆',
                                 '宁夏回族自治区':'宁夏','西藏自治区':'西藏'},inplace=True)

还有Pyecharts只识别列表数据,所以我们需要数据类型改变。

province = df_province['province'].tolist()
num = df_province.num.tolist()
print('地区',province)
print('数量',num)

数据
我们需要一一对应

geo_test_data = list(zip(province,num))
print(geo_test_data)

绘制地图

from pyecharts import options as opts
from pyecharts.charts import Map


map=Map()
map.add('频数',geo_test_data,'china')
map.set_global_opts(
  title_opts=opts.TitleOpts(title='全国火锅省份分布图'),
  visualmap_opts=opts.VisualMapOpts(min_=100,max_=15000,split_number=5,is_piecewise=True))  #图例是否分段

map.render_notebook()
map.render("全国火锅分布图.html")

我们来看看效果。
全国火锅分布图

Tableau数据可视化

其实python来数据可视化比较痛苦的,所以我们在tableau里面数据可视化一样,好痛苦。
中国火锅仪表盘

总结

太痛苦,要不是为了钱,钱到了,当然要记录一下,不记录的话,以后又忘记了,那怎么办,而且还可以传播出去。还有数据有缺失,不一定准确,数据来源于百度。强烈抗议osm把湾湾划出我国,这个不代表本人观点,祖国万岁。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python爬虫是一种通过编写程序来获取互联网上的数据的技术。对于爬取招聘网站数据,可以使用Python中的一些第三方库如Scrapy或BeautifulSoup来实现。 首先,我们需要分析招聘网站的HTML结构,找到我们需要爬取数据所在的元素位置。然后,编写Python代码,使用相应的库来提取所需的数据。这些数据可以包括职位名称、公司名称、薪资水平等。 接下来,我们可以使用Tableau来进行数据可视化和交互。Tableau是一款功能强大的商业智能工具,可以帮助我们将数据变成易于理解和分析的可视化图表。可以通过将爬取到的数据导入Tableau,然后使用Tableau的图表、地图、仪表盘等功能来展示数据。 通过Tableau的交互大屏功能,我们可以实现对数据的实时展示和交互。例如,我们可以设置数据刷新时间,使得大屏能够显示最新的招聘信息。我们还可以添加筛选器和参数控制,使用户能够自由地根据需求进行数据过滤和分析。 最后,将Python爬取数据Tableau可视化交互大屏的源码整合起来,就可以实现将招聘网站数据爬取并用Tableau进行可视化展示的功能。这个源码可以分为两部分,一部分是爬虫代码,负责数据爬取和处理;另一部分是Tableau代码,负责将数据导入Tableau并进行可视化展示。 综上所述,通过Python爬虫获取招聘网站数据,并使用Tableau进行可视化交互大屏展示,是一种非常有效的数据分析方法。这样可以将庞大的数据转化为直观、易懂的图表,方便用户进行数据的理解和决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值