【pyecharts数据可视化】python爬取去哪儿网景点数据,做交互式数据可视化

写在前面

在网易云课堂看到城市数据团大鹏老师讲的《Python数据可视化利器:Pyecharts!》[传送门],于是把前一篇南京的景点数据做一个可视化。

1、还是去哪儿网景点爬取

具体可以看之前的帖子
《python爬取景点数据看该去哪里玩——南京篇》

我把代码拿过来按照需要调整一下,只要主要评价数据就行

import requests
from bs4 import BeautifulSoup
import numpy as np
import pandas as pd
import time
#创建函数,获取页面数据
def get_urls(ui,n):  #ui:地址,n:页码数
    urllst = []
    for i in range(1,n+1):
        urllst.append(ui+str(i))
    return urllst

#获得每个页面信息
def get_onepage_data(u): #u:网址
    r = requests.get(u)
    soup = BeautifulSoup(r.text, 'lxml')
    infor = soup.find('ul',class_ = "list_item clrfix").find_all('li')
    data_jd = []
    data_link = []
    for i in infor:
        dic = {}
        dic_link = {}
        #dic['lat'] = i['data-lat']
        #dic['lng'] = i['data-lng']
        dic['景点名称'] = i.find('span', class_="cn_tit").text
        dic['攻略提到数量'] = i.find('div', class_="strategy_sum").text
        dic['点评数量'] = i.find('div', class_="comment_sum").text
        dic['景点排名'] = i.find('span', class_="ranking_sum").text
        dic['驴友去过'] = i.find('span', class_="sum").text.split('%')[0]
        dic['星级'] = i.find('span', class_="cur_star")['style'].split(':')[1].split('%')[0]
        #dic['描述'] = i.find('div', class_="desbox").text
        #dic['链接'] = i.find('a')['href']
        data_jd.append(dic)        
    return data_jd
    
#获得所有网页信息
def get_all_data(urls): #urls 网址列表
    data_list= []
    
    for i in urls:       
        data_list.extend(get_onepage_data(i))        
        #print('成功采集%i个景点数据' % len(data_list)) 
    df = pd.DataFrame(data_list)   #导入pandas的DataFrame   
    df.index = df['景点名称']
    del df['景点名称']               
    return df

#数据字符转数字,以计算处理
def data_collation(df):      
    #df['lng'] = df['lng'].astype(np.float)
    #df['lat'] = df['lat'].astype(np.float)
    df['点评数量'] = df['点评数量'].astype(np.int)
    df['攻略提到数量'] = df['攻略提到数量'].astype(np.int)
    df['驴友去过'] = df['驴友去过'].astype(np.int)
    df['星级'] = df['星级'].astype(np.int)
    df.fillna(value = 0,inplace = True)  #填充空值,如果列是lnt类型就0;如果是str就用nan
    return df

# 筛选综合得分前n名的数据
def data_top(urls,n):  # 前n个数据
    df = get_all_data(urls)
    df = data_collation(df)
    # 构建函数实现字段标准化,标准分
    cols = ['攻略提到数量','星级','点评数量']
    for col in cols:
        df[col + '_b'] = round((df[col] - df[col].min())/(df[col].max() - df[col].min())*100,2)            
    #由驴友去过比例得分+攻略提到数量得分+星级得分+点评数得分,每项均为0-100分
    df['综合得分'] = df['驴友去过']+df['攻略提到数量_b']+df['星级_b']+df['点评数量_b']
    top_n = df.sort_values(by = '综合得分', ascending=False).iloc[:n]    
    return top_n

if __name__=="__main__":
    start_time = time.time()
    urls = get_urls('https://travel.qunar.com/p-cs299861-nanjing-jingdian-1-',5) #链接及页数
    top30_data = data_top(urls,30)  # 前30的数据
    
    end_time1 = time.time()
    print ("爬取基本数据,耗时:",end_time1 - start_time)    
    

爬取基本数据,耗时: 1.3800303936004639
top30的数据

2、交互式可视化

一种方法就是把这个数据里的’攻略提到数量’、‘星级’、'点评数量’做一个可视化
加载pyecharts,没有的可以在控制台用pip install pyecharts 先安装

from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
from pyecharts import options as opts
bar = (
    #条状图,定义大小样式,样式可以官方文件里找到各种样式
    Bar(opts.InitOpts(width = '1000px',height = '500px',theme=ThemeType.INFOGRAPHIC))   
    #增加横轴,标注用景点名称,tolist()将pandas数据转成list
    .add_xaxis(top_n.index.tolist())
    #增加纵轴,这里有三种数据
    .add_yaxis('点评数量',top_n['点评数量'].tolist())
    .add_yaxis('攻略提到数量',top_n['攻略提到数量'].tolist())
    .add_yaxis('星级',top_n['星级'].tolist())
    #全局属性,加这个工具箱和缩略轴还比较好用
    .set_global_opts(
        toolbox_opts = opts.ToolboxOpts(is_show = True),  # 设置工具箱
        datazoom_opts= [opts.DataZoomOpts(range_start=10, range_end=80,is_zoom_lock=False)],   # 设置slider缩略轴
        )
     #局部属性,加了一个最大值最小值显示,平均值  
    .set_series_opts(
       markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="min", name="最小值"),
                ]
            ),
        markline_opts = opts.MarkLineOpts(
            data = [
                opts.MarkLineItem(type_ = 'average', name= '平均值')
            ]
            )
        )
    )
bar.render_notebook() #就这么简单

整体出来就是下面这样:
pyecharts的效果

其中几个数据可以分别显示,动画演示
动态效果

调整和拉动缩放轴的效果,动画演示
拉动缩放轴

  • 17
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
### 回答1: 基于Python爬取电商数据可视化分析系统是一个用于从电商站中爬取数据,并通过可视化分析来帮助用户更好地理解和分析电商市场的工具。 首先,我们可以使用Python的库,如BeautifulSoup、Selenium等,来进行爬取。通过抓取电商站上的商品信息、用户评价和销售数据,可以获得关于产品和市场的大量数据。 然后,通过数据清洗和处理,对所获取的原始数据进行整理和筛选,将其转换为结构化的数据。这可以通过使用Pandas和NumPy等Python数据处理库来实现。清洗和处理数据的目的是为了提高数据的质量,减少噪声和错误,使得分析后的结果更具有可靠性和准确性。 接下来,我们可以使用Python数据可视化库,如Matplotlib和Seaborn,对清洗后的数据进行可视化分析。通过绘制柱状图、折线图、散点图、热力图等各种图表,可以直观地展示商品的销售量、价位分布、用户评价等信息,为用户提供全面的市场洞察。这些可视化图表可以帮助用户发现销售趋势、热门产品、市场竞争等关键信息,以支持他们出更明智的决策。 此外,系统还可以提供交互式可视化界面,供用户根据自己的需求进行数据的筛选和查询。用户可以选择特定的电商平台、产品类别、时间范围等条件,来针对性地观察和分析市场数据。同时,系统还可以提供基于用户行为的推荐功能,帮助用户发现可能感兴趣的产品和市场机会。 总之,基于Python爬取电商数据可视化分析系统可以为用户提供全面的电商市场数据分析服务,帮助他们更好地理解市场状况,发现潜在商机,出科学的决策。通过Python强大的数据处理和可视化能力,这个系统可以有效地帮助用户节省时间和精力,提高决策的准确性和效率。 ### 回答2: 基于Python爬取电商数据可视化分析系统,是指利用Python编程语言实现爬取电商数据,并通过数据可视化技术展示和分析这些数据系统。 首先,利用Python爬虫技术,我们可以编写程序来自动抓取电商站上的数据,包括商品信息、销售数据、用户评价等。通过调用Python络请求库,我们可以模拟浏览器的操作,访问页、获取页面源码,并使用正则表达式或解析库来提取所需数据。 接下来,将获取到的数据进行清洗和处理,去除无用信息、格式化数据,并存储到数据库中以便后续使用。Python数据处理库,如Pandas和Numpy,可以帮助我们对大量数据进行快速高效的处理和整理。 然后,利用Python数据可视化库,如Matplotlib和Seaborn,我们可以对电商数据进行图表展示和分析。可以绘制柱状图、折线图、饼图等,展示商品销售额、用户评价分布等数据特征。此外,还可以使用地理信息可视化库,如Folium,根据用户的地理位置展示销售热度地图。 最后,为了使系统更加用户友好,可以使用Python的Web框架,如Flask和Django,搭建一个页应用。用户可以通过界面输入要爬取的电商站地址或选择已配置好的站,系统将自动爬取数据并展示在页上。用户可以通过交互式的界面来选择不同的数据展示方式和分析方法,实现个性化的数据可视化分析需求。 综上所述,基于Python爬取电商数据可视化分析系统,通过爬取数据数据处理、数据可视化和Web应用搭建,能够帮助我们更好地理解和分析电商数据,为电商运营和决策提供支持。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划酱

谢谢鼓励!一起自动化!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值