数据分析:当当网书籍数据可视化分析

在这里插入图片描述

当当网书籍数据可视化分析

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


专栏案例:《数据可视化分析》
数据分析:某电商优惠卷数据分析
数据分析:旅游景点销售门票和消费情况分析
数据分析:消费者数据分析
数据分析:餐厅订单数据分析
数据分析:基于随机森林(RFC)对酒店预订分析预测
数据分析:基于K-近邻(KNN)对Pima人糖尿病预测分析
数据分析:麦当劳食品营养数据探索并可视化

文章目录

  • 当当网书籍数据可视化分析
  • 1、前言
  • 2、导入模块
  • 3、导入数据
  • 4、数据预处理
    • 4.1、数据处理
    • 4.2、提取评论数
    • 4.3、原价、售价、电子书价格 数值化
    • 4.4、选择需要用到的列
    • 4.5、缺失值
    • 4.6、电子书价格列额外处理
    • 4.7、重复值
  • 5、数据可视化
    • 5.1、书籍总体价格区间
    • 5.2、各个出版社书籍数量柱状图
    • 5.3、电子书版本占比
    • 5.4、书籍评论数最高Top20
  • 总结


1、前言

随着互联网的快速发展,电子商务行业在中国经历了爆炸式的增长。作为国内知名的在线购物平台,当当网在其中发挥了举足轻重的作用。为了更好地满足消费者的需求,优化用户体验,提高运营效率,数据分析成为了当当网运营过程中不可或缺的一环。

数据分析在电子商务中扮演着至关重要的角色。通过对大量数据的挖掘和分析,企业可以洞察市场趋势,了解用户行为,优化产品布局,制定营销策略等。当当网的数据分析流程旨在从海量数据中提取有价值的信息,为公司的决策提供数据支持。

2、导入模块

import pandas as pd
from pyecharts.charts import *
from pyecharts.globals import ThemeType
from pyecharts.commons.utils import JsCode
import pyecharts.options as opts

import pandas as pd: 导入pandas库,并给它一个简短的别名pd。pandas是一个用于数据处理和分析的强大库。
from pyecharts.charts import *: 从pyecharts库的charts模块导入所有内容。pyecharts是一个用于生成Echarts图表的Python库。
from pyecharts.globals import ThemeType: 从pyecharts库的globals模块导入ThemeType。这可能用于设置图表的默认主题。
from pyecharts.commons.utils import JsCode: 从pyecharts库的commons.utils模块导入JsCode。这可能是一个用于与JavaScript代码交互的工具。
import pyecharts.options as opts: 从pyecharts库导入其选项模块,并给它一个简短的别名opts。这可能用于配置图表的选项和参数。
这段代码主要用于数据分析和可视化的目的,特别是使用Echarts图表库来生成和配置图表。

3、导入数据

df = pd.read_csv('.\书籍信息.csv')
df.head()

在这里插入图片描述

4、数据预处理

4.1、数据处理

从DataFrame的’标题’列中提取书名(不包括括号及其内容),并将结果存储在新列’书名’中,然后显示这个处理过的DataFrame的前五行。

df['书名'] = df['标题'].apply(lambda x:x.split('(')[0])
df.head()

在这里插入图片描述

从DataFrame的’标题’列中提取书籍简介(括号及其内容),并将结果存储在新列’书籍简介’中,然后将缺失的值替换为’无’,最后显示这个处理过的DataFrame的第一行。

df['书籍简介'] = df['标题'].str.extract('.*?((.*?))')
df['书籍简介'].fillna('无', inplace=True)
df.head(1)

在这里插入图片描述

4.2、提取评论数

从DataFrame的’评价’列中提取评论数(去掉’条评论’),并将结果存储在新列’评论数’中,然后显示这个处理过的DataFrame的第一行。

df['评论数'] = df['评价'].str.replace('条评论','').astype('int64')
df.head(1)

在这里插入图片描述

4.3、原价、售价、电子书价格 数值化

从DataFrame的’原价’、'售价’和’电子书价格’列中删除所有的’¥’字符,然后显示这个处理过的DataFrame的第一行。

df['原价'] = df['原价'].str.replace('¥', '')
df['售价'] = df['售价'].str.replace('¥', '')
df['电子书价格'] = df['电子书价格'].str.replace('¥', '')
df.head(1)

在这里插入图片描述

df.info()

在这里插入图片描述

从DataFrame的’原价’和’售价’列中删除所有的’,'字符,并将这两列从字符串转换为浮点数

df['原价'] = df['原价'].str.replace(',', '').astype('float64')
df['售价'] = df['售价'].str.replace(',', '').astype('float64')

4.4、选择需要用到的列

df = df[['书名','书籍简介','评论数','作者','出版日期','出版社','原价','售价','电子书价格']]
df.head(1)

在这里插入图片描述

4.5、缺失值

df.isnull().sum()

在这里插入图片描述

df['作者'].fillna('未知', inplace=True)
df['出版社'].fillna('未知', inplace=True)
df.isnull().sum()

在这里插入图片描述

4.6、电子书价格列额外处理

df['电子书价格'] = df['电子书价格'].str.replace(',', '').astype('float64')
df['电子书价格'].fillna('无电子书版本', inplace=True)

4.7、重复值

计算DataFrame df中的重复行数。

df.duplicated().sum()

输出:

0
df.info()

在这里插入图片描述

生成描述性统计信息

df.describe()

在这里插入图片描述

5、数据可视化

5.1、书籍总体价格区间

这个函数tranform_price根据输入的价格值,返回一个描述价格范围的字符串。如果价格小于或等于50元,返回’050元’;如果价格在50到100元之间,返回’51100元’;以此类推,如果价格大于1000元,返回’1000以上’。

def tranform_price(x):if x <= 50.0:return '0~50元'elif x <= 100.0:return '51~100元'elif x <= 500.0:return '101~500元'elif x <= 1000.0:return '501~1000元'else:return '1000以上'

将DataFrame df中的’原价’列转换为’价格分级’列,并统计每个价格分级的出现次数。

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)]

这段代码将DataFrame df中的’售价’列转换为’售价价格分级’列,并统计每个售价价格分级的出现次数。结果存储在price_2和datas_pair_2中。

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(theme='dark',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='#F0F8FF', font_size=20, font_weight='bold'),)).set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF', '#7FFFAA'])
)
pie1.render_notebook() 

在这里插入图片描述

5.2、各个出版社书籍数量柱状图

找出拥有最多书籍的20家出版社

counts = df.groupby('出版社')['书名'].count().sort_values(ascending=False).head(20)
bar=(Bar(init_opts=opts.InitOpts(height='500px',width='1000px',theme='dark')).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: 'rgb(255,99,71)'}, {offset: 1,color: 'rgb(32,178,170)'}])"""))).set_global_opts(title_opts=opts.TitleOpts(title='各个出版社书籍数量柱状图'),xaxis_opts=opts.AxisOpts(name='书籍名称',type_='category',                                           axislabel_opts=opts.LabelOpts(rotate=90),),yaxis_opts=opts.AxisOpts(name='数量',min_=0,max_=29.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='最小值'),]))
)
bar.render_notebook()

在这里插入图片描述

5.3、电子书版本占比

计算在DataFrame df中没有电子书版本的书所占的百分比,并将这个百分比值赋给变量per。

per = df['电子书价格'].value_counts()['无电子书版本']/len(df)
c = (Liquid().add("lq", [1-per], is_outline_show=False).set_global_opts(title_opts=opts.TitleOpts(title="电子书版本占比"))
)
c.render_notebook()

在这里插入图片描述

5.4、书籍评论数最高Top20

price_top = df.groupby('书名')['原价'].sum().sort_values(ascending=False).head(20)
price_top

在这里插入图片描述

bar=(Bar(init_opts=opts.InitOpts(height='500px',width='1000px',theme='dark')).add_xaxis(price_top.index.tolist()).add_yaxis('书籍单价',price_top.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: 'rgb(255,99,71)'}, {offset: 1,color: 'rgb(32,178,170)'}])"""))).set_global_opts(title_opts=opts.TitleOpts(title='单价最高的书籍详细柱状图'),xaxis_opts=opts.AxisOpts(name='书籍名称',type_='category',                                           axislabel_opts=opts.LabelOpts(rotate=90),),yaxis_opts=opts.AxisOpts(name='单价/元',min_=0,max_=1080.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='最小值'),]))
)
bar.render_notebook()

在这里插入图片描述


总结

本次数据分析为当当网提供了有价值的洞察和建议。通过深入挖掘和分析销售数据,我们可以更好地了解用户需求和市场趋势,优化库存管理、营销策略和推荐系统。同时,这些发现也为企业决策提供了依据,有助于促进图书市场的可持续发展。

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于场景文字知识挖掘的细粒度图像识别算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;基于场景文字知识挖掘的细粒度图像识别算法1、研究背景2、方法提出方法模块 3、试验4、文章贡献 二、RNN代码学习2.1、什么是RNN2…

Mysql学习记录补充

索引 在无索引情况下&#xff0c;就需要从第一行开始扫描&#xff0c;一直扫描到最后一行&#xff0c;我们称之为 全表扫描&#xff0c;性能很低。 如果我们针对于这张表建立了索引&#xff0c;假设索引结构就是二叉树&#xff0c;那么也就意味着&#xff0c;会对age这个字段…

Linux|Grep 命令的 12 个实用示例

您是否曾经遇到过在文件中查找特定字符串或模式的任务&#xff0c;但不知道从哪里开始查找&#xff1f;那么&#xff0c;grep 命令可以拯救你&#xff01; grep 是一个功能强大的文件模式搜索器&#xff0c;每个 Linux 发行版都配备了它。如果出于某种原因&#xff0c;它没有安…

【C++入门学习指南】:函数重载提升代码清晰度与灵活性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、函数重载1.1 函数重载的概念1.2 函数重载的作用1.3 C支持函数重载的原理1.4 扩展 &…

C++ STL库详解:容器适配器stack和queue的结构及功能

一、stack 1.1stack的介绍 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xf…

图数据库(neo4j)在工业控制中的应用

图模型 事物的模型中&#xff0c;除了它自身的某些特征之外&#xff0c;还包括它与其它事物的关系特征&#xff0c;例如一个学生的属性包括姓名&#xff0c;性别&#xff0c;年龄等属性&#xff0c;同时&#xff0c;他还有许多关系属性&#xff0c;比如他属于哪一个院系&#x…

修改照片尺寸好用的工具,分享4款!

在数字时代&#xff0c;照片已成为我们生活的一部分&#xff0c;而如何调整照片尺寸以满足不同的需求&#xff0c;则显得至关重要。今天&#xff0c;我们就来探讨那些可以修改照片尺寸的工具&#xff0c;让你轻松应对各种尺寸需求。 茄子水印相机 这是一款功能强大、操作简单的…

MacBook有必要装清理软件吗?CleanMyMac X v4.14.6 直装特别版 附安装教程

MacBook是苹果公司的一款高端笔记本电脑&#xff0c;但是&#xff0c;随着使用时间的增长&#xff0c;MacBook也会出现一些问题&#xff0c;比如运行缓慢、卡顿、垃圾文件堆积、磁盘空间不足等。这些问题不仅影响了用户的使用体验&#xff0c;也可能对MacBook的寿命和安全性造成…

已经购买了阿里云服务器ECS,如何在上面部署幻兽帕鲁服务器?(一键安装非常简单)

很多人都知道阿里云可以支持一键购买并部署幻兽帕鲁服务器&#xff0c;不需要你进行任何配置&#xff0c;也不用你登录服务器&#xff0c;通过查看和管理计算巢面板就可以了&#xff0c;直接就可以开玩了。但是如果你已经有了一台阿里云服务器ECS那么该怎么去搭建幻兽帕鲁服务器…

Centos 内存和硬盘占用情况以及top作用

目录 只查看内存使用情况&#xff1a; 内存使用排序取前5个&#xff1a; 硬盘占用情况 定位占用空间最大目录 top查看cpu及内存使用信息 前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…

c++类继承

一、继承的规则 &#xff08;1&#xff09;基类成员在派生类中的访问权限不得高于继承方式中指定的权限。例如&#xff0c;当继承方式为protected时&#xff0c;那么基类成员在派生类中的访问权限最高也为protected&#xff0c;高于protected会降级为protected&#xff0c;但低…

通讯基本概念

通信的方式有多种&#xff0c;按数据传输方式可分为串行通讯和并行通信&#xff1b;按通信数据同步方式可分为同步通信和异步通信&#xff1b;按数据通信的方向可分为 一、串行通信和并行通信 串行通信&#xff1a;设备之间通过少量的数据信号线&#xff08;一般是8根以下&am…

STM32 自学笔记 学习笔记 一

起源&#xff0c;A7,A9,M3&#xff0c;原来弄了A9的TQ2440&#xff0c;结果还得来重新熟悉下32函数JLINK使用SW方式&#xff0c;本来可以下载&#xff0c;但是一根线掉了重新上去&#xff0c;就出各种跟线无关问题&#xff0c;干脆把32断了重新接&#xff0c;结果就成功了&…

Linux权限【超详细】

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 扩展知识&#xff1a…

初识webpack(一)概念、入口配置、输出配置、loader等

目录 (一)概念 webpack的依赖图 (二)webpack的基本使用 (三)webpack的配置文件 1.入口(entry)配置 2.输出(output)配置 (三)loader 1.css文件处理 (1)安装css-loader和style-loader (2)在webpack.config.js中配置loader 2.less文件处理 3.postcss的使用 (1)安装…

深入理解K均值算法:Python中的应用与实践

目录 写在开头1. K均值算法基础1.1 什么是K均值算法&#xff1f;1.2 K均值算法的工作原理1.3 算法的优势与局限性 2. K均值算法的实现步骤2.1 初始聚类中心的选择方法2.1.1 随机选择初始中心点2.1.2 K均值算法 2.2 数据点与聚类中心的距离计算2.2.1 欧氏距离计算2.2.2 曼哈顿距…

MySQL-----约束

目录​​​​​ 约束 一 主键约束 1-1 操作-添加单列主键 1-2 操作-添加多列主键 1-3 修改表结构添加主键 1-4 删除主键约束 二 自增长约束 2-1 指定自增长字段的初始值 2-2 删除自增列 三 非空约束 3-1 创建非空约束 3-2 删除非空约束 四 唯一约束…

寒假作业2月4号

第三章 类与构造函数 一&#xff0e;选择题 1、下列不能作为类的成员的是&#xff08;B&#xff09; A. 自身类对象的指针 B. 自身类对象 C. 自身类对象的引用 D. 另一个类的对象 2、假定AA为一个类&#xff0c;a()为该类公有的函数成员&#xff0c;x为该类的一个对象&am…

SpringCloud + Nacos环境下抽取Feign独立模块并支持MultipartFile

文章目录 一、前提条件和背景1. 前提2. 背景 二、Feign模块1. 依赖引入2. application.yaml配置3. 扩展支持MultipartFile4. 将media-api注册到feign 三、Media模块四、Content模块1. 引入依赖2. 启用FeignClient3. 测试 五、需要澄清的几点 一、前提条件和背景 1. 前提 已经…

Axure RP9原型设计工具使用记录:实际应用及问题记录

Axure RP9使用记录二 &#x1f4da;第三章 实际应用&#x1f4d7;快速归位00坐标&#x1f4d7;动态菜单&#x1f4d7;填充图片&#x1f4d7;下拉框联动&#x1f4d7;单选框&#x1f4d7;全局变量 ⁉️问题记录❓问题一&#xff1a;菜单不显示❗解决方式&#xff1a;调整菜单元件…