首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

当当网排行版爬虫+可视化分析

后端 266.43KB 25 需要积分: 1
立即下载

资源介绍:

爬取当当网排行榜并连接本地nosql数据库,对数据进行数据清洗后进行可视化分析展示
from pymongo import MongoClient from matplotlib.font_manager import FontProperties import pandas as pd from pyecharts.charts import Pie, Bar, Liquid, Page from pyecharts import options as opts import webbrowser import os from pyecharts.commons.utils import JsCode import matplotlib.pyplot as plt from pyecharts.charts import Line # 创建MongoDB客户端 选择数据库 选择集合(相当于表) client = MongoClient('mongodb://localhost:27017/') db = client['dangdang_4213'] collection = db['dangdang_4213'] # 查询所有文档 将查询结果转换为列表 documents = collection.find() data_list = list(documents) df = pd.DataFrame(data_list) #---------------可视化部分代码 def tranform_price(x): try: # 尝试将输入转换为浮点数 num = float(x) if num <= 30.0: return '0~30元' elif num <= 60.0: return '31~60元' elif num <= 100.0: return '61~100元' elif num <= 500.0: return '101~500元' else: return '500以上' except ValueError: # 如果转换失败,返回一个默认值或者进行其他错误处理 return '未知价格' df['价格分级'] = df['原价'].apply(lambda x:tranform_price(x)) price_1 = df['价格分级'].value_counts() datas_pair_1 = [(i, int(j)) for i, j in zip(price_1.index, price_1.values)] df['售价价格分级'] = df['折扣价'].apply(lambda x:tranform_price(x)) price_2 = df['售价价格分级'].value_counts() datas_pair_2 = [(i, int(j)) for i, j in zip(price_2.index, price_2.values)] # -----------------------------原价价格区间饼状图 pie1 = ( Pie(init_opts=opts.InitOpts(width='1000px', height='600px')) .add('', datas_pair_1, radius=['35%', '60%']) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b} : {d} %")) .set_global_opts( title_opts=opts.TitleOpts( title="当当网书籍\n\n原价价格区间", pos_left='center', pos_top='center', title_textstyle_opts=opts.TextStyleOpts( color='#007AC2', font_size=20, font_weight='bold' ), ) ) #.set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF', '#7FFFAA']) .set_colors(['#BAD1EE', '#83BFEA', '#00B1A6', '#00AFCB', '#007AC2', '#004B7E', '#63C0AB']) ) # pie1.render(path="pie_yuan.html") # webbrowser.open("file://" + os.path.realpath("pie_yuan.html")) # -------------------------折扣价价格区间饼状图 pie2 = ( Pie(init_opts=opts.InitOpts(width='1000px', height='600px')) .add('', datas_pair_2, radius=['35%', '60%']) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%")) .set_global_opts( title_opts=opts.TitleOpts( title="当当网书籍\n\n折扣价价格区间", pos_left='center', pos_top='center', title_textstyle_opts=opts.TextStyleOpts( color='#007AC2', font_size=20, font_weight='bold' ), ) ) .set_colors(['#7EA2AC', '#A8C5C5', '#BED7D4', '#E3D2C8', '#D3B0A4', '#B5987A', '#7EAD99']) ) # pie2.render(path="pie_zhekou.html") # webbrowser.open("file://" + os.path.realpath("pie_zhekou.html")) # --------------------------------出版社书籍数量柱状图 counts = df.groupby('出版社')['书名'].count().sort_values(ascending=False).head(20) zhu=( Bar(init_opts=opts.InitOpts(height='600px',width='1000px')) .add_xaxis(counts.index.tolist()) .add_yaxis( '出版社书籍数量', counts.values.tolist(), label_opts=opts.LabelOpts(is_show=True,position='top'), itemstyle_opts=opts.ItemStyleOpts( color=JsCode("""new echarts.graphic.LinearGradient( 0, 0, 0, 1,[{offset: 0,color: '#F8C6C4'}, {offset: 1,color: '#EB6D73'}]) """ ) ) ) .set_global_opts( title_opts=opts.TitleOpts( title='各个出版社书籍数量柱状图'), xaxis_opts=opts.AxisOpts(name='书籍名称', type_='category', #axislabel_opts=opts.LabelOpts(rotate=45), axislabel_opts=opts.LabelOpts( rotate=30, # 调整标签旋转角度 font_size=12 # 调整字体大小 ), ), yaxis_opts=opts.AxisOpts( name='数量', min_=0, max_=290.0, splitline_opts=opts.SplitLineOpts(is_show=True,linestyle_opts=opts.LineStyleOpts(type_='dash')) ), tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross') ) .set_series_opts( markline_opts=opts.MarkLineOpts( data=[ opts.MarkLineItem(type_='average',name='均值'), opts.MarkLineItem(type_='max',name='最大值'), opts.MarkLineItem(type_='min',name='最小值'), ] ) ) ) # zhu.render(path="bar_chubanshe.html") # webbrowser.open("file://" + os.path.realpath("bar_chubanshe.html")) # #-------------------------电子书水球图 # # 电子书版本占比 # per = df['电子书价格'].value_counts()['']/len(df) # # # 首先,统计空字符串的数量 # count_no_ebook = (df['电子书价格'] == "").sum() # # 然后,计算总数 # total_count = len(df) # # 接着,计算没有电子书版本的比例 # per = count_no_ebook / total_count # print(f"没有电子书版本的比例是:{per * 100:.2f}%") # c = ( # Liquid() # .add("lq", [1-per], is_outline_show=False) # .set_global_opts(title_opts=opts.TitleOpts(title="电子书版本占比")) # ) # c.render_notebook() # c.render(path="c_dianzishu.html") # webbrowser.open("file://" + os.path.realpath("c_dianzishu.html")) #-------------------------电子书条形堆叠图和水球图 # 首先,统计空字符串的数量 count_no_ebook = (df['电子书价格'] == "").sum() # 然后,计算总数 total_count = len(df) # 接着,计算有电子书版本和没有电子书版本的比例 per_with_ebook = (total_count - count_no_ebook) / total_count per_no_ebook = count_no_ebook / total_count # 创建百分比堆叠条形图 bar = ( Bar(init_opts=opts.InitOpts(width="800px", height="500px")) .add_xaxis(["电子书版本占比"]) .add_yaxis( "有电子书版本", [per_with_ebook * 100], itemstyle_opts=opts.ItemStyleOpts(color="#FBD474"), stack="电子书" ) .add_yaxis( "无电子书版本", [per_no_ebook * 100], itemstyle_opts=opts.ItemStyleOpts(color="#F6CE8C"), stack="电子书" ) .set_global_opts( title_opts=opts.TitleOpts(title="电子书版本占比"), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=0)), yaxis_opts=opts.AxisOpts( max_=100, splitline_opts=opts.SplitLineOpts(is_show=True) ), tooltip_opts=opts.TooltipOpts( trigger="axis", axis_pointer_type="cross" ) ) ) # 创建水球图 # liquid_data = [1 - per_no_ebook] # c = ( # Liquid() # .add("lq", liquid_data, is_outline_show=False) # ) # 查询前30个文档 将查询结果转换为列表 documents = collection.find().limit(30) data_list = list(documents) # 提取推荐值和书名 titles = [doc['书名'] for doc in data_list] recommendations = [doc['推荐值'] for doc in data_list if '%' not in doc['推荐值'] and doc['推荐值'].isdigit()] # 将推荐值转换为浮点数 recommendations = [float(rec) for rec in recommendations] # # 创建一个Line对象,即折线图对象 # line = Line(init_opts=opts.InitOpts(width="1200

资源文件列表:

当当网爬虫+数据可视化代码.zip 大约有5个文件
  1. Data Preprocessing.py 4KB
  2. data visualization.py 10.36KB
  3. ebook_charts.html 34.88KB
  4. spider.py 6.26KB
  5. 当当网近4年畅销图书榜单数据.xlsx 255.62KB
0评论
提交 加载更多评论
其他资源 当当网排行榜爬虫+nosql数据分析
爬取当当网排行榜并连接本地nosql数据库进行多维度数据分析
2024年第五届“华数杯”全国大学生数学建模竞赛赛题.zip
2024年第五届“华数杯”全国大学生数学建模竞赛赛题.zip
2024年第五届“华数杯”全国大学生数学建模竞赛赛题.zip
chromedriver_linux64.zip
chromedriver_linux64.zip
魔方优化大师 v6.25
魔方优化大师 v6.25
智能车载终端叉车 车载人脸识别ADAS行为识别定制方案
第十九届全国智能车 智能车载终端通过指纹/人脸/扫码/刷卡等验证司机操作权限,杜绝无证驾驶、无关人员非法驾驶。叉车启动时,自动检测安全带状态,如未系安全带,叉车不能启动。当行驶速度超过允许的最大行驶速度时,通过声音/灯光提醒或车速限制。远程管控,实时管理车辆,GPS定位,轨迹回放,电子围栏功能。 一旦有障碍物或人员进入危险区域,驾驶员即可得到动态防撞预警,该技术能在各种复杂的路况环境中帮助驾驶员避免危险、预防事故和减轻压力,提供丰富的驾驶员视觉帮助、环境感知和自动驾驶功能,从而有效提升车辆的安全性能。 智能车载终端采用联发科MT6765 八核Cortex-A53处理器,主频高达2.3GHz,搭载Android 11.0系统,超强性能。采用IMG GE8320 GPU,低功耗超强续航。支持支持2路摄像头,最高支持32MP@30fps,配备高清摄像头,高精度人脸识别算法,快速对司机进行刷脸识别,精准定位抓取生物特征,防伪仿冒。 智能车载终端主板支持4G全网通、WIFI、蓝牙通讯方式,随时随地联网监控,安全稳定不受限,实现多样化通讯方式。通过GPS、A-GPS、GLONASS、北斗,多
智能车载终端叉车 车载人脸识别ADAS行为识别定制方案
大麦抢票脚本项目代码.zip
大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码.zip大麦抢票脚本项目代码
大麦抢票脚本项目代码.zip
免费下载Springboot驾校预约管理系统
系统概述: 驾校预约管理系统是一套集学员管理、教练管理、课程预约、考试安排等功能于一体的信息化解决方案。系统采用Spring Boot框架进行后端开发,利用其自动配置、内嵌服务器等特性,确保了系统的高性能与快速响应。 关键技术: Spring Boot:简化了传统Spring应用的配置,提供了丰富的自动配置选项。 MyBatis Plus:增强了MyBatis的功能,简化了数据库操作。 JWT:用于实现无状态、安全的认证机制。 Vue.js:作为前端框架,提供了丰富的组件和高效的数据绑定,优化了用户界面的交互性。 核心功能模块: 学员管理:系统支持学员信息的录入、修改和查询,以及学员状态的跟踪。 教练管理:教练信息管理,包括教练的排班和工作评价。 课程预约:学员可通过系统预约练车时间,系统自动处理预约冲突。 考试管理:管理学员的考试安排,记录考试成绩。 报表统计:系统自动生成教练工作量、学员通过率等统计报表。 安全性: 系统采用JWT进行用户认证,确保了数据传输的安全性和用户操作的合法性。同时,系统提供了角色权限管理,确保不同角色的访问权限得到有效控制。
知识图谱作业代码,包含数据预处理与转换、模型训练、结果评估等
知识图谱作业代码,包含数据预处理与转换、模型训练、结果评估等