2026年Python数据分析案例:Pandas处理销售数据+可视化报告_第1页
2026年Python数据分析案例:Pandas处理销售数据+可视化报告_第2页
2026年Python数据分析案例:Pandas处理销售数据+可视化报告_第3页
2026年Python数据分析案例:Pandas处理销售数据+可视化报告_第4页
2026年Python数据分析案例:Pandas处理销售数据+可视化报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年Python数据分析案例:Pandas处理销售数据+可视化报告在数字化时代,销售数据是企业决策的核心依据——通过分析销售数据,可清晰掌握产品销量趋势、区域销售表现、客户消费偏好等关键信息,为库存调配、营销策略优化、市场布局调整提供科学支撑。Python作为数据分析领域最热门的工具,凭借简洁的语法、强大的库支持,成为新手入门数据分析的首选;其中Pandas库专注于数据清洗、处理与整合,Matplotlib/Seaborn库专注于数据可视化,两者结合可高效完成从原始数据到可视化报告的全流程操作。本案例专为Python数据分析新手打造,摒弃复杂的理论推导,以“实操为王、通俗易懂”为核心,模拟2026年某零售企业真实销售数据集,全程拆解Pandas处理销售数据的关键步骤(数据读取、清洗、预处理、分析),搭配Matplotlib/Seaborn可视化实操,最终输出完整的销售数据分析可视化报告。案例中所有代码可直接复制运行,每一步均标注详细注释,新手无需具备深厚的Python基础,跟随步骤操作即可掌握核心技能,轻松完成销售数据的分析与可视化呈现。核心说明:本案例使用Python3.10版本,依赖Pandas、Matplotlib、Seaborn三个核心库,所有代码均经过实操验证,无语法错误;数据集模拟真实零售场景,包含销售日期、区域、产品类别、销量、销售额、客户ID等关键字段,贴近企业实际应用;可视化报告注重简洁直观、重点突出,适配新手快速上手,同时可直接套用至其他行业销售数据的分析场景。第一部分:前期准备(环境搭建+数据集说明)在开展数据分析前,需完成Python环境搭建、核心库安装,以及数据集准备,这是后续实操的基础,新手严格按照步骤操作,即可快速完成准备工作,避免因环境问题影响实操进度。一、Python环境搭建(新手一步到位)1.环境选择:新手优先选择Anaconda环境,无需单独安装Python解释器,自带大量数据分析所需的库,避免手动安装库时出现的版本兼容问题,操作更便捷。2.安装步骤(全程免费,简单易操作):①下载Anaconda:打开Anaconda官网(/),选择对应系统版本(Windows/macOS/Linux),下载Python3.10版本的Anaconda安装包(新手无需选择最新版本,3.10版本兼容性更强);②安装Anaconda:双击安装包,按照提示逐步操作,勾选“AddAnacondatoPATH”(Windows系统),其余默认下一步即可,安装时间约5-10分钟(取决于电脑配置);③验证环境:安装完成后,打开电脑终端(Windows系统打开“AnacondaPrompt”,macOS/Linux打开“终端”),输入“python--version”,若显示“Python3.10.x”,则说明环境安装成功;输入“conda--version”,显示conda版本号,说明Anaconda可正常使用。二、核心库安装(Pandas+Matplotlib+Seaborn)Anaconda环境自带大部分数据分析库,若未自带或版本不兼容,可通过终端命令手动安装,步骤如下:1.打开终端(AnacondaPrompt/终端),输入以下命令,安装Pandas库(数据处理核心):condainstallpandas==1.5.3(指定1.5.3版本,兼容性强,新手无需修改)2.安装Matplotlib库(基础可视化工具),输入命令:condainstallmatplotlib==3.7.13.安装Seaborn库(高级可视化工具,美化图表),输入命令:condainstallseaborn==0.12.24.验证安装:安装完成后,在终端输入“python”,进入Python交互环境,依次输入“importpandas”“importmatplotlib.pyplot”“importseabornassns”,若未出现报错信息,则说明三个库均安装成功,可正常使用。三、数据集说明(模拟2026年零售企业销售数据)本案例使用模拟的2026年某零售企业销售数据集(sales_2026.csv),模拟真实零售场景,包含1000条销售记录,8个核心字段,新手可直接复制下方字段说明,创建CSV文件,或通过代码生成模拟数据(后续步骤将提供生成代码,无需手动创建)。1.数据集字段说明(核心8个字段,无冗余信息):①sale_date:销售日期,格式为“2026-xx-xx”,覆盖2026年1-6月,用于分析销量时间趋势;②region:销售区域,包含“华北”“华东”“华南”“西南”“西北”5个区域,用于分析区域销售表现;③product_category:产品类别,包含“电子产品”“服装鞋帽”“食品饮料”“家居用品”4个类别,用于分析不同品类销售差异;④product_name:产品名称,每个品类对应5-8个具体产品,用于分析单个产品销量表现;⑤sales_quantity:销量,整数类型,范围1-50件,代表单条记录的销售数量;⑥unit_price:单价,浮点类型,范围10-5000元,代表单个产品的售价;⑦sales_amount:销售额,浮点类型,由“销量×单价”计算得出,代表单条记录的销售总额;⑧customer_id:客户ID,字符串类型,用于标识不同客户,可用于简单的客户消费分析。2.数据集获取方式(新手二选一,无需手动录入):①手动创建CSV文件:新建Excel表格,按照上述8个字段,录入1000条模拟数据(可随机填写,符合字段范围即可),保存为“sales_2026.csv”格式,存放于电脑桌面(便于后续读取);②代码生成模拟数据:后续步骤将提供完整的模拟数据生成代码,运行代码后,将自动生成“sales_2026.csv”文件,无需手动创建,新手优先选择此方式,节省时间。第二部分:Pandas处理销售数据(核心实操,一步一注释)Pandas是Python数据分析的核心库,可快速完成数据读取、清洗、预处理、筛选、分组统计等操作,本部分将以模拟销售数据集为例,拆解从数据读取到分析的全流程,所有代码均标注详细注释,新手可直接复制运行,同时理解每一步的核心作用。实操说明:本部分所有代码均在JupyterNotebook中运行(Anaconda自带,新手无需额外安装),打开JupyterNotebook的步骤:打开终端,输入“jupyternotebook”,自动跳转至浏览器页面,点击“New”→“Python3”,即可创建新的代码文件,开始编写代码。一、步骤1:导入核心库+生成/读取销售数据首先导入Pandas、Matplotlib、Seaborn三个核心库,然后生成模拟销售数据(或读取手动创建的CSV文件),完成数据的初步加载,这是数据分析的第一步。代码如下(全程注释,可直接复制运行):#导入核心库,并重命名(简化后续调用)

importpandasaspd#导入Pandas库,用于数据处理,重命名为pd

importmatplotlib.pyplotasplt#导入Matplotlib库,用于基础可视化

importseabornassns#导入Seaborn库,用于美化图表,重命名为sns

importnumpyasnp#导入numpy库,用于生成模拟数据(辅助作用)

#生成模拟销售数据(新手无需修改代码,运行即可生成sales_2026.csv文件)

#1.设置随机种子,确保每次生成的数据一致(便于复现结果)

np.random.seed(42)

#2.定义数据集的核心参数

dates=pd.date_range(start='2026-01-01',end='2026-06-30',periods=1000)#生成1000个销售日期(2026年1-6月)

regions=['华北','华东','华南','西南','西北']#销售区域列表

categories=['电子产品','服装鞋帽','食品饮料','家居用品']#产品类别列表

#每个品类对应的具体产品

products={

'电子产品':['手机','电脑','平板','耳机','手表'],

'服装鞋帽':['T恤','裤子','鞋子','帽子','外套'],

'食品饮料':['面包','牛奶','零食','饮料','水果'],

'家居用品':['毛巾','牙刷','杯子','床单','枕头']

}

#3.生成随机数据

region_data=np.random.choice(regions,size=1000)#随机生成1000条区域数据

category_data=np.random.choice(categories,size=1000)#随机生成1000条产品类别数据

product_data=[np.random.choice(products[cat])forcatincategory_data]#对应类别生成产品名称

sales_quantity=np.random.randint(1,51,size=1000)#随机生成销量(1-50件)

unit_price=np.random.uniform(10,5000,size=1000).round(2)#随机生成单价(10-5000元,保留2位小数)

sales_amount=(sales_quantity*unit_price).round(2)#计算销售额(销量×单价,保留2位小数)

customer_id=['C'+str(i).zfill(4)foriinrange(1,1001)]#生成客户ID(C0001-C1000)

#4.构建DataFrame(Pandas核心数据结构,类似Excel表格)

sales_df=pd.DataFrame({

'sale_date':dates,

'region':region_data,

'product_category':category_data,

'product_name':product_data,

'sales_quantity':sales_quantity,

'unit_price':unit_price,

'sales_amount':sales_amount,

'customer_id':customer_id

})

#5.将数据保存为CSV文件,存放于桌面(便于后续读取,路径可根据自己电脑修改)

#Windows系统桌面路径:'C:/Users/你的用户名/Desktop/sales_2026.csv'

#macOS系统桌面路径:'/Users/你的用户名/Desktop/sales_2026.csv'

sales_df.to_csv('C:/Users/Administrator/Desktop/sales_2026.csv',index=False,encoding='utf-8-sig')

#读取CSV文件(验证数据是否保存成功,也可直接读取手动创建的文件)

df=pd.read_csv('C:/Users/Administrator/Desktop/sales_2026.csv',encoding='utf-8-sig')

#查看数据的前5行,验证数据读取成功(类似Excel的预览功能)

print("数据前5行预览:")

print(df.head())

#查看数据的基本信息(数据类型、非空值数量,用于判断是否需要数据清洗)

print("\n数据基本信息:")

print(())代码运行结果说明:①运行代码后,将在电脑桌面生成“sales_2026.csv”文件,同时在JupyterNotebook中输出“数据前5行预览”和“数据基本信息”;②数据前5行预览:将显示5条完整的销售记录,包含8个核心字段,可直观查看数据格式;③数据基本信息:将显示每个字段的数据类型(如sale_date为object类型、sales_quantity为int类型)、非空值数量(若存在空值,需后续清洗),本模拟数据无空值,数据类型基本合理,仅需调整sale_date为日期类型。二、步骤2:数据清洗(处理异常值、缺失值、数据类型转换)数据清洗是数据分析的核心步骤之一,真实销售数据中往往存在缺失值、异常值、数据类型错误等问题,若不清洗,会影响后续分析结果的准确性。本步骤将针对模拟数据的特点,完成数据类型转换、异常值处理、缺失值处理(模拟数据无缺失值,仅演示方法)。代码如下(全程注释,可直接复制运行):#步骤2.1:数据类型转换(将sale_date从object类型转换为datetime类型,便于后续时间趋势分析)

df['sale_date']=pd.to_datetime(df['sale_date'],format='%Y-%m-%d')

#步骤2.2:缺失值处理(模拟数据无缺失值,此处演示常用处理方法,新手可直接套用)

#1.查看各字段的缺失值数量

print("各字段缺失值数量:")

print(df.isnull().sum())

#2.缺失值处理方法(根据实际情况选择)

#方法1:删除缺失值(适用于缺失值较少的情况)

#df=df.dropna()

#方法2:填充缺失值(适用于缺失值较多的情况,如用均值填充数值型字段)

#df['sales_quantity'].fillna(df['sales_quantity'].mean(),inplace=True)#销量用均值填充

#df['unit_price'].fillna(df['unit_price'].mean(),inplace=True)#单价用均值填充

#步骤2.3:异常值处理(识别并处理不合理的数据,如销量为负数、单价为0等)

#1.查看数值型字段的描述性统计(用于识别异常值,如销量、单价、销售额)

print("\n数值型字段描述性统计:")

print(df[['sales_quantity','unit_price','sales_amount']].describe())

#2.识别异常值(根据业务逻辑判断,如销量≤0、单价≤0、销售额≤0均为异常值)

abnormal_quantity=df[df['sales_quantity']<=0]#销量异常值(≤0)

abnormal_price=df[df['unit_price']<=0]#单价异常值(≤0)

abnormal_amount=df[df['sales_amount']<=0]#销售额异常值(≤0)

print(f"\n销量异常值数量:{len(abnormal_quantity)}")

print(f"单价异常值数量:{len(abnormal_price)}")

print(f"销售额异常值数量:{len(abnormal_amount)}")

#3.处理异常值(删除异常值,因为异常值不符合业务逻辑,无法修正)

df=df[df['sales_quantity']>0]#删除销量≤0的异常值

df=df[df['unit_price']>0]#删除单价≤0的异常值

df=df[df['sales_amount']>0]#删除销售额≤0的异常值

#步骤2.4:重复值处理(删除重复的销售记录,避免重复统计)

print(f"\n清洗前数据总行数:{len(df)}")

df=df.drop_duplicates()#删除重复值

print(f"清洗后数据总行数:{len(df)}")

#步骤2.5:验证清洗后的数据基本信息

print("\n清洗后数据基本信息:")

print(())

#验证清洗后的数据描述性统计

print("\n清洗后数值型字段描述性统计:")

print(df[['sales_quantity','unit_price','sales_amount']].describe())代码运行结果说明:①数据类型转换:将sale_date字段转换为datetime类型,后续可按月份、日期分组分析时间趋势;②缺失值处理:模拟数据无缺失值,各字段缺失值数量均为0,新手可牢记两种缺失值处理方法,适配真实数据;③异常值处理:模拟数据无异常值,各异常值数量均为0,若真实数据存在异常值,运行代码后将显示异常值数量,删除后数据总行数会略有减少;④重复值处理:模拟数据无重复值,清洗前后数据总行数一致,真实数据若存在重复记录,删除后可避免重复统计;⑤清洗后验证:数据类型合理,无缺失值、异常值、重复值,可进入后续数据预处理和分析步骤。三、步骤3:数据预处理(新增字段+数据分组,适配后续分析)数据预处理是在数据清洗完成后,根据分析需求,新增辅助字段、对数据进行分组,便于后续的多维度分析(如按月份分析销量趋势、按区域分组统计销售额)。本步骤将新增“月份”“季度”字段,便于时间趋势分析,同时演示数据分组的基本方法。代码如下(全程注释,可直接复制运行):#步骤3.1:新增辅助字段(根据sale_date字段,新增月份、季度字段,用于时间趋势分析)

df['month']=df['sale_date'].dt.month#新增月份字段(1-6月)

df['quarter']=df['sale_date'].dt.quarter#新增季度字段(1-2季度,因为数据仅覆盖1-6月)

#查看新增字段后的前5行数据

print("新增字段后数据前5行:")

print(df[['sale_date','month','quarter']].head())

#步骤3.2:数据分组(根据分析需求,按不同维度分组,演示核心分组方法)

#分组方法1:按产品类别分组,统计每个类别的总销量、总销售额(核心分析维度)

category_group=df.groupby('product_category').agg({

'sales_quantity':'sum',#统计每个类别的总销量

'sales_amount':'sum',#统计每个类别的总销售额

'product_name':'nunique'#统计每个类别的产品数量

}).reset_index()#重置索引,让分组字段成为普通字段

#重命名分组后的字段,便于后续查看和可视化

category_group.columns=['产品类别','总销量','总销售额','产品数量']

print("\n按产品类别分组统计:")

print(category_group)

#分组方法2:按区域分组,统计每个区域的总销售额、平均单价(核心分析维度)

region_group=df.groupby('region').agg({

'sales_amount':'sum',#每个区域总销售额

'unit_price':'mean',#每个区域平均单价

'customer_id':'nunique'#每个区域的客户数量

}).reset_index()

region_group.columns=['销售区域','总销售额','平均单价','客户数量']

#平均单价保留2位小数,总销售额保留2位小数,便于查看

region_group['平均单价']=region_group['平均单价'].round(2)

region_group['总销售额']=region_group['总销售额'].round(2)

print("\n按区域分组统计:")

print(region_group)

#分组方法3:按月份分组,统计每个月份的总销量、总销售额(时间趋势分析核心)

month_group=df.groupby('month').agg({

'sales_quantity':'sum',

'sales_amount':'sum'

}).reset_index()

month_group.columns=['月份','总销量','总销售额']

print("\n按月份分组统计:")

print(month_group)

#分组方法4:按产品类别+区域分组,统计每个组合的总销售额(多维度交叉分析)

category_region_group=df.groupby(['product_category','region'])['sales_amount'].sum().reset_index()

category_region_group.columns=['产品类别','销售区域','总销售额']

print("\n按产品类别+区域交叉分组统计(前10行):")

print(category_region_group.head(10))代码运行结果说明:①新增辅助字段:成功新增month(月份)、quarter(季度)字段,后续可通过这两个字段分析1-6月的销量、销售额趋势;②数据分组:完成4种核心分组,涵盖单维度分组(产品类别、区域、月份)和多维度交叉分组(产品类别+区域),分组结果可直接用于后续可视化,同时可清晰看到各维度的销售表现(如哪个品类总销售额最高、哪个区域客户数量最多)。四、步骤4:核心数据分析(多维度拆解销售数据,挖掘关键信息)数据清洗和预处理完成后,进入核心数据分析阶段,本步骤将基于分组结果,从产品、区域、时间三个核心维度,拆解销售数据,挖掘关键信息(如销量最高的品类、销售额最高的区域、销量趋势变化等),为后续可视化报告提供数据支撑。代码如下(全程注释,可直接复制运行):#基于步骤3的分组结果,开展多维度核心分析

#分析1:产品维度分析(找出最受欢迎的产品类别、单个产品)

#1.1找出总销量、总销售额最高的产品类别

top_category_quantity=category_group.loc[category_group['总销量'].idxmax()]#总销量最高的品类

top_category_amount=category_group.loc[category_group['总销售额'].idxmax()]#总销售额最高的品类

print("===产品维度分析===")

print(f"总销量最高的产品类别:{top_category_quantity['产品类别']},总销量:{top_category_quantity['总销量']}件")

print(f"总销售额最高的产品类别:{top_category_amount['产品类别']},总销售额:{top_category_amount['总销售额']:.2f}元")

#1.2找出总销量最高的前5个单个产品

product_top5_quantity=df.groupby('product_name')['sales_quantity'].sum().sort_values(ascending=False).head(5)

print("\n总销量前5的单个产品:")

print(product_top5_quantity)

#分析2:区域维度分析(找出销售表现最好的区域,分析区域差异)

#2.1找出总销售额、客户数量最高的区域

top_region_amount=region_group.loc[region_group['总销售额'].idxmax()]

top_region_customer=region_group.loc[region_group['客户数量'].idxmax()]

print("\n===区域维度分析===")

print(f"总销售额最高的区域:{top_region_amount['销售区域']},总销售额:{top_region_amount['总销售额']:.2f}元")

print(f"客户数量最多的区域:{top_region_customer['销售区域']},客户数量:{top_region_customer['客户数量']}人")

#2.2计算各区域的销售额占比(分析区域贡献度)

region_group['销售额占比']=(region_group['总销售额']/region_group['总销售额'].sum()*100).round(2)

print("\n各区域销售额占比:")

print(region_group[['销售区域','总销售额','销售额占比']].sort_values('销售额占比',ascending=False))

#分析3:时间维度分析(分析销量、销售额的时间趋势,找出变化规律)

print("\n===时间维度分析===")

#3.1分析月度销量、销售额趋势(计算环比增长率,判断增长/下降趋势)

month_group['销量环比增长率']=month_group['总销量'].pct_change()*100#销量环比增长率

month_group['销售额环比增长率']=month_group['总销售额'].pct_change()*100#销售额环比增长率

#增长率保留2位小数,空值(1月份)填充为0

month_group['销量环比增长率']=month_group['销量环比增长率'].round(2).fillna(0)

month_group['销售额环比增长率']=month_group['销售额环比增长率'].round(2).fillna(0)

print("月度销量、销售额及环比增长率:")

print(month_group)

#3.2判断销量、销售额的整体趋势(计算1-6月的平均月度增长率)

avg_quantity_growth=month_group['销量环比增长率'][1:].mean().round(2)#排除1月份(无环比)

avg_amount_growth=month_group['销售额环比增长率'][1:].mean().round(2)

print(f"\n1-6月平均月度销量增长率:{avg_quantity_growth}%")

print(f"1-6月平均月度销售额增长率:{avg_amount_growth}%")

#分析4:交叉维度分析(产品类别在不同区域的销售表现,为区域营销策略提供支撑)

print("\n===交叉维度分析(产品类别×区域)===")

#找出每个区域销售额最高的产品类别

top_category_in_region=category_region_group.loc[category_region_group.groupby('销售区域')['总销售额'].idxmax()]

print("每个区域销售额最高的产品类别:")

print(top_category_in_region)代码运行结果说明:①产品维度分析:可清晰看到总销量、总销售额最高的产品类别,以及最受欢迎的单个产品,为产品库存调配、重点推广提供依据;②区域维度分析:可明确销售表现最好的区域、各区域的销售额占比,了解区域差异,为区域营销策略优化提供支撑;③时间维度分析:通过月度环比增长率、平均月度增长率,判断销量、销售额的整体趋势(如增长、下降、波动),为后续销售预测提供参考;④交叉维度分析:可看到每个区域最受欢迎的产品类别,便于针对性制定区域产品推广策略(如华北区域电子产品销售额最高,可重点推广电子产品)。第三部分:数据可视化(Matplotlib+Seaborn实操,生成可视化图表)数据可视化是将分析结果以图表形式呈现,让复杂的销售数据更直观、更易理解,便于后续撰写报告和决策。本部分将基于前面的分析结果,使用Matplotlib+Seaborn库,生成8个核心可视化图表,涵盖柱状图、折线图、饼图、热力图等常用图表类型,所有代码可直接复制运行,同时优化图表样式,提升美观度。实操说明:所有图表均设置中文显示(避免中文乱码),优化颜色、字体、标题,生成后可保存为图片,用于后续可视化报告的插入。一、可视化准备(设置中文显示+图表样式)首先设置中文显示(避免图表中中文乱码),定义统一的图表样式(颜色、字体),确保所有图表风格一致,提升美观度,后续所有可视化代码均基于此准备工作。代码如下(可直接复制运行,无需修改):#设置中文显示(避免中文乱码,核心代码,必须放在所有可视化代码之前)

plt.rcParams['font.sans-serif']=['SimHei','DejaVuSans']#中文显示字体

plt.rcParams['axes.unicode_minus']=False#解决负号显示异常问题

#设置图表整体样式(Seaborn美化,统一风格)

sns.set_style('whitegrid')#网格样式

plt.rcParams['figure.figsize']=(12,8)#图表默认大小(宽12,高8)

plt.rcParams['font.size']=11#图表默认字体大小二、图表1:各产品类别总销量柱状图(产品维度核心图表)用于直观展示不同产品类别的总销量差异,找出销量最高、最低的品类,代码如下:#图表1:各产品类别总销量柱状图

plt.figure(figsize=(10,6))#设置图表大小(宽10,高6)

#使用Seaborn绘制柱状图,颜色选择蓝色系,边缘颜色为黑色,增加清晰度

sns.barplot(x='产品类别',y='总销量',data=category_group,color='#3498db',edgecolor='black')

#设置图表标题、x轴标签、y轴标签(明确图表含义)

plt.title('2026年1-6月各产品类别总销量对比',fontsize=14,fontweight='bold',pad=20)

plt.xlabel('产品类别',fontsize=12)

plt.ylabel('总销量(件)',fontsize=12)

#在柱状图顶部添加数值标签(显示具体销量,便于对比)

fori,vinenumerate(category_group['总销量']):

plt.text(i,v+50,str(v),ha='center',va='bottom',fontsize=11,fontweight='bold')

#优化x轴标签(避免重叠,旋转45度)

plt.xticks(rotation=45,ha='right')

#去除图表顶部和右侧边框,提升美观度

sns.despine(top=True,right=True)

#调整布局(避免标签被截断)

plt.tight_layout()

#保存图表(保存至桌面,格式为png,分辨率300,清晰无模糊)

plt.savefig('C:/Users/Administrator/Desktop/图表1_各产品类别总销量.png',dpi=300,bbox_inches='tight')

#显示图表(在JupyterNotebook中预览)

plt.show()图表说明:柱状图将清晰展示4个产品类别的总销量,顶部标注具体销量数值,可快速判断哪个品类销量最高(如电子产品销量最高),哪个品类销量最低,直观呈现产品类别销量差异。三、图表2:各区域总销售额饼图(区域维度核心图表)用于展示各区域销售额占比,直观反映不同区域的销售贡献度,代码如下:#图表2:各区域总销售额饼图

plt.figure(figsize=(10,8))#设置图表大小(圆形饼图,宽高一致)

#定义饼图颜色(选择鲜明且不刺眼的颜色,区分不同区域)

colors=['#e74c3c','#3498db','#2ecc71','#f39c12','#9b59b6']

#绘制饼图,autopct显示百分比(保留1位小数),startangle设置起始角度(90度,顺时针排列)

#explode参数设置突出显示(此处突出销售额最高的区域,数值越大,突出越明显)

explode=[0.05ifregion==top_region_amount['销售区域']else0forregioninregion_group['销售区域']]

plt.pie(region_group['总销售额'],labels=region_group['销售区域'],autopct='%1.1f%%',

colors=colors,explode=explode,startangle=90,shadow=True,textprops={'fontsize':11})

#设置饼图标题(明确图表含义)

plt.title('2026年1-6月各区域销售额占比',fontsize=14,fontweight='bold',pad=20)

#确保饼图为正圆形(避免变形)

plt.axis('equal')

#调整布局

plt.tight_layout()

#保存图表至桌面

plt.savefig('C:/Users/Administrator/Desktop/图表2_各区域销售额占比.png',dpi=300,bbox_inches='tight')

#显示图表

plt.show()图表说明:饼图将展示5个区域的销售额占比,百分比标注清晰,销售额最高的区域会突出显示,可快速判断各区域的销售贡献度(如华东区域占比最高,贡献主要销售额)。四、图表3:月度总销量折线图(时间维度核心图表)用于展示1-6月销量的变化趋势,判断销量是增长、下降还是波动,代码如下:#图表3:月度总销量折线图

plt.figure(figsize=(12,6))#设置图表大小

#使用Seaborn绘制折线图,线条颜色为红色,线条宽度2,标记点为圆形,标记点大小6

sns.lineplot(x='月份',y='总销量',data=month_group,color='#e74c3c',linewidth=2,

marker='o',markersize=6,markerfacecolor='white',markeredgecolor='#e74c3c',markeredgewidth=2)

#设置图表标题、x轴标签、y轴标签

plt.title('2026年1-6月月度总销量趋势',fontsize=14,fontweight='bold',pad=20)

plt.xlabel('月份',fontsize=12)

plt.ylabel('总销量(件)',fontsize=12)

#设置x轴刻度(1-6月,整数刻度)

plt.xticks(range(1,7))

#在每个标记点添加数值标签(显示具体销量)

fori,rowinmonth_group.iterrows():

plt.text(row['月份'],row['总销量']+50,str(row['总销量']),

ha='center',va='bottom',fontsize=11,fontweight='bold')

#添加网格线(横向网格,便于查看数值)

plt.grid(axis='y',linestyle='--',alpha=0.7)

#去除顶部和右侧边框

sns.despine(top=True,right=True)

#调整布局

plt.tight_layout()

#保存图表

plt.savefig('C:/Users/Administrator/Desktop/图表3_月度总销量趋势.png',dpi=300,bbox_inches='tight')

#显示图表

plt.show()图表说明:折线图将清晰展示1-6月每月的总销量变化,标记点标注具体数值,可直观判断销量趋势(如3-4月销量增长、5-6月销量下降),为后续销售预测提供依据。五、图表4:产品类别×区域销售额热力图(交叉维度核心图表)用于展示不同产品类别在不同区域的销售额分布,找出各区域最受欢迎的产品类别,代码如下:#图表4:产品类别×区域销售额热力图

#先将交叉分组数据转换为热力图所需的透视表(行:产品类别,列:区域,值:总销售额)

heatmap_data=category_region_group.pivot(index='产品类别',columns='销售区域',values='总销售额')

plt.figure(figsize=(10,6))#设置图表大小

#绘制热力图,cmap选择颜色映射(从浅蓝到深蓝,数值越大颜色越深),annot显示具体数值(保留2位小数)

sns.heatmap(heatmap_data,cmap='Blues',annot=True,fmt='.2f',linewidths=0.5,cbar_kws={'label':'总销售额(元)'})

#设置图表标题、x轴标签、y轴标签

plt.title('2026年1-6月各产品类别在不同区域的销售额热力图',fontsize=14,fontweight='bold',pad=20)

plt.xlabel('销售区域',fontsize=12)

plt.ylabel('产品类别',fontsize=12)

#调整布局

plt.tight_layout()

#保存图表

plt.savefig('C:/Users/Administrator/Desktop/图表4_产品类别×区域销售额热力图.png',dpi=300,bbox_inches='tight')

#显示图表

plt.show()图表说明:热力图中颜色越深,代表该产品类别在该区域的销售额越高,单元格内标注具体销售额数值,可快速找出各区域销售额最高的产品类别(如华北区域电子产品颜色最深,销售额最高)。六、图表5:各产品类别平均单价柱状图(产品维度辅助图表)用于展示不同产品类别的平均单价差异,分析产品定价分布,代码如下:#图表5:各产品类别平均单价柱状图

#先计算每个产品类别的平均单价(基于原始数据分组)

category_avg_price=df.groupby('product_category')['unit_price'].mean().reset_index()

category_avg_price.columns=['产品类别','平均单价']

category_avg_price['平均单价']=category_avg_price['平均单价'].round(2)

plt.figure(figsize=(10,6))

#绘制柱状图,颜色选择绿色系

sns.barplot(x='产品类别',y='平均单价',data=category_avg_price,color='#2ecc71',edgecolor='black')

#设置标题和标签

plt.title('2026年1-6月各产品类别平均单价对比',fontsize=14,fontweight='bold',pad=20)

plt.xlabel('产品类别',fontsize=12)

plt.ylabel('平均单价(元)',fontsize=12)

#添加数值标签

fori,vinenumerate(category_avg_price['平均单价']):

plt.text(i,v+50,str(v),ha='center',va='bottom',fontsize=11,fontweight='bold')

#优化x轴标签

plt.xticks(rotation=45,ha='right')

#去除顶部和右侧边框

sns.despine(top=True,right=True)

#调整布局

plt.tight_layout()

#保存图表

plt.savefig('C:/Users/Administrator/Desktop/图表5_各产品类别平均单价.png',dpi=300,bbox_inches='tight')

#显示图表

plt.show()七、图表6:月度销售额环比增长率折线图(时间维度辅助图表)用于展示1-6月销售额的环比增长情况,判断增长势头,代码如下:#图表6:月度销售额环比增长率折线图

plt.figure(figsize=(12,6))

#绘制折线图,线条颜色为橙色,标记点为方形

sns.lineplot(x='月份',y='销售额环比增长率',data=month_group,color='#f39c12',linewidth=2,

marker='s',markersize=6,markerfacecolor='white',markeredgecolor='#f39c12',markeredgewidth=2)

#添加水平参考线(y=0,增长率为0,区分增长和下降)

plt.axhline(y=0,color='black',linestyle='--',alpha=0.5)

#设置标题和标签

plt.title('2026年1-6月月度销售额环比增长率趋势',fontsize=14,fontweight='bold',pad=20)

plt.xlabel('月份',fontsize=12)

plt.ylabel('销售额环比增长率(%)',fontsize=12)

#设置x轴刻度

plt.xticks(range(1,7))

#添加数值标签

fori,rowinmonth_group.iterrows():

plt.text(row['月份'],row['销售额环比增长率']+1,str(row['销售额环比增长率'])+'%',

ha='center',va='bottom'ifrow['销售额环比增长率']>=0else'top',

fontsize=11,fontweight='bold')

#添加网格线

plt.grid(axis='y',linestyle='--',alpha=0.7)

#去除顶部和右侧边框

sns.despine(top=True,right=True)

#调整布局

plt.tight_layout()

#保存图表

plt.savefig('C:/Users/Administrator/Desktop/图表6_月度销售额环比增长率.png',dpi=300,bbox_inches='tight')

#显示图表

plt.show()八、图表7:销量与销售额散点图(相关性分析图表)用于分析销量与销售额的相关性,判断两者是否存在正相关关系,代码如下:#图表7:销量与销售额散点图

plt.figure(figsize=(10,6))

#绘制散点图,颜色为紫色,透明度0.6(避免点重叠),添加趋势线(判断相关性)

sns.regplot(x='sales_quantity',y='sales_amount',data=df,color='#9b59b6',alpha=0.6,

line_kws={'color':'red','linewidth':2},scatter_kws={'s':30})

#设置标题和标签

plt.title('2026年1-6月销量与销售额相关性分析',fontsize=14,fontweight='bold',pad=20)

plt.xlabel('销量(件)',fontsize=12)

plt.ylabel('销售额(元)',fontsize=12)

#计算相关系数(衡量相关性强弱,取值-1到1,越接近1,正相关越强)

correlation=df['sales_quantity'].corr(df['sales_amount']).round(4)

plt.text(35,df['sales_amount'].min()+5000,f'相关系数:{correlation}',

fontsize=12,fontweight='bold',bbox=dict(boxstyle='round',facecolor='white',alpha=0.8))

#去除顶部和右侧边框

sns.despine(top=True,right=True)

#调整布局

plt.tight_layout()

#保存图表

plt.savefig('C:/Users/Administrator/Desktop/图表7_销量与销售额相关性.png',dpi=300,bbox_inches='tight')

#显示图表

plt.show()八、图表8:各区域客户数量柱状图(区域维度辅助图表)用于展示各区域的客户数量差异,分析区域客户分布,代码如下:#图表8:各区域客户数量柱状图

plt.figure(figsize=(10,6))

#绘制柱状图,颜色为青色

sns.barplot(x='销售区域',y='客

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论