数据可视化实战(三)

图书销量情况对比

import pandas as pd
import matplotlib.pyplot as plt 

# 读取Excel数据
df=pd.read_excel('mrbook.xlsx')
df
序号书号序号.1月份销量rate
0B189.787569e+1211月15060.3
1B199.787569e+1222月1200-0.3
2B259.787569e+1233月33050.6
3B219.787569e+1244月66100.5
4NaNNaN55月88880.3
5B159.787569e+1266月123540.3
#处理中文乱码
plt.rcParams['font.sans-serif']=['SimHei']
# 用来正常的显示负号
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(12,9))
fig,ax1 = plt.subplots()

# 绘制柱状图
ax1.bar(df['月份'], df['销量'])


# plt.barh(y = industry.index[::-1],
#          width=industry.values[::-1],
#          color = '#3c7f7f')

plt.title(label='      销量情况对比     ', 
          fontsize=32, weight='bold', color='white', 
          backgroundcolor='#cf778f',ha = 'center',pad = 30)
ax1.tick_params(labelsize=16)
ax1.grid(lw = 0.5,color = '#3c7f7f',ls = '--')
# 设置y轴标签
ax1.set_ylabel( '销售(册)', fontsize=18)

ax2 = ax1.twinx()
ax2.plot(df['月份'], df['rate'], color='#3c0f7f', linestyle='--', marker='o', linewidth=2)
# 设置y轴标签
ax2.set_ylabel('增长率', fontsize=18)

# 添加文本
for a,b in zip(df['月份'], df['rate']):
    plt.text(a, b+0.02, '%.2f'%b, ha='center', va='bottom', fontsize=10, color='r')
plt.show()

在这里插入图片描述

订单数据分析

# 读取Excel数据
mrtb=pd.read_excel('mrtb_data.xlsx')
mrtb.shape # (599, 21)
mrtb.head()
买家会员名买家实际支付金额宝贝总数量宝贝标题类别宝贝种类总金额收货人姓名性别收货地址...物流单号确认收货时间联系手机联系电话订单付款时间订单关闭原因订单创建时间订单备注订单状态运送方式
0mr0001451100.01.0【正版即插即用】ASP.NET编程词典珍藏版(含1TB移动硬盘)资源库编程词典1.01100.0*************...No:210262018-03-19 16:23:07****'null2018-03-09 14:55:49订单未关闭2018-03-09 10:00:36'null交易成功快递
1mr0004921198.01.0【正版即插即用】ASP.NET编程词典珍藏版(含1TB移动硬盘)资源库编程词典1.01198.0*************...No:213732018-06-15 10:57:01****'null2018-06-09 09:25:16订单未关闭2018-06-08 19:33:32'null交易成功快递
2mr0004931198.01.0【正版即插即用】ASP.NET编程词典珍藏版(含1TB移动硬盘)资源库编程词典1.01198.0*************...No:213742018-06-15 10:57:01****'null2018-06-09 09:25:16订单未关闭2018-06-08 19:33:32'null交易成功快递
3mr0002471168.01.0【正版-即插即用】C#编程词典珍藏版(含1TB移动硬盘)资源库编程词典1.01168.0*************...No:211282018-12-02 10:46:44****'null2018-11-20 19:21:58订单未关闭2018-11-20 19:21:33'null交易成功快递
4mr0002711168.01.0【正版-即插即用】C#编程词典珍藏版(含1TB移动硬盘)资源库编程词典1.01168.0*************...No:211522018-11-01 18:41:44****'null2018-10-29 02:31:39订单未关闭2018-10-29 02:30:37'null交易成功快递

5 rows × 21 columns

不同性别在不同类别的消费分布


# 根据类别分组,计算每组中 买家实际支付金额 的总和
mrtb1=mrtb.groupby(['类别'])['买家实际支付金额'].sum()
mrtb1
"""
类别
V1会员        7425.00
V2会员       14651.00
图书         44650.33
明日高级VIP    15096.00
编程词典       28681.20
Name: 买家实际支付金额, dtype: float64
"""


# 根据类别和性别分组,统计不同买家的人数,并重置索引
mrtb2=mrtb.groupby(['类别','性别'])['买家会员名'].count().reset_index()
mrtb2
类别性别买家会员名
0V1会员31
1V1会员44
2V2会员36
3V2会员13
4图书50
5图书381
6明日高级VIP3
7明日高级VIP14
8编程词典6
9编程词典21
# 绘制柱状图:不同类别的买家实际支付金额
plt.figure(figsize=(8, 6))
plt.bar(mrtb1.index, mrtb1.values, color='blue', alpha=0.5)
plt.xlabel('类别', fontsize=12)
plt.ylabel('买家实际支付金额', fontsize=12)
plt.title('不同类别的买家实际支付金额', fontsize=16)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

在这里插入图片描述

不同性别在不同类别的消费分布

mrtb1_df =  pd.DataFrame(mrtb1)
# 使用透视表计算不同性别在不同类别的消费总额
pivot_table = pd.pivot_table(mrtb1_df.merge(mrtb2, on='类别'), index='类别', columns='性别', values='买家实际支付金额', aggfunc='sum')
pivot_table
性别
类别
V1会员7425.007425.00
V2会员14651.0014651.00
图书44650.3344650.33
明日高级VIP15096.0015096.00
编程词典28681.2028681.20
# 绘制堆叠柱状图
plt.figure(figsize=(8, 6))
categories = pivot_table.index
labels = pivot_table.columns
colors = ['pink', 'lightblue']

bottom = None
for label in labels:
    values = pivot_table[label]
    plt.bar(categories, values, bottom=bottom, label=label, color=colors.pop(0))
    if bottom is None:
        bottom = values
    else:
        bottom += values
    for i, value in enumerate(values):
        plt.annotate(f'¥{value:.2f}', (i, bottom[i]), ha='center', va='bottom')
        
plt.xlabel('类别', fontsize=12)
plt.ylabel('买家实际支付金额', fontsize=12)
plt.title('不同性别在不同类别的消费分布', fontsize=16, backgroundcolor='#cf778f')
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

在这里插入图片描述

双色球中奖号码分析

win = pd.read_csv('data.csv',encoding='gb2312')
win.head()
开奖日期期号中奖号码销售额(元)中奖注数一等奖中奖注数二等奖
02020/1/16202000705 12 17 20 25 31 1035803596238 (津 冀 吉 沪..)269
12020/1/14202000603 04 05 10 16 32 0936169731620 (浙 豫 粤 桂..)363
22020/1/12202000511 16 17 22 26 32 044006424768 (冀 皖 赣 鄂..)224
32020/1/9202000402 15 17 27 32 33 033708261587 (晋 浙 鲁 粤..)189
42020/1/7202000309 17 26 29 30 32 0336896093816 (苏 浙 鄂 湘..)134

# 提取中奖号码
winning_numbers = win['中奖号码'].str.split(' ', expand=True)

# 将"nan"替换为实际的NaN值
# df.replace("nan", np.nan, inplace=True)
# 填充NaN值为0
# winning_numbers.fillna(0, inplace=True).astype(int)

winning_numbers
0123456789101112
005121720253110
103040510163209
211161722263204
302151727323303
409172629303203
..........................................
82708101214182814
82801041922242515
82906101128303312
83004212331323304
83103091520272901

832 rows × 13 columns

# 统计每一列中不同数字出现的次数
number_counts  = winning_numbers.apply(pd.value_counts).fillna(0)
number_counts = number_counts[[0, 2, 4, 6, 8, 10, 12]]

# 重置列索引
number_counts.set_axis(range(1, len(number_counts.columns) + 1), axis=1, inplace=True)
number_counts.head()
1234567
0.00.00.00.00.00.00.0
01163.00.00.00.00.00.060.0
02128.022.00.00.00.00.049.0
0385.038.03.00.00.00.047.0
0480.039.010.00.00.00.056.0
# 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(number_counts, annot=True, fmt='g', cmap='YlGnBu')
plt.title('     双色球中奖号码次数热力图     ', fontsize=16, backgroundcolor='#cf778f')
plt.xlabel('中奖号码位置',  fontsize=12)
plt.ylabel('中奖号码',  fontsize=12)
plt.xticks(rotation=45)
plt.yticks(rotation=0)
plt.tight_layout()
plt.show()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis从入门到实战

Redis基础 简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据存储和缓存系统。它是一个高性能的键值存储数据库,,以其快速的读写能力、丰富的数据结构和多种应用场景而受到广泛关注。默认的database有16个&…

使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问

目录 ⛳️推荐 1. 安装Docker 2. 本地安装部署YesPlayMusic 3. 部署公有云YesPlayMusic播放器 3.1 安装cpolar内网穿透 3.2 固定YesPlayMusic公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一…

Docker网桥、DockerFile自定义镜像、DockerCompose工具(二)

这里写目录标题 1、网桥1.1、网络相关操作1.1.1、创建网络1.1.2、列出网络1.1.3、加入网络1.1.4、查看网络详情1.1.5、删除网络 2、Dockerfile自定义镜像2.1、镜像结构2.2、Dockerfile语法2.2.1、概述2.2.2、快速入门2.2.1、FROM2.2.2、CMD2.2.3、ENV2.2.4、WORKDIR2.2.5、run2…

银行OA系统|基于SpringBoot架构+ Mysql+Java+ B/S结构的银行OA系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

基于FPGA的FFT图像滤波设计

1.FFT滤波算法介绍 FFT滤波就是通过傅里叶运算将图像转换到频域空间,然后在频域中对图像进行处理,最后将处理后的图像通过傅里叶逆运算将图像转会到时域空间。 在频域空间中,我们能够更好的对图像的噪声进行分析,然后找出相关规律…

MAC废纸篓删掉还能复原吗 MAC废纸篓倾倒掉的文件怎么恢复 删除的东西在哪里可以找回来 怎么找回已删除的文件

MAC系统中的废纸篓(Trash)通常指用来临时存放用户即将丢弃的文件的地方。MAC系统的废纸篓功能相当于Windows系统的垃圾回收站,通过废纸篓删除的文件,一般是无法从系统中操作还原。那么,MAC废纸篓删掉还能复原吗&#x…

5-隐藏层:神经网络为什么working

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享,严禁他用!!如有侵权,请联系删除 目录 一、知识引入 (一)隐藏层 (二)泛化 (三…

UE4 Json事件设置Asset值(Asset如果都在同一目录下)

通过Json事件来设置,比如骨骼网格体(换皮)等等

202112青少年软件编程(Scratch图形化)等级考试试卷(三级)

第1题:【 单选题】 下列程序哪个可以实现: 按下空格键, 播放完音乐后说“你好! ” 2 秒? ( ) A: B: C: D: 【正确答案】: C 【试题解析】 : 第2题:【 单选题】 执行下列程序, 变量 N 的值不可能是? ( ) A:1 B:4 C:5 D:6 【正确答案】: D 【试题解析】…

Git进阶用法:Git分支轻松使用,配有图文

一、文章内容 git和分支相关的概念.git和分支有关的命令.git项目实战环节. 二、相关概念 分支:分支的概念好比树干的分支,每一跟分支都是从主干分出来的,营养是主干给的,所以在git里主干和分支也是如此,在git里主分…

day02_mysql-DDLDMLDQL_课后练习 - 参考答案

文章目录 day02_mysql_课后练习第1题第2题 day02_mysql_课后练习 第1题 案例: 1、创建数据库test02_library 2、创建表格books 字段名字段说明数据类型b_id书编号int(11)b_name书名varchar(50)authors作者varchar(100)price价格floatpub…

opengl 学习(六)-----坐标系统与摄像机

坐标系统与摄像机 分类引言坐标系统摄像机教程在CMake中使用全局定义预编译宏,来控制是否开启错误检查补充 分类 opengl c 引言 OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#xff…

pcl采样:随机采样

pcl 随机采样,实际上就是抽稀 头文件 代码 结果

ubuntu系统下如何使用vscode编译和调试#小白入门#

编程环境:ubuntu系统为18.04.1,vscode版本为1.66.2 一、VSCode切换中文显示: 1、vscode安装完成后启动,在左侧externsions中搜索“简体中文”插件,并完成安装: 2、选择右下角齿轮形状的"Manage"&#xff…

【C++】弥补C语言的不足(①命名冲突问题)

Hello,这里是关于C的入门,C的命名冲突问题,如果你像我一样对命名空间满是疑惑,只知道using namespace std,那么可以看下这篇文章,我自己之前的一些疑惑以及一些形象的理解。 命名冲突问题与命名空间 🌻命名…

【图解物联网】第1章 物联网的基础知识

1.1 物联网入门 1.1.1 物联网 物联网的英语是Internet of Things,缩写为IoT,这里的“物”指的是我们身边一切能与网络相连的物品。只要能与网络相连,就都是物联网说的“物”。 物联网就是“物”之间通过连接互联网来共享信息并产生…

CSS 让元素根据内容自适应宽度

一、需求 点击链接跳转,只点击标红区域才跳转,右侧空白区域不要跳转 二、实现 宽度太宽,导致右侧空白区域也加了跳转效果,修改为 将元素的最大宽度设置为其内容所需的宽度。 方法一:建议方式 使用 display: inline…

MyBatis框架简述

作用 降低开发人员使用JDBC的难度降低开发人员进行Dao层的开发难度 MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD。MyBatis在三层架构中负责持久层的,属于持久层框架。MyBatis的发展历程:【引用百度百科】 MyBatis本是apache的一个开…

数据结构—稀疏多项式相加

利用链表实现两个稀疏多项式相加。 代码 #include <iostream> using namespace std;// 定义多项式项结构体 typedef struct {int x; // 系数int y; // 指数 } Elemtype;// 定义链表节点结构体 typedef struct Node {Elemtype data;struct Node* next; } *LinkList, N…

C语言 自定义类型:联合和枚举

目录 前言 一、联合体 1.1 联合体的特点 1.2 联合体与结构体的区别 1.3 联合体的大小计算 1.4 联合体例子 1.5 联合体判断大小端 二、枚举 2.1 枚举类型定义 2.2 枚举类型的优点 2.3 枚举类型的使用 总结 前言 之前我们讲了C语言其中一个自定义类型结构体&#xff…