Python自动化:每日销售数据可视化

这是手动执行sql分组查出的Linda奶茶店每日的销售数据,那么能否图形化展示方便对比近一个月每日的销售趋势呢。如果是做在网站里,前端可以集成echart或highchart生成柱状图或线状图。如果需要每天定时推送这些数据到邮箱或其他消息通知渠道,第一步肯定是需要先生成图片到服务器本地再去做其他的组装。
在这里插入图片描述
这是一段调好的脚本,数据是从数据库实时获取的。

import mysql.connector
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import matplotlib.font_manager as fm
import os

# 设置 matplotlib 字体
plt.rcParams
<think>我们被要求使用Python进行超市销售数据可视化。根据引用资料,我们可以总结出以下步骤:1. **数据读取与清理**:使用pandas读取数据文件(如CSV或Excel),并进行必要的数据清理(处理缺失值、异常值等)。 2. **数据预处理**:对数据进行分类、聚合等操作,以便后续分析。 3. **数据可视化**:使用matplotlib、seaborn、pyecharts等库进行可视化。4.**结果展示**:生成图表并分析。 下面将逐步说明实现方法: ###1.数据读取与清理首先,导入必要的库(如pandas)并读取数据文件。假设数据文件为'supermarket_sales.csv'。```pythonimportpandas aspd#读取数据df= pd.read_csv('supermarket_sales.csv') ```数据清理可能包括:-检查缺失值:`df.isnull().sum()`-处理缺失值:填充或删除-检查异常值:通过描述性统计或可视化###2.数据预处理根据分析目标,对数据进行预处理。例如:-将日期列转换为日期类型-提取月份、星期等信息-按产品类别、地区等分组聚合```python#将日期列转换为datetime类型df['Date']= pd.to_datetime(df['Date'])#提取月份df['Month']= df['Date'].dt.month#按产品类别分组,计算销售额总和category_sales= df.groupby('Productline')['Total'].sum().reset_index()``` ###3.数据可视化使用可视化库绘制图表。常见的图表类型包括: -柱状图:比较不同类别的销售额-饼图:显示支付方式占比-折线图:展示销售额随时间的变化-热力图:展示相关性####示例1:柱状图(不同产品类别的销售额) ```pythonimport matplotlib.pyplot asplt#绘制柱状图plt.figure(figsize=(10,6))plt.bar(category_sales['Product line'], category_sales['Total']) plt.title('Salesby ProductLine') plt.xlabel('Product Line') plt.ylabel('Total Sales') plt.xticks(rotation=45)plt.show() ```####示例2:饼图(支付方式占比)```python#统计支付方式payment_counts= df['Payment'].value_counts()plt.figure(figsize=(8,8)) plt.pie(payment_counts,labels=payment_counts.index,autopct='%1.1f%%') plt.title('Payment MethodDistribution')plt.show() ```####示例3:折线图(每日销售额趋势) ```python#按日期分组daily_sales =df.groupby('Date')['Total'].sum().reset_index()plt.figure(figsize=(12,6))plt.plot(daily_sales['Date'], daily_sales['Total']) plt.title('Daily SalesTrend')plt.xlabel('Date') plt.ylabel('Total Sales') plt.grid(True)plt.show() ```###4.使用Pyecharts进行高级可视化引用[4]中使用了pyecharts,它可以生成交互式图表。例如,绘制饼图: ```pythonfrom pyecharts.chartsimport Piefrompyecharts importoptions asopts#计算销售额总和sale_sum= int(df['Total'].sum())#绘制饼图(示例中展示的是销售额的单一值,实际可能需要分类展示)#这里以产品类别销售额占比为例data_pie= [(i,int(j))for i,j inzip(category_sales['Product line'], category_sales['Total'])]pie =(Pie().add("", data_pie).set_global_opts(title_opts=opts.TitleOpts(title="Salesby ProductLine")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))) pie.render('sales_pie.html')#生成HTML文件``` ###5.项目总结通过以上步骤,我们可以对超市销售数据进行多角度的可视化分析,帮助管理者了解销售情况、顾客行为等,从而做出决策。 §§相关问题§§1.如何处理超市销售数据中的缺失值和异常值? 2.除了上述图表,还有哪些适合超市销售数据的可视化方法?3.如何用Python实现超市销售数据的交互式仪表板?</think>### Python超市销售数据可视化实现方法 #### 1. **数据准备与导入** ```python import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 读取数据(支持CSV/Excel) df = pd.read_csv('supermarket_sales.csv') # 或 read_excel() ``` #### 2. **数据清洗与预处理** ```python # 处理缺失值 df.fillna(0, inplace=True) # 转换日期格式 df['Date'] = pd.to_datetime(df['Date']) # 添加衍生特征 df['Month'] = df['Date'].dt.month df['DayOfWeek'] = df['Date'].dt.day_name() ``` #### 3. **核心可视化方法** ##### (1) 销售额分析 ```python # 月度销售额趋势 plt.figure(figsize=(12,6)) sns.lineplot(x='Month', y='Total', data=df, estimator='sum', ci=None) plt.title('月度销售额趋势', fontsize=15) plt.ylabel('总销售额($)') plt.show() ``` ##### (2) 商品类别分析 ```python # 商品类别销售额占比(饼图) category_sales = df.groupby('Product line')['Total'].sum() plt.pie(category_sales, labels=category_sales.index, autopct='%1.1f%%') plt.title('商品类别销售占比') ``` ##### (3) 支付方式分析 ```python # 支付方式分布(条形图) payment_counts = df['Payment'].value_counts() sns.barplot(x=payment_counts.index, y=payment_counts.values) plt.title('支付方式分布') plt.ylabel('交易次数') ``` ##### (4) 客户行为分析 ```python # 客户评分分布(箱线图) sns.boxplot(x='Branch', y='Rating', data=df) plt.title('分店客户评分分布') ``` #### 4. **高级可视化技巧** ```python # 热力图(相关性分析) corr_matrix = df[['Unit price', 'Quantity', 'Total']].corr() sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') # 分面网格(多维度分析) g = sns.FacetGrid(df, col='Gender', row='Customer type') g.map(sns.scatterplot, 'Unit price', 'Total') ``` #### 5. **交互式可视化(Pyecharts)** ```python from pyecharts.charts import Pie from pyecharts import options as opts # 交互式饼图 pie = ( Pie() .add("", [list(z) for z in zip(category_sales.index, category_sales.values)]) .set_global_opts(title_opts=opts.TitleOpts(title="商品销售占比")) ) pie.render("sales_pie.html") # 生成独立HTML文件 ``` #### 6. **关键指标仪表盘** ```python # 计算核心指标 total_sales = df['Total'].sum() avg_rating = df['Rating'].mean() top_product = category_sales.idxmax() # 输出仪表盘 print(f"📊 总销售: ${total_sales:,.2f}") print(f"⭐ 平均评分: {avg_rating:.1f}/5") print(f"🏆 畅销品类: {top_product}") ``` #### 最佳实践建议: 1. **数据粒度**:保持原始交易记录级数据,便于多维度分析 2. **颜色规范**:使用统一配色方案(如`palette='viridis'`) 3. **交互功能**:添加`plt.tight_layout()`和`%matplotlib notebook`实现图表交互 4. **自动化报告**:使用`Jupyter Notebook`或`Streamlit`构建可重复分析流程 > 示例数据可视化结果可参考超市销售分析案例[^2][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

设计师Linda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值