本期利用python 分析一份 電子產品銷售資料,看看:
每月訂單數量訂單金額
每天訂單數量分佈
#男女用戶訂單比例
#女性/男性購買商品TOP20
##各年齡層訂單數量訂單金額
使用者RFM等級畫像
#等等...
希望對大家有幫助,如有疑問或需要改進的地方可以聯絡小編。
# 所涉及的函式庫:
Pandas — 資料處理
import pandas as pd from pyecharts.charts import Line from pyecharts.charts import Bar from pyecharts.charts import Pie from pyecharts.charts import Grid from pyecharts.charts import PictorialBar from pyecharts import options as opts from pyecharts.commons.utils import JsCode import warnings warnings.filterwarnings('ignore')
#2.1 讀取資料
df = pd.read_csv("电子产品销售分析.csv")

2.2 資料資訊
df.info()
一共有564169条数据,其中category_code、brand两列有部分数据缺失。
2.3 去掉部分用不到的列
df1 = df[['event_time', 'order_id', 'category_code', 'brand', 'price', 'user_id', 'age', 'sex', 'local']] df1.shape
(564169, 9)
2.4 去除重复数据
df1 = df1.drop_duplicates() df1.shape
(556456, 9)
2.5 增加部分时间列
df1['event_time'] = pd.to_datetime(df1['event_time'].str[:19],format="%Y-%m-%d %H:%M:%S") df1['Year'] = df1['event_time'].dt.year df1['Month'] = df1['event_time'].dt.month df1['Day'] = df1['event_time'].dt.day df1['hour'] = df1['event_time'].dt.hour df1.head(10)

2.6 过滤数据,也可以选择均值填充
df1 = df1.dropna(subset=['category_code']) df1 = df1[(df1["Year"] == 2020)&(df1["price"] > 0)] df1.shape
(429261, 13)
2.7 对年龄分组
df1['age_group'] = pd.cut(df1['age'],[10,20,30,40,50],labels=['10-20','20-30','30-40','40-50'])
2.8 增加商品一、二级分类
df1["category_code_1"] = df1["category_code"].apply(lambda x: x.split(".")[0] if "." in x else x) df1["category_code_2"] = df1["category_code"].apply(lambda x: x.split(".")[-1] if "." in x else x) df1.head(10)

def get_bar1(): bar1 = ( Bar() .add_xaxis(x_data) .add_yaxis("订单数量", y_data1) .extend_axis(yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}万"))) .set_global_opts( legend_opts=opts.LegendOpts(pos_top='25%', pos_left='center'), title_opts=opts.TitleOpts( title='1-每月订单数量订单额', subtitle='-- 制图@公众号:Python当打之年 --', pos_top='7%', pos_left="center" ) ) ) line = ( Line() .add_xaxis(x_data) .add_yaxis("订单额", y_data2, yaxis_index=1) ) bar1.overlap(line)

下半年的订单量和订单额相对于上半年明显增多。 8月份的订单量和订单额达到峰值。
def get_bar2(): pie1 = ( Pie() .add( "", datas, radius=["13%", "25%"], label_opts=opts.LabelOpts(formatter="{b}: {d}%"), ) ) bar1 = ( Bar(init_opts=opts.InitOpts(theme='dark', width='1000px', height='600px', bg_color='#0d0735')) .add_xaxis(x_data) .add_yaxis("", y_data, itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function))) .set_global_opts( legend_opts=opts.LegendOpts(is_show=False), title_opts=opts.TitleOpts( title='2-一月各天订单数量分布', subtitle='-- 制图@公众号:Python当打之年 --', pos_top='7%', pos_left="center" ) ) ) bar1.overlap(pie1)

从每天的订单量上看,上中下旬订单量基本持平,占比都在30%以上,上旬和中旬要稍微高一点。

从订单时段上看,上午的订单要明显高于下午,占比达到了70.26%,尤其是在早上7:00-11:00之间。
男性订单数量占比49.55%,女性订单数量占比50.45%,基本持平。
3.5 女性/男性购买商品TOP20
def get_bar3(): bar1 = ( Bar() .add_xaxis(x_data1) .add_yaxis('女性', y_data1, label_opts=opts.LabelOpts(position='right') ) .set_global_opts( title_opts=opts.TitleOpts( title='5-女性/男性购买商品TOP20', subtitle='-- 制图@公众号:Python当打之年 --', pos_top='3%', pos_left="center"), legend_opts=opts.LegendOpts(pos_left='20%', pos_top='10%') ) .reversal_axis() ) bar2 = ( Bar() .add_xaxis(x_data2) .add_yaxis('男性', y_data2, label_opts=opts.LabelOpts(position='right') ) .set_global_opts( legend_opts=opts.LegendOpts(pos_right='25%', pos_top='10%') ) .reversal_axis() ) grid1 = ( Grid() .add(bar1, grid_opts=opts.GridOpts(pos_left='12%', pos_right='50%', pos_top='15%')) .add(bar2, grid_opts=opts.GridOpts(pos_left='60%', pos_right='5%', pos_top='15%')) )

男性女性购买商品TOP20基本一致:smartphone、notebook、refrigerators、headphone等四类商品购买量比较大。
在10-50年龄段内,随着年龄段的增加,订单量和订单金额也在逐步增大。 细分的话,20-30和40-50这两个年龄段稍高一些。
3.7 各年龄段购买商品TOP10
3.8 用户RFM等级画像
RFM模型是衡量客户价值和客户创利能力的重要工具和手段。该模型通过一个客户的近期购买行为(R)、购买的总体频率(F)以及花了多少钱(M)三项指标来描述该客户的价值状况,从而能够更加准确地将成本和精力更精确的花在用户层次身上,实现针对性的营销。
用户分类:
def rfm_func(x): level = x.apply(lambda x:"1" if x > 0 else '0') RMF = level.R + level.F + level.M dic_rfm ={ '111':'重要价值客户', '011':'重要保持客户', '101':'重要发展客户', '001':'重要挽留客户', '110':'一般价值客户', '100':'一般发展客户', '010':'一般保持客户', '000':'一般挽留客户' } result = dic_rfm[RMF] return result
计算等级:
df_rfm = df1.copy() df_rfm = df_rfm[['user_id','event_time','price']] # 时间以当年年底为准 df_rfm['days'] = (pd.to_datetime("2020-12-31")-df_rfm["event_time"]).dt.days # 计算等级 df_rfm = pd.pivot_table(df_rfm,index="user_id", values=["user_id","days","price"], aggfunc={"user_id":"count","days":"min","price":"sum"}) df_rfm = df_rfm[["days","user_id","price"]] df_rfm.columns = ["R","F","M"] df_rfm['RMF'] = df_rfm[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1) df_rfm.head()

用户画像:

根据RFM模型可将用户分为以下8类:
重要价值客户:最近消费时间近、消费频次和消费金额都很高。 重要保持客户:最近消费时间较远,消费金额和频次都很高。
重要發展客戶:最近消費時間較近、消費金額高,但頻次不高、忠誠度不高,很有潛力的用戶,必須重點發展。
重要挽留客戶#:最近消費時間較遠、消費頻次不高,但消費金額高的用戶,可能是將要流失或己經要流失的用戶,應給予挽留措施。
一般價值客戶#:最近消費時間近,頻率高但消費金額低.需要提高其客單價。
一般發展客戶#:最近消費時間較近,消費金額、頻率都不高。
一般維持顧客:最近消費時間較遠,消費頻次高,消費金額不高。
一般挽留客戶:各項指數都不高,可以適當放棄。
以上是Pandas+Pyecharts | 電子產品銷售資料分析視覺化+使用者RFM畫像的詳細內容。更多資訊請關注PHP中文網其他相關文章!

python可以通过使用pip、使用conda、从源代码、使用IDE集成的包管理工具来安装pandas。详细介绍:1、使用pip,在终端或命令提示符中运行pip install pandas命令即可安装pandas;2、使用conda,在终端或命令提示符中运行conda install pandas命令即可安装pandas;3、从源代码安装等等。

知乎上有个热门提问,日常工作中Python+Pandas是否能代替Excel+VBA?我的建议是,两者是互补关系,不存在谁替代谁。复杂数据分析挖掘用Python+Pandas,日常简单数据处理用Excel+VBA。从数据处理分析能力来看,Python+Pandas肯定是能取代Excel+VBA的,而且要远远比后者强大。但从便利性、传播性、市场认可度来看,Excel+VBA在职场工作上还是无法取代的。因为Excel符合绝大多数人的使用习惯,使用成本更低。就像Photoshop能修出更专业的照片,为

CSV(逗号分隔值)文件广泛用于以简单格式存储和交换数据。在许多数据处理任务中,需要基于特定列合并两个或多个CSV文件。幸运的是,这可以使用Python中的Pandas库轻松实现。在本文中,我们将学习如何使用Python中的Pandas按特定列合并两个CSV文件。什么是Pandas库?Pandas是一个用于Python信息控制和检查的开源库。它提供了用于处理结构化数据(例如表格、时间序列和多维数据)以及高性能数据结构的工具。Pandas广泛应用于金融、数据科学、机器学习和其他需要数据操作的领域。

使用Pandas和Python从时间序列数据中提取有意义的特征,包括移动平均,自相关和傅里叶变换。前言时间序列分析是理解和预测各个行业(如金融、经济、医疗保健等)趋势的强大工具。特征提取是这一过程中的关键步骤,它涉及将原始数据转换为有意义的特征,可用于训练模型进行预测和分析。在本文中,我们将探索使用Python和Pandas的时间序列特征提取技术。在深入研究特征提取之前,让我们简要回顾一下时间序列数据。时间序列数据是按时间顺序索引的数据点序列。时间序列数据的例子包括股票价格、温度测量和交通数据。

pandas写入excel的方法有:1、安装所需的库;2、读取数据集;3、写入Excel文件;4、指定工作表名称;5、格式化输出;6、自定义样式。Pandas是一个流行的Python数据分析库,提供了许多强大的数据清洗和分析功能,要将Pandas数据写入Excel文件,可以使用Pandas提供的“to_excel()”方法。

pandas读取txt文件的步骤:1、安装Pandas库;2、使用“read_csv”函数读取txt文件,并指定文件路径和文件分隔符;3、Pandas将数据读取为一个名为DataFrame的对象;4、如果第一行包含列名,则可以通过将header参数设置为0来指定,如果没有,则设置为None;5、如果txt文件中包含缺失值或空值,可以使用“na_values”指定这些缺失值。

读取CSV文件的方法有使用read_csv()函数、指定分隔符、指定列名、跳过行、缺失值处理、自定义数据类型等。详细介绍:1、read_csv()函数是Pandas中最常用的读取CSV文件的方法。它可以从本地文件系统或远程URL加载CSV数据,并返回一个DataFrame对象;2、指定分隔符,默认情况下,read_csv()函数将使用逗号作为CSV文件的分隔符等等。

使用Python做数据处理的数据科学家或数据从业者,对数据科学包pandas并不陌生,也不乏像云朵君一样的pandas重度使用者,项目开始写的第一行代码,大多是importpandasaspd。pandas做数据处理可以说是yyds!而他的缺点也是非常明显,pandas只能单机处理,它不能随数据量线性伸缩。例如,如果pandas试图读取的数据集大于一台机器的可用内存,则会因内存不足而失败。另外pandas在处理大型数据方面非常慢,虽然有像Dask或Vaex等其他库来优化提升数


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中