BD第8课:胸罩颜色和上胸围销售比例和分布

2023-11-08 19:20

本文主要是介绍BD第8课:胸罩颜色和上胸围销售比例和分布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文会对胸罩销售数据进行更复杂的分析,如罩杯和上胸围的综合分析,以及胸罩颜色销售数据的分析。

按上胸围分析胸罩的销售比例

按上胸围分析胸罩的销售比例与按罩杯分析胸罩的销售比例的方式相同,只是将 size1 换成了 size2。

        from pandas import *
from matplotlib.pyplot import *
import sqlite3
import sqlalchemy
# 打开SQLite数据库
engine = sqlalchemy.create_engine('sqlite:///bra.sqlite')
# 设置字体让图表显示中文
rcParams['font.sans-serif'] = ['SimHei']
options.display.float_format = '{:,.2f}%'.format
# 选择source和size2字段
sales = read_sql('select source,size2 from t_sales',engine)
# 按上胸围(size2)分组,并计算每一类上胸围的销售数据
size2Count = sales.groupby('size2')['size2'].count()
print(size2Count)size2Total = size2Count.sum()
print(size2Total)
size2 = size2Count.to_frame(name='销量')
# 插入“比例”字段,用于显示销售比例
size2.insert(0,'比例',100*size2Count/size2Total)
size2.index.names=['上胸围']
# 按销量排序
size2 = size2.sort_values(['销量'], ascending=[0])
print(size2)
# 将上胸围尺寸转换为列表,作为在饼图上显示的标签
labels = size2.index.tolist()
size2['销量'].plot(kind='pie',labels=labels,autopct='%.2f%%')
legend()
axis('equal')
show()

运行程序,会看到在窗口中绘制了如图1所示的饼图。


v2-af1b21c6dd800d87591df7d812c7d217_b.jpg

罩杯和上胸围综合数据可视化分析

罩杯和上胸围综合数据分析要稍微复杂一些,因为要同时考虑 size1 和 size2,主要是同时按 size1 和 size2 分组,但组分得这么细就会造成一个问题,有一些组的记录很少,而且组过多,如果将所有的组都放到饼图上,那么显得太乱。所以我们会将销售量比较大的组显示在饼图上,哪些销售量比较小的组统计一个总销量,都作为“其他”显示。本例将 500 作为单独显示的阈值,也就是说,只有销量大于 500 的组才会显示在饼图上。

        from pandas import *
from matplotlib.pyplot import *
import sqlite3
import sqlalchemy
engine = sqlalchemy.create_engine('sqlite:///bra.sqlite')
rcParams['font.sans-serif'] = ['SimHei']
options.display.float_format = '{:,.2f}%'.formatsales = read_sql('select source,size1,size2 from t_sales',engine)
size1size2Count = sales.groupby(['size1','size2'])['size1'].count()
print(size1size2Count)
size1size2Total = size1size2Count.sum()
print(size1size2Total)
size1size2 = size1size2Count.to_frame(name='销量')
n = 500
# 过滤出销量小等于500的组,并统计这些组的总销量,将统计结果放到DataFrame中
others = DataFrame([size1size2[size1size2['销量'] <= n].sum()],index=MultiIndex(levels=[[''],['其他']],labels=[[0],[0]]))# 将“其他”销量放到记录集的最后
size1size2 = size1size2[size1size2['销量']>n].append(others)
print(size1size2)size1size2 = size1size2.sort_values(['销量'],ascending=[0])
size1size2.insert(0,'比例',100 * size1size2Count / size1size2Total)
print(size1size2)
labels = size1size2.index.tolist()
newLabels = []
# 生成饼图外侧显示的每一部分的表示(如75B、80A等)
for label in labels:newLabels.append(label[1] + label[0])
pie(size1size2['销量'],labels=newLabels,autopct='%.2f%%')
legend()
axis('equal')
title('罩杯+上胸围销售比例')
show()

运行程序,会看到在窗口上显示了如图2所示的饼图。


v2-8cd71653c74ebdc1d23e4788f301e3f3_b.jpg

哪一种颜色的胸罩卖的最好

这一节会按颜色统计胸罩的销售比例,从而可知哪一种颜色的胸罩卖的最好。按颜色对胸罩销售数据进行统计和按罩杯、上胸围对胸罩销售数据进行统计的方式类似,只是需要将分组的字段改成 color1。

        from pandas import *
from matplotlib.pyplot import *
import sqlite3
import sqlalchemy
engine = sqlalchemy.create_engine('sqlite:///bra.sqlite')
rcParams['font.sans-serif'] = ['SimHei']
options.display.float_format = '{:,.2f}%'.format
sales = read_sql('select source,color1 from t_sales',engine)
# 按color1分组,并统计每组的数量
color1Count = sales.groupby('color1')['color1'].count()
# 统计总销量
color1Total = color1Count.sum()
print(color1Total)
color1 = color1Count.to_frame(name='销量')
print(color1)
color1.insert(0,'比例', 100 * color1Count / color1Total)
color1.index.names=['颜色']
color1 = color1.sort_values(['销量'], ascending=[0])
print(color1)
n = 1200
# 销量小于等于1200都属于“其他”分组
others = DataFrame([color1[color1['销量'] <= n].sum()],index=MultiIndex(levels=[['其他']],labels=[[0]]))
# 将others添加到原来的记录集中
color1 = color1[color1['销量']>n].append(others)
print(color1)
# 将索引转换为在饼图周围显示的标签
labels = color1.index.tolist()
pie(color1['销量'],labels=labels,autopct='%.2f%%')
legend()
axis('equal')
title('按胸罩颜色统计的比例')
show()

运行程序,会在窗口上显示如图3所示的饼图。


v2-39fe68812d28042b8387a6fcf5c8eb72_b.jpg

罩杯与上胸围分布【盒状图与直方图】

通过盒状图和直方图可以提现胸罩和上胸围的分布,也就是胸罩和上胸围主要集中在哪一个区域,要将罩杯和上胸围的综合统计数据显示在盒状图和直方图上,需要做一个变化。X 轴用浮点数同时表示罩杯和上胸围,整数部分表示罩杯,1:A、2:B、3:C、4:D。小数部分表示上胸围,如 .75 表示上胸围是 75,那么将整数和小数整合在一起就是 2.75 表示 75B、3.80 表示 80C,以此类推。

        from pandas import *
from matplotlib.pyplot import *
import sqlite3
import sqlalchemy
engine = sqlalchemy.create_engine('sqlite:///bra.sqlite')
rcParams['font.sans-serif'] = ['SimHei']
options.display.float_format = '{:,.2f}%'.format
sales = read_sql('select source,size1,size2,color1 from t_sales', engine)
# 将A、B、C、D变成1、2、3、4
sales.loc[sales['size1'] == 'A','size1'] = 1
sales.loc[sales['size1'] == 'B','size1'] = 2
sales.loc[sales['size1'] == 'C','size1'] = 3
sales.loc[sales['size1'] == 'D','size1'] = 4
sales = sales.dropna()
print(sales)
# 组合整数和小数部分,变成2.75,2.80等样式
sales['size3'] = sales['size1'].astype('str') + '.' + sales['size2'].astype('str')
print(sales)
# 将size3转换为float类型的列
sales['size3'] = sales['size3'].astype('float')
box = {'facecolor':'0.75','edgecolor':'b','boxstyle':'round'}
fig,(ax1,ax2) = subplots(1,2,figsize=(12,6))
ax1.hist(x=sales.size3) 
ax2.boxplot(sales.size3)
ax1.text(3.5,8000,'1:A\n2:B\n3:C\n4:D\n小数部分:上胸围\n1.80 = A80\n2.75 = B75',bbox = box)
ax2.text(1.2,4,'1:A\n2:B\n3:C\n4:D\n小数部分:上胸围\n1.80 = A80\n2.75 = B75',bbox = box)show()

运行程序,会在窗口上显示如图4所示的直方图和盒状图。很显然,直方图和盒状图都显示数据主要集中在 2.0 到 3.0 之间,这区间主要包含 2.75、2.80、2.85 等值。而盒状图的平均值先正好在 2.75 的位置,所以说这这一尺寸的胸罩是最多的,也就是 75B,这个分析结果也正好与图4的结果吻合(75B 尺寸的胸罩销售量最大)。


v2-9007ef58b64104cb5a56ca2894a5b6d6_b.jpg

本系列文章的项目是一个完整的集网络爬虫和数据分析于一体的系统,读者通过这个系统,可以非常全面地了解网络爬虫到底有什么用。

如果你有疑问欢迎加微信咨询:


v2-52b6f837be283214a9815bdaf2650b34_b.jpg


也可以关注我的公众号想我提问:

v2-0a9159f405d92730d1183d93d381d65d_b.jpg

这篇关于BD第8课:胸罩颜色和上胸围销售比例和分布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/371957

相关文章

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG