pandas(day10)

一. 各各品类产品交易指数对比

获取文件名
files = glob.glob("./*.xlsx")# 读取数据,并改列名,增加一列 品牌
dfs = []
for f in files:t = f[2:4]df = pd.read_excel(f)df["品牌"] = tif t == "拜耳":df.rename(columns={"时间":"日期"},inplace=True)dfs.append(df)#拼接 
data = pd.concat(dfs,ignore_index=True)
#创建品类列,且都为nan
data["品类"] = np.nand.index 
#(['上门服务', '杀虫剂', '白蚁', '虫', '虱', '蚂蚁', '蛾', '蝇', '螨', '蟑螂', '鼠'], dtype='object', name='适用对象')# 从d.index 上门服务', '杀虫剂', '白蚁', '虫', '虱', '蚂蚁', '蛾', '蝇', '螨', '蟑螂', '鼠' 的 白蚁开始到最后,修改品类这一列
for x in d.index[2:]:data.loc[data.商品.str.contains(x),"品类"] = x # 对比三家公司 将各种品类的销售金额 进行对比
for x in d.index[2:]:display(x,data.query("品类 == @x").groupby("品牌").交易金额.sum())

二. 市场上商品结构

# 将品类为蟑螂的所有数据, 与 按照商品分类后对交易指数求和 的数据进行拼接,且把求和列改为 交易指数和
data = pd.merge(data.query("品类 == '蟑螂'"),data.groupby("商品").交易指数.sum().reset_index(0).rename(columns={"交易指数":"交易指数和"}),left_on="商品",right_on="商品")# 每一家公司 对 同种商品 进行销售的 比例 (如果为 1 说明只有一家在售卖)
data["同种类商品售卖比例"]=data["交易指数"].div(data["交易指数和"])#调和均值
data["交易增长幅度调和值"] = data["交易增长幅度"].mul(data["同种类商品售卖比例"])# 现在df是根据商品分类,进行的一系列操作
df = data.groupby("商品")\
.agg({"交易指数":"sum","交易增长幅度调和值":"sum","商品":"count","品牌":"max"})\
.rename(columns={"交易指数":"相对市场占有率","交易增长幅度调和值":"相对市场增长率","商品":"产品数量"})1.因为绘制BCG图时候,发现有些间隔中数据拉的过大,需要我们在选择时舍弃一些
display(df.describe(percentiles=[0.8,0.85,0.9,0.95,0.99,1]))  #描述统计# 找到变化率不太快的位置  , 让大值 = 0.85位置的数值
# 这里的x 就是 下面action函数的 series。
def quantile(x,q=0.85):qu = x.quantile(q)  # 找到0.85百分的值# 如果当前的值 大于0.85的值,则当前值替换为0.85.否则不便return x.mask(x > qu, qu)   # mysql 当中 if(cond,True,False)  mask有循环的功效# 截取数据,都替换成0.85的数据
def action(df):df = df.copy() #希望原先的数据不被修改df["相对市场占有率"] = quantile(df["相对市场占有率"])df["相对市场增长率"] = quantile(df["相对市场增长率"])return df

绘制

def BCGPlot(df,is_mean=True,xq=0.5,yq=0.5): #默认使用均值进行分割axes = sns.scatterplot(df,x="相对市场占有率",y="相对市场增长率",size="产品数量",hue="品牌")# 如果ismean 为true, 线都采用均值计算,否则用0.5分位进行绘制if is_mean:plt.axvline(df.相对市场占有率.mean(),c="k",ls=":",lw=1)plt.axhline(df.相对市场增长率.mean(),c="k",ls=":",lw=1)else:plt.axvline(df.相对市场占有率.quantile(xq),c="k",ls=":",lw=1)plt.axhline(df.相对市场增长率.quantile(yq),c="k",ls=":",lw=1)plt.text(250000,.8,"明星类",fontsize=20,color="y")plt.text(250000,-.5,"奶牛类",fontsize=20,color="r")plt.text(100000,.8,"山猫类",fontsize=20,color="b")plt.text(100000,-.5,"瘦狗类",fontsize=20,color="k")

 

三. 给数据打上标签 

def target(df,is_mean=True,xq=0.5,yq=0.5):相对市场占有率均值 = df["相对市场占有率"].mean()相对市场增长率均值 = df["相对市场增长率"].mean()df.loc[(df["相对市场占有率"] >= 相对市场占有率均值) & (df["相对市场增长率"] >= 相对市场增长率均值),"产品结构"] = "明星类"df.loc[(df["相对市场占有率"] >= 相对市场占有率均值) & (df["相对市场增长率"] < 相对市场增长率均值),"产品结构"] = "金牛类"df.loc[(df["相对市场占有率"] < 相对市场占有率均值) & (df["相对市场增长率"] >= 相对市场增长率均值),"产品结构"] = "山猫类"df.loc[(df["相对市场占有率"] < 相对市场占有率均值) & (df["相对市场增长率"] < 相对市场增长率均值),"产品结构"] = "瘦狗类"df.loc[(df["相对市场占有率"] >= 相对市场占有率均值) & (df["相对市场增长率"] >= 相对市场增长率均值),"序号"] = 2df.loc[(df["相对市场占有率"] >= 相对市场占有率均值) & (df["相对市场增长率"] < 相对市场增长率均值),"序号"] = 1df.loc[(df["相对市场占有率"] < 相对市场占有率均值) & (df["相对市场增长率"] >= 相对市场增长率均值),"序号"] = 3df.loc[(df["相对市场占有率"] < 相对市场占有率均值) & (df["相对市场增长率"] < 相对市场增长率均值),"序号"] = 4return df.sort_values(by="序号")result = target(result)

 result 是各个产品结构(比如金牛),对每个结构的数量进行热力图绘制

# 进行透视, index是产品结构, 列名是品牌,对产品数量计数(查看金牛等产品的个数)
d = pd.pivot_table(data=result,index="产品结构",columns="品牌",values="产品数量",aggfunc="count").fillna(0)sns.heatmap(data=d.loc[result.产品结构.unique()],annot=True,cmap="autumn",linewidths=1)

 

四.流量

  • ROI : 投资回报比

  • 不同的渠道, 带来的用户质量(客单价 退货率 转换程付费率) 微信视频

  • 投放广告的周期 ; 50W 7点 开投 - 9店 10点

  • 不同的人群

  • 不同的广告投放方式

  • 付费流量

  • "免费"流量

    • 淘宝客 : 自己生成链接 , 由淘宝客 推 链接出去 , 别人点击了链接 并且 购买了,则有提成
    • SEO优化 : 关键字(关键字热度)

五. 剔除无用数据

import re
# re.sub 替换, 将表情替换空
data["评论"]=data.评论.map(lambda x : re.sub(r"[^\u000000-\uffffff]+","",x))data = data.loc[data.评论 != "此用户没有填写评论"]

六. 中文分词(jieba库)

import jieba  #结巴
from wordcloud import WordCloud# 将一句话 切称 有意义的词,或短句
jieba.lcut(data.评论[2])
# 将数据划分为有用的词,然后选取大于1 的词
def fo(x):return [w for w in jieba.lcut(x) if len(w)>1]mask = plt.imread("../../leaf.jpg") def wcplot(d):#去除停用词  我认为这些词汇 可能没有用处w = d.explode()  # 把一个列表多个词 分为一个一个的# w.isin() 是筛选在里的 , 取反取不是停用词w = w.loc[~w.isin(stopwords)]  #去除停用词c = w.value_counts()  #词计数#当前只是图片的配置项 返回词云画布wc = WordCloud(font_path="../../SimHei.ttf",mask=mask,width=1000,height=800,min_font_size=10,max_font_size=100,background_color="white")#这个就是生成了词云图wc.fit_words(c)# 借助 imshow 绘制plt.imshow(wc)# 去除坐标轴plt.axis("off")d = data.query("品牌 == '拜耳'").评论.map(fo)wcplot(d)

 七, 情感分析

def fo(x):s = pd.Series([w for w in jieba.lcut(x) if len(w)>1])# 这里去除 停用词 然后选取这些数据, join 是直接去除逗号return " ".join(s.loc[~s.isin(stopwords)])textdata = data.评论.map(fo)textdata.iloc[6]a = data.loc[data.评论.str.contains("垃圾|完全没有效果|小强依然活跃")]
a["评价"] = 0b= data.loc[data.评论.str.contains("必须好评|效果很好|强烈推荐")]
b["评价"] = 1ab = pd.concat([a,b])
ab

八 . 贝叶斯分析

from sklearn.feature_extraction.text import TfidfVectorizer #把文字转换 成数字  #词向量tfidf = TfidfVectorizer()feature = tfidf.fit_transform(ab.评论) #179行数据  682个词汇pred_feature = tfidf.transform(textdata) #更加上面682个词汇 把 当前的数据 也定义成  词向量target = ab.评价from sklearn.naive_bayes import BernoulliNB  #二项分布  添加越策标签model = BernoulliNB().fit(feature,target)pred_target = model.predict(pred_feature)data["评价"] = pred_targetdata.评价

 

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

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

相关文章

在线课程平台LearnDash评测 – 最佳 WordPress LMS插件

在我的LearnDash评测中&#xff0c;我探索了流行的 WordPress LMS 插件&#xff0c;该插件以其用户友好的拖放课程构建器而闻名。我深入研究了各种功能&#xff0c;包括课程创建、测验、作业、滴灌内容、焦点模式、报告、分析和管理工具。 我的评测还讨论了套餐和定价选项&…

视频基础学习五——视频编码基础二(编码参数帧、GOP、码率等)

系列文章目录 视频基础学习一——色立体、三原色以及像素 视频基础学习二——图像深度与格式&#xff08;RGB与YUV&#xff09; 视频基础学习三——视频帧率、码率与分辨率 视频基础学习四——视频编码基础一&#xff08;冗余信息&#xff09; 视频基础学习五——视频编码基础…

基于Springboot的笔记记录分享网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的笔记记录分享网站&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

YOLOv8改进 | 检测头篇 | 自研超分辨率检测头HATHead助力超分辨率检测(混合注意力变换器检测头)

一、本文介绍 本文给大家带来的改进机制是由由我本人利用HAT注意力机制&#xff08;超分辨率注意力机制&#xff09;结合V8检测头去掉其中的部分内容形成一种全新的超分辨率检测头。混合注意力变换器&#xff08;HAT&#xff09;的设计理念是通过融合通道注意力和自注意力机制…

[AIGC] Spring中的SPI机制详解

文章目录 1. 什么是SPI2. Spring中的SPI机制3. Spring SPI的工作流程4. Spring SPI的应用 1. 什么是SPI SPI &#xff08;Service Provider Interface&#xff09;是Java中服务提供者接口的缩写&#xff0c;它是Java提供的一种用于被第三方实现或扩展的接口&#xff0c;SPI的作…

面试: 单例模式

目录 一、饿汉单例&#xff08;实现Serializable&#xff09; 1、破坏单例的三种情况 &#xff08;1&#xff09;反射破坏单例 &#xff08;2&#xff09;反序列化破坏单例 &#xff08;3&#xff09;Unsafe破坏单例 2、饿汉单例&#xff08;利用枚举实现&#xff09; 二…

通过调用Vcenter-Api获取Vcenter中服务器信息

通过调用Vcenter-Api获取Vcenter中服务器信息 文章目录 通过调用Vcenter-Api获取Vcenter中服务器信息1. 获取Vmware API帮助文档2. 获取访问凭证3. 获取服务器清单4. 获取服务器更多信息5. 获取虚机更多信息6. 获取磁盘信息7. 获取操作系统相关 1. 获取Vmware API帮助文档 htt…

VUE typescript 调用stompjs[Rabbit MQ]

npm拉下来最新的2.3.9版本&#xff0c;发现一些原来Js代码已经不能用了。顺便解读了下最新定义的内容 // <reference types"node" />export const VERSIONS: {V1_0: string;V1_1: string;V1_2: string;supportedVersions: () > string[]; };export class C…

面试经典算法系列之二叉树5 -- 二叉树的前序遍历

面试经典算法20 - 二叉树的前序遍历 LeetCode.144 公众号&#xff1a;阿Q技术站 问题描述 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]示例 2&#xff1a; 输入&…

结合ArcGIS+SWAT模型+Century模型:流域生态系统水-碳-氮耦合过程模拟

原文链接&#xff1a;结合ArcGISSWAT模型Century模型&#xff1a;流域生态系统水-碳-氮耦合过程模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&tempkeyMTI2NV9sMGRZNUJoVkNVc1ZzSzRuMl9XXzhqX0R3cXpESWFwM1E4cFY4ejNqWFh3VUl0dlZkNWk4b20ydFdFTy1xS2ZObGN0Z0ZXSjly…

怎么在外地控制自家的电视

怎么在外地控制自家的电视 随着科技的进步和智能家居的普及&#xff0c;远程控制家中的电器设备已经成为现实。电视作为家庭娱乐的中心&#xff0c;远程控制功能更是备受关注。那么&#xff0c;如何在外地控制自家的电视呢&#xff1f;本文将为你提供详细的步骤和有价值的信息…

医院订餐平台:为患者提供贴心服务的创新解决方案

在现代医疗服务中&#xff0c;患者的就餐问题一直是一个备受关注的议题。传统的医院饮食服务往往面临着餐品单一、服务不及时等问题&#xff0c;无法满足患者的个性化需求。为了提高患者的就餐体验&#xff0c;医院订餐平台应运而生&#xff0c;通过数字化、个性化的服务&#…