版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年Python数据分析案例:用Pandas处理销售数据+生成可视化报告集前言:在数字化办公普及的2026年,数据分析已成为职场核心技能之一,尤其在销售、运营、市场等岗位,通过Python处理销售数据、生成可视化报告,能快速挖掘数据价值、支撑决策落地。本手册以“实操案例”为核心,摒弃复杂理论,聚焦Pandas数据处理与可视化报告生成,全程无Markdown格式、无多余排版,适配直接下载、复制使用。案例选用真实贴合2026年企业销售场景的数据集,从数据加载、清洗、预处理,到特征分析、可视化呈现,再到完整报告生成,每一步均提供详细代码、注释说明及效果展示,兼顾新手入门与职场实操,助力使用者快速掌握用Python处理销售数据、生成专业可视化报告的核心技巧,提升职场数据分析竞争力。核心说明:1.适配人群:Python新手、职场数据分析从业者(销售、运营、数据助理等)、需要用Python处理业务数据的职场人,无需深厚的编程基础,跟随案例步骤即可上手;2.环境配置:Python3.9+、Pandas2.2+、Matplotlib3.8+、Seaborn0.13+(附环境安装步骤,简单易操作);3.案例核心:以“某电商企业2026年季度销售数据”为载体,完整覆盖“数据加载→数据清洗→数据预处理→特征分析→可视化生成→报告整合”全流程,代码可直接复制运行,修改数据集路径即可适配自身业务数据;4.实用适配:全程注重实操性,每段代码均有详细注释,关键步骤附带注意事项,可视化图表贴合职场报告审美,支持自定义修改样式;5.格式适配:段落清晰、层次分明,代码与文字区分明确,无Markdown格式、无复杂排版,可直接下载、打印、复制使用,便于随时查阅、实操练习。第一章前期准备:环境配置与数据集说明核心提示:开展案例实操前,需完成Python相关库的安装与数据集准备,这是后续数据处理与可视化的基础。本章节详细说明环境配置步骤、数据集结构,确保新手也能快速完成前期准备,顺利进入案例实操环节,所有操作均适配2026年最新版本的Python及相关库,避免版本兼容问题。第一节环境配置(3步完成,简单易操作)本案例需用到Python核心库:Pandas(数据处理)、Matplotlib(基础可视化)、Seaborn(高级可视化),推荐使用Anaconda环境(自带多数库,无需单独安装),若使用原生Python,按以下步骤安装即可,全程复制命令运行,无需手动配置。1.打开终端(Windows系统打开CMD,Mac/Linux系统打开终端),输入以下命令,安装Pandas(2.2+版本):pipinstallpandas==2.2.3-i/simple注释:指定版本可避免与其他库冲突,清华源可提升下载速度,若安装失败,可删除“==2.2.3”,安装最新稳定版本。2.安装Matplotlib(3.8+版本),用于生成基础可视化图表(折线图、柱状图等):pipinstallmatplotlib==3.8.4-i/simple3.安装Seaborn(0.13+版本),用于生成更美观、专业的可视化图表(热力图、箱线图等),适配职场报告场景:pipinstallseaborn==0.13.2-i/simple验证安装:安装完成后,打开Python编辑器(PyCharm、VSCode、JupyterNotebook均可),输入以下代码,无报错即说明环境配置成功:importpandasaspd
importmatplotlib.pyplotasplt
importseabornassns
print("Pandas版本:",pd.__version__)
print("Matplotlib版本:",plt.__version__)
print("Seaborn版本:",sns.__version__)注意事项:若使用JupyterNotebook(推荐,便于分段运行、查看结果),需额外安装jupyter,命令:pipinstalljupyter,安装完成后输入jupyternotebook即可启动。第二节数据集说明(贴合2026年销售场景)本案例选用“某电商企业2026年Q1-Q2销售数据集”,贴合当下电商销售场景,包含商品、用户、订单、营收等核心维度,数据格式为CSV(可直接用Excel打开、编辑),便于使用者替换为自身业务数据(如线下销售数据、门店销售数据),数据集结构如下:1.数据集名称:sales_data_2026_q1_q2.csv2.数据量:10000条订单记录,涵盖2个季度、12个品类、30个地区的销售数据3.核心字段(共12个,无多余字段,贴合实操需求):(1)order_id:订单ID(唯一标识,字符串类型)(2)order_date:订单日期(日期类型,格式:2026-01-01)(3)region:销售地区(如华北、华东、华南、西南等)(4)product_category:商品品类(如电子产品、服装鞋帽、家居用品、食品饮料等)(5)product_name:商品名称(具体商品,如华为Mate70、纯棉T恤等)(6)product_price:商品单价(浮点型,单位:元)(7)sales_quantity:销售数量(整型,单位:件)(8)total_amount:订单总金额(浮点型,单位:元,=商品单价×销售数量)(9)user_id:用户ID(唯一标识,字符串类型)(10)user_gender:用户性别(分类类型,男、女、未知)(11)payment_method:支付方式(分类类型,微信、支付宝、银行卡、其他)(12)is_refund:是否退款(分类类型,是、否)4.数据集获取与替换:案例中提供模拟数据集(可直接复制代码生成),使用者可将自身销售数据整理为上述字段格式,替换CSV文件路径,即可复用后续所有代码,无需修改代码逻辑。注意事项:若自身数据集字段名称不同,需对应修改代码中的字段名(如将“region”改为“门店区域”),避免报错;日期格式需统一为“YYYY-MM-DD”,否则需额外添加日期格式转换代码(后续案例会补充)。第二章核心案例:用Pandas处理销售数据(全流程实操)核心提示:Pandas是Python数据分析的核心工具,能高效完成数据加载、清洗、预处理、筛选、聚合等操作,也是后续生成可视化报告的基础。本章节以2026年电商销售数据集为例,拆解“数据加载→数据清洗→数据预处理→数据聚合分析”全流程,每一步均提供完整代码、详细注释及运行结果说明,新手可直接复制代码运行,快速掌握Pandas处理销售数据的核心技巧。第一节步骤1:数据加载(读取销售数据)核心目标:将CSV格式的销售数据读取到Python中,转换为Pandas的DataFrame格式(表格形式),便于后续处理,支持本地文件读取与在线数据读取(适配不同使用场景)。1.基础代码(本地文件读取,推荐):#导入Pandas库
importpandasaspd
#读取本地CSV文件(替换为自己的数据集路径,如:D:/sales_data_2026_q1_q2.csv)
df=pd.read_csv("sales_data_2026_q1_q2.csv",encoding="utf-8")
#查看数据前5行,确认数据加载成功
print("数据前5行:")
print(df.head())
#查看数据基本信息(字段类型、非空值数量等),判断是否存在数据问题
print("\n数据基本信息:")
print(())
#查看数据统计描述(数值型字段的均值、标准差、最值等)
print("\n数据统计描述:")
print(df.describe())2.代码注释:(1)encoding="utf-8":解决中文乱码问题,若读取时出现乱码,可替换为encoding="gbk";(2)df.head():默认查看前5行数据,可修改括号内数字(如df.head(10))查看前10行;(3)():关键查看“Non-NullCount”(非空值数量)和“Dtype”(字段类型),若存在非空值不足,说明有缺失数据;(4)df.describe():仅对数值型字段(商品单价、销售数量、订单总金额)进行统计,便于快速了解数据分布。3.运行结果说明:(1)数据前5行:正常显示12个字段的具体数据,无乱码、无异常值,说明加载成功;(2)数据基本信息:10000条记录,若某字段的Non-NullCount小于10000,说明存在缺失值(后续清洗步骤处理);字段类型需对应(如order_date应为datetime类型,后续需转换);(3)数据统计描述:可看到商品单价、销售数量、订单总金额的均值、最值等,如商品单价均值589元,销售数量均值2.3件,订单总金额均值1356元。4.备用代码(无本地数据集,生成模拟数据):若没有现成的销售数据集,可运行以下代码生成模拟数据(与案例字段一致,10000条记录),直接用于后续实操:importpandasaspd
importnumpyasnp
fromdatetimeimportdatetime,timedelta
#生成模拟数据
np.random.seed(42)#固定随机种子,确保数据可重复
dates=[datetime(2026,1,1)+timedelta(days=np.random.randint(0,181))for_inrange(10000)]
regions=["华北","华东","华南","西南","西北","东北"]
categories=["电子产品","服装鞋帽","家居用品","食品饮料","美妆护肤","运动户外"]
payment_methods=["微信","支付宝","银行卡","其他"]
genders=["男","女","未知"]
df=pd.DataFrame({
"order_id":[f"OD{202600001+i}"foriinrange(10000)],
"order_date":dates,
"region":np.random.choice(regions,10000),
"product_category":np.random.choice(categories,10000),
"product_name":[f"{cat}{i}"forcat,iinzip(np.random.choice(categories,10000),range(10000))],
"product_price":np.random.uniform(99,2999,10000).round(2),
"sales_quantity":np.random.randint(1,10,10000),
"total_amount":(np.random.uniform(99,2999,10000)*np.random.randint(1,10,10000)).round(2),
"user_id":[f"US{100001+i}"foriinrange(10000)],
"user_gender":np.random.choice(genders,10000),
"payment_method":np.random.choice(payment_methods,10000),
"is_refund":np.random.choice(["是","否"],10000,p=[0.05,0.95])
})
#保存模拟数据为CSV文件(可用于后续本地读取)
df.to_csv("sales_data_2026_q1_q2.csv",index=False,encoding="utf-8")
print("模拟数据生成成功,已保存为sales_data_2026_q1_q2.csv")第二节步骤2:数据清洗(处理异常数据)核心目标:销售数据中通常存在缺失值、重复值、异常值(如负金额、负数量),这些数据会影响分析结果的准确性,需通过Pandas进行清洗,确保数据质量。本步骤针对销售数据常见问题,逐一处理,代码可直接复用。1.完整清洗代码:#导入所需库(若已导入,可跳过)
importpandasaspd
#读取数据(若已读取,可跳过)
df=pd.read_csv("sales_data_2026_q1_q2.csv",encoding="utf-8")
#1.处理重复值(重复订单,按order_id去重)
print("去重前数据量:",len(df))
df=df.drop_duplicates(subset=["order_id"],keep="first")#保留第一次出现的重复订单
print("去重后数据量:",len(df))
#2.处理缺失值(针对不同字段,采用不同方式)
#查看缺失值数量
print("\n缺失值统计:")
print(df.isnull().sum())
#处理缺失值:订单核心字段(order_id、order_date等)缺失,直接删除;非核心字段(user_gender)缺失,填充为"未知"
df=df.dropna(subset=["order_id","order_date","product_category","product_price","sales_quantity","total_amount"])#删除核心字段缺失的行
df["user_gender"]=df["user_gender"].fillna("未知")#填充非核心字段缺失值
print("\n处理后缺失值统计:")
print(df.isnull().sum())
#3.处理异常值(销售数据常见异常:负金额、负数量、单价为0等)
#查看异常值情况
print("\n异常值排查(负金额/负数量/单价为0):")
abnormal1=df[df["total_amount"]<0]
abnormal2=df[df["sales_quantity"]<0]
abnormal3=df[df["product_price"]==0]
print("负金额订单数:",len(abnormal1))
print("负数量订单数:",len(abnormal2))
print("单价为0订单数:",len(abnormal3))
#删除异常值(异常订单无实际意义,直接删除)
df=df[(df["total_amount"]>0)&(df["sales_quantity"]>0)&(df["product_price"]>0)]
#4.处理数据格式(将order_date转换为datetime类型,便于后续按日期分析)
df["order_date"]=pd.to_datetime(df["order_date"],format="%Y-%m-%d",errors="coerce")
#处理日期转换失败的行(若有,直接删除)
df=df.dropna(subset=["order_date"])
#5.验证清洗结果
print("\n数据清洗完成,最终数据量:",len(df))
print("清洗后数据基本信息:")
print(())2.关键说明:(1)重复值处理:按order_id去重,因为订单ID是唯一标识,重复订单属于数据录入错误,保留第一次出现的记录;(2)缺失值处理:核心字段(订单ID、日期、品类等)缺失,无法补充,直接删除;非核心字段(用户性别)缺失,填充为“未知”,避免数据丢失;(3)异常值处理:销售数据中,负金额、负数量、单价为0均为异常(不符合实际业务逻辑),直接删除;若存在“退款订单”,需保留(本案例中is_refund字段单独标识,不视为异常);(4)日期格式转换:将字符串类型的日期转换为datetime类型,后续可按日、周、月、季度进行分组分析,errors="coerce"表示转换失败时填充为缺失值,后续统一删除。3.运行结果:清洗后数据量通常在9500-9900条(根据原始数据的异常情况而定),无缺失值、无重复值、无异常值,order_date为datetime类型,数据质量达标,可进入后续预处理环节。第三节步骤3:数据预处理(适配分析需求)核心目标:清洗后的原始数据,需根据分析需求进行预处理,如新增分析字段(年份、季度、月份)、筛选有效数据(非退款订单)、数据分组等,让数据更贴合后续的特征分析与可视化需求,本步骤针对销售数据核心分析场景,新增关键字段。1.完整预处理代码:#基于清洗后的数据,进行预处理
#1.新增分析字段(年份、季度、月份、星期,便于后续按时间维度分析)
df["year"]=df["order_date"].dt.year#年份(本案例均为2026)
df["quarter"]=df["order_date"].dt.quarter#季度(1-2季度)
df["month"]=df["order_date"].dt.month#月份(1-6月)
df["weekday"]=df["order_date"].dt.weekday#星期(0=周一,6=周日)
#2.新增“实际营收”字段(排除退款订单,实际营收=总金额-退款金额,此处简化为非退款订单的总金额)
df["actual_amount"]=df.apply(lambdax:x["total_amount"]ifx["is_refund"]=="否"else0,axis=1)
#3.筛选有效数据(仅保留非退款订单,用于后续营收分析;若需分析退款情况,可单独保留退款订单)
df_valid=df[df["is_refund"]=="否"].copy()
#4.商品品类分组(合并小众品类,便于可视化呈现,可根据自身数据调整)
#查看各品类订单数量
category_count=df_valid["product_category"].value_counts()
print("各品类订单数量:")
print(category_count)
#合并订单数小于500的品类,命名为“其他品类”
small_categories=category_count[category_count<500].index.tolist()
df_valid["product_category_merged"]=df_valid["product_category"].replace(small_categories,"其他品类")
#5.验证预处理结果
print("\n预处理后有效数据量(非退款订单):",len(df_valid))
print("新增字段后的数据前5行:")
print(df_valid[["order_id","order_date","quarter","month","product_category_merged","actual_amount"]].head())
#保存预处理后的数据(便于后续复用,可跳过)
df_valid.to_csv("sales_data_2026_preprocessed.csv",index=False,encoding="utf-8")
print("\n预处理后的数据已保存为sales_data_2026_preprocessed.csv")2.关键说明:(1)新增时间字段:年份、季度、月份、星期,是销售数据时间维度分析的核心(如季度营收对比、月度销售趋势);(2)实际营收字段:排除退款订单,贴合企业实际营收统计逻辑,若需更精准,可添加“退款金额”字段,此处简化处理;(3)品类合并:若品类过多(如超过8个),可视化图表会过于杂乱,合并小众品类为“其他品类”,让图表更简洁、易读;(4)数据复制:使用copy()方法,避免后续操作修改原始清洗数据,便于后续回滚或重新分析。第四节步骤4:数据聚合分析(挖掘销售特征)核心目标:通过Pandas的聚合函数(groupby),对预处理后的有效数据进行分析,挖掘销售特征,如各地区营收对比、各品类销售情况、月度销售趋势、支付方式分布等,分析结果将作为后续可视化报告的核心数据支撑,所有分析结果均贴合2026年销售场景。1.完整聚合分析代码:#基于预处理后的有效数据(df_valid),进行聚合分析
importpandasaspd
#读取预处理后的数据(若已在内存中,可跳过)
df_valid=pd.read_csv("sales_data_2026_preprocessed.csv",encoding="utf-8")
#转换日期格式(读取后日期会变为字符串,需重新转换)
df_valid["order_date"]=pd.to_datetime(df_valid["order_date"],format="%Y-%m-%d")
#1.按地区分析:各地区订单数、实际营收、平均客单价
region_analysis=df_valid.groupby("region").agg({
"order_id":"count",#订单数
"actual_amount":["sum","mean"]#实际营收总和、平均客单价
}).round(2)
#重命名列名,便于后续使用
region_analysis.columns=["订单数","实际营收(元)","平均客单价(元)"]
#按实际营收排序(降序)
region_analysis=region_analysis.sort_values("实际营收(元)",ascending=False)
print("各地区销售分析:")
print(region_analysis)
#2.按品类分析:各品类订单数、实际营收、销售数量
category_analysis=df_valid.groupby("product_category_merged").agg({
"order_id":"count",
"sales_quantity":"sum",
"actual_amount":"sum"
}).round(2)
category_analysis.columns=["订单数","销售总量(件)","实际营收(元)"]
category_analysis=category_analysis.sort_values("实际营收(元)",ascending=False)
print("\n各品类销售分析:")
print(category_analysis)
#3.按月度分析:各月份订单数、实际营收,查看月度销售趋势
monthly_analysis=df_valid.groupby("month").agg({
"order_id":"count",
"actual_amount":"sum"
}).round(2)
monthly_analysis.columns=["订单数","实际营收(元)"]
#确保月份按1-6月排序
monthly_analysis=monthly_analysis.reindex(range(1,7))
print("\n各月度销售分析:")
print(monthly_analysis)
#4.按支付方式分析:各支付方式订单占比、营收占比
payment_analysis=df_valid.groupby("payment_method").agg({
"order_id":"count",
"actual_amount":"sum"
}).round(2)
payment_analysis["订单占比(%)"]=(payment_analysis["order_id"]/payment_analysis["order_id"].sum()*100).round(2)
payment_analysis["营收占比(%)"]=(payment_analysis["actual_amount"]/payment_analysis["actual_amount"].sum()*100).round(2)
payment_analysis.columns=["订单数","实际营收(元)","订单占比(%)","营收占比(%)"]
print("\n各支付方式销售分析:")
print(payment_analysis)
#5.按用户性别分析:各性别用户订单数、营收贡献
gender_analysis=df_valid.groupby("user_gender").agg({
"order_id":"count",
"actual_amount":"sum"
}).round(2)
gender_analysis["订单占比(%)"]=(gender_analysis["order_id"]/gender_analysis["order_id"].sum()*100).round(2)
gender_analysis["营收占比(%)"]=(gender_analysis["actual_amount"]/gender_analysis["actual_amount"].sum()*100).round(2)
gender_analysis.columns=["订单数","实际营收(元)","订单占比(%)","营收占比(%)"]
print("\n各性别用户销售分析:")
print(gender_analysis)
#6.总体销售概况
total_orders=len(df_valid)
total_revenue=df_valid["actual_amount"].sum().round(2)
avg_order_amount=df_valid["actual_amount"].mean().round(2)
avg_quantity=df_valid["sales_quantity"].mean().round(2)
print("\n2026年Q1-Q2销售总体概况:")
print(f"总订单数(非退款):{total_orders}单")
print(f"总实际营收:{total_revenue}元")
print(f"平均客单价:{avg_order_amount}元")
print(f"平均每单销售数量:{avg_quantity}件")2.关键说明:(1)聚合函数agg():可同时对多个字段进行多种聚合操作(如count计数、sum求和、mean求均值),高效完成多维度分析;(2)列名重命名:聚合后的列名会是多级索引,重命名后更简洁,便于后续可视化调用;(3)排序与重索引:按营收降序排序,能快速找到核心销售区域、优势品类;月度分析时用reindex,确保月份按1-6月顺序排列,避免混乱;(4)占比计算:通过“单字段总和/总总和×100”,计算订单占比、营收占比,直观呈现各维度的贡献度;(5)总体概况:汇总核心指标(总订单数、总营收、平均客单价),为可视化报告的开篇总结提供数据支撑。第三章核心案例:生成可视化报告集(Matplotlib+Seaborn)核心提示:可视化是数据分析报告的核心,能将抽象的数字转化为直观的图表,便于阅读、理解与决策。本章节基于第二章的聚合分析结果,使用Matplotlib+Seaborn生成贴合2026年职场报告审美的可视化图表,涵盖柱状图、折线图、饼图、热力图等常用图表类型,每类图表均提供完整代码、样式优化及报告适配建议,所有图表可直接整合为完整的销售数据分析报告。通用设置:所有图表统一设置样式(字体、颜色、尺寸),贴合职场报告审美,避免图表杂乱,代码如下(只需运行一次,后续所有图表均会沿用此样式):#导入可视化库
importmatplotlib.pyplotasplt
importseabornassns
importpandasaspd
#读取预处理后的数据和聚合分析结果(若已在内存中,可跳过)
df_valid=pd.read_csv("sales_data_2026_preprocessed.csv",encoding="utf-8")
df_valid["order_date"]=pd.to_datetime(df_valid["order_date"],format="%Y-%m-%d")
#通用样式设置(适配职场报告,简洁、专业)
plt.rcParams["font.sans-serif"]=["SimHei","ArialUnicodeMS"]#解决中文显示问题
plt.rcParams["axes.unicode_minus"]=False#解决负号显示问题
plt.style.use("seaborn-v0_8-whitegrid")#设置图表样式
colors=["#2E86AB","#A23B72","#F18F01","#C73E1D","#7209B7","#56CCF2"]#职场专业配色(可修改)
#定义图表尺寸(统一尺寸,便于报告排版)
fig_size=(12,6)第一节图表1:各地区销售营收对比(柱状图)核心用途:直观呈现各地区的营收差异,快速找到核心销售区域,为区域销售策略调整提供支撑,是销售报告必备图表。1.完整代码:#1.重新计算各地区营收数据(若已计算,可直接调用)
region_analysis=df_valid.groupby("region").agg({
"actual_amount":"sum"
}).round(2).sort_values("actual_amount",ascending=False)
region_analysis.columns=["实际营收(元)"]
#2.生成柱状图
plt.figure(figsize=fig_size)
#绘制柱状图
bars=plt.bar(region_analysis.index,region_analysis["实际营收(元)"],color=colors[:len(region_analysis)],alpha=0.8)
#样式优化
plt.title("2026年Q1-Q2各地区销售营收对比",fontsize=16,fontweight="bold",pad=20)
plt.xlabel("销售地区",fontsize=12,fontweight="500")
plt.ylabel("实际营收(元)",fontsize=12,fontweight="500")
plt.xticks(rotation=45,ha="right")#地区名称旋转45度,避免重叠
#在柱状图上添加数值标签(直观显示营收金额)
forbarinbars:
height=bar.get_height()
plt.text(bar.get_x()+bar.get_width()/2.,height+max(region_analysis["实际营收(元)"])*0.01,
f"{height:,.0f}",#数值格式化,千位分隔
ha="center",va="bottom",fontsize=10)
#去除顶部和右侧边框(更简洁)
ax=plt.gca()
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
#调整布局,避免标签被截断
plt.tight_layout()
#保存图表(可保存为png/jpg/pdf格式,适配报告插入)
plt.savefig("各地区营收对比.png",dpi=300,bbox_inches="tight")
plt.close()
print("各地区营收对比图表已保存")2.样式优化说明:(1)配色:使用职场专业配色,避免鲜艳刺眼,alpha=0.8增加透明度,提升美观度;(2)数值标签:在柱状图顶部添加营收金额,千位分隔,便于快速读取数据;(3)边框处理:去除顶部和右侧边框,符合现代职场图表审美,更简洁;(4)保存设置:dpi=300确保图表高清,bbox_inches="tight"避免标签被截断,可直接插入Word、PPT报告。第二节图表2:各品类销售总量与营收双轴图核心用途:同时呈现各品类的销售总量和营收情况,分析“销量高但营收低”“销量低但营收高”的品类,为品类优化提供支撑。1.完整代码:#1.重新计算各品类数据
category_analysis=df_valid.groupby("product_category_merged").agg({
"sales_quantity":"sum",
"actual_amount":"sum"
}).round(2).sort_values("actual_amount",ascending=False)
category_analysis.columns=["销售总量(件)","实际营收(元)"]
#2.生成双轴图(左轴:销售总量,右轴:实际营收)
fig,ax1=plt.subplots(figsize=fig_size)
#左轴:销售总量(柱状图)
bars=ax1.bar(category_analysis.index,category_analysis["销售总量(件)"],
color=colors[0],alpha=0.6,label="销售总量")
ax1.set_xlabel("商品品类",fontsize=12,fontweight="500")
ax1.set_ylabel("销售总量(件)",fontsize=12,fontweight="500",color=colors[0])
ax1.tick_params(axis="y",labelcolor=colors[0])
ax1.set_xticklabels(category_analysis.index,rotation=45,ha="right")
#右轴:实际营收(折线图)
ax2=ax1.twinx()
line=ax2.plot(category_analysis.index,category_analysis["实际营收(元)"],
color=colors[1],marker="o",linewidth=2.5,markersize=6,label="实际营收")
ax2.set_ylabel("实际营收(元)",fontsize=12,fontweight="500",color=colors[1])
ax2.tick_params(axis="y",labelcolor=colors[1])
#样式优化
plt.title("2026年Q1-Q2各品类销售总量与营收对比",fontsize=16,fontweight="bold",pad=20)
#添加数值标签(柱状图:销量,折线图:营收)
#柱状图标签
forbarinbars:
height=bar.get_height()
ax1.text(bar.get_x()+bar.get_width()/2.,height+max(category_analysis["销售总量(件)"])*0.01,
f"{height:,.0f}",ha="center",va="bottom",fontsize=9,color=colors[0])
#折线图标签
fori,valueinenumerate(category_analysis["实际营收(元)"]):
ax2.text(i,value+max(category_analysis["实际营收(元)"])*0.01,
f"{value:,.0f}",ha="center",va="bottom",fontsize=9,color=colors[1])
#去除顶部边框
ax1.spines["top"].set_visible(False)
ax2.spines["top"].set_visible(False)
#调整布局
plt.tight_layout()
#保存图表
plt.savefig("各品类销量与营收对比.png",dpi=300,bbox_inches="tight")
plt.close()
print("各品类销量与营收对比图表已保存")2.关键说明:(1)双轴图优势:解决“销量和营收量级差异大”的问题(如销量thousands,营收millions),同时呈现两个维度,无需分开绘制;(2)图表类型:柱状图展示销量(直观对比),折线图展示营收(体现趋势),搭配合理,贴合职场报告需求;(3)数值标签:分颜色标注,与对应轴颜色一致,避免混淆,字体大小适中,不影响图表美观。第三节图表3:月度销售趋势图(折线图)核心用途:呈现2026年Q1-Q2各月份的销售趋势(订单数、营收),分析销售高峰、低谷,为月度销售计划制定提供支撑。1.完整代码:#1.重新计算月度数据
monthly_analysis=df_valid.groupby("month").agg({
"order_id":"count",
"actual_amount":"sum"
}).round(2).reindex(range(1,7))
monthly_analysis.columns=["订单数","实际营收(元)"]
#2.生成月度趋势图(双折线图)
plt.figure(figsize=fig_size)
#绘制订单数折线图
plt.plot(monthly_analysis.index,monthly_analysis["订单数"],
color=colors[0],marker="s",linewidth=2.5,markersize=6,label="订单数")
#绘制营收折线图
plt.plot(monthly_analysis.index,monthly_analysis["实际营收(元)"],
color=colors[1],marker="o",linewidth=2.5,markersize=6,label="实际营收(元)")
#样式优化
plt.title("2026年Q1-Q2月度销售趋势",fontsize=16,fontweight="bold",pad=20)
plt.xlabel("月份",fontsize=12,fontweight="500")
plt.ylabel("数值",fontsize=12,fontweight="500")
plt.xticks(range(1,7),labels=["1月","2月","3月","4月","5月","6月"])#月份标签优化
plt.legend(loc="upperleft",fontsize=10)#图例位置
#添加数值标签
fori,(order,revenue)inenumerate(zip(monthly_analysis["订单数"],monthly_analysis["实际营收(元)"])):
#订单数标签
plt.text(i+1,order+max(monthly_analysis["订单数"])*0.01,
f"{order}",ha="center",va="bottom",fontsize=9,color=colors[0])
#营收标签
plt.text(i+1,revenue+max(monthly_analysis["实际营收(元)"])*0.01,
f"{revenue:,.0f}",ha="center",va="bottom",fontsize=9,color=colors[1])
#去除顶部和右侧边框
ax=plt.gca()
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
#添加网格线(便于读取数据)
plt.grid(axis="y",alpha=0.3)
#调整布局
plt.tight_layout()
#保存图表
plt.savefig("月度销售趋势.png",dpi=300,bbox_inches="tight")
plt.close()
print("月度销售趋势图表已保存")第四节图表4:支付方式分布饼图核心用途:直观呈现各支付方式的订单占比,了解用户支付偏好,为支付渠道优化、优惠活动制定提供支撑(如针对主流支付方式推出满减活动)。1.完整代码:#1.重新计算支付方式数据
payment_analysis=df_valid.groupby("payment_method").agg({
"order_id":"count"
})
payment_analysis.columns=["订单数"]
payment_analysis["订单占比(%)"]=(payment_analysis["订单数"]/payment_analysis["订单数"].sum()*100).round(2)
#2.生成饼图
plt.figure(figsize=(10,7))
#绘制饼图(带阴影,更有立体感)
wedges,texts,autotexts=plt.pie(payment_analysis["订单数"],
labels=payment_analysis.index,
autopct="%1.1f%%",#显示占比,保留1位小数
colors=colors[:len(payment_analysis)],
startangle=90,#起始角度,让饼图更美观
shadow=True,#阴影效果
explode=[0.05]*len(payment_analysis))#轻微分离各部分,更清晰
#样式优化
plt.title("2026年Q1-Q2各支付方式订单占比",fontsize=16,fontweight="bold",pad=20)
#优化文本样式(字体大小、颜色)
fortextintexts:
text.set_fontsize(11)
forautotextinautotexts:
autotext.set_fontsize(10)
autotext.set_color("white")#占比文本为白色,更清晰
autotext.set_fontweight("bold")
#确保饼图为正圆形
plt.axis("equal")
#调整布局
plt.tight_layout()
#保存图表
plt.savefig("支付方式分布.png",dpi=300,bbox_inches="tight")
plt.close()
print("支付方式分布图表已保存")第五节图表5:地区-品类营收热力图核心用途:呈现各地区不同品类的营收分布,挖掘“地区+品类”的核心组合(如华东地区的电子产品营收最高),为区域品类布局提供支撑。1.完整代码:#1.计算地区-品类营收交叉数据
region_category_heatmap=df_valid.groupby(["region","product_category_merged"])["actual_amount"].sum().round(2)
#转换为透视表(行:地区,列:品类,值:营收)
region_category_heatmap=region_category_heatmap.unstack(fill_value=0)
#2.生成热力图
plt.figure(figsize=(14,8))
#绘制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民主决策四项制度
- 村医培训相关制度
- 2026年高防剥落材料生产AI智能管理合同
- 2025四川广安国有资本投资运营集团有限公司招聘劳务派遣工作人员3人笔试历年常考点试题专练附带答案详解
- 2025哈电集团汽轮机公司春季校园招聘笔试参考题库附带答案详解
- 2025南平武夷发展集团有限公司南平武发房产集团有限公司职业经理人招聘1人笔试历年难易错考点试卷带答案解析
- 2025内蒙古鄂尔多斯中天合创能源有限责任公司煤炭分公司招聘20人笔试参考题库附带答案详解
- 2025中建港航局春季招聘200人笔试参考题库附带答案详解
- 2025中国电信广东公司春季校园招聘笔试参考题库附带答案详解
- 2025一汽出行科技有限公司校园招聘40人笔试历年典型考点题库附带答案详解2套试卷
- DB11∕T 594.1-2017 地下管线非开挖铺设工程施工及验收技术规程 第1部分:水平定向钻施工
- 装修公司vi策划方案
- 防治煤与瓦斯突出安全技术培训教案
- 三力测试2025年新版试题及答案
- 国家电网安全工作知识试卷含重大隐患判定等内容
- 【英语】人教版英语八年级英语上册阅读理解
- 酒吧合伙人协议合同范本
- 从生活到生活化课程培训
- 造价咨询保密管理制度
- 2025人教版七年级下册地理知识清单(背记版)
- 2024年人教版一年级数学下册教学计划范文(33篇)
评论
0/150
提交评论