超市销售数据-python数据分析项目
Python数据分析项目-基于Python的销售数据分析项目
文章目录
- Python数据分析项目-基于Python的销售数据分析项目
- 项目介绍
- 数据
- 分析结果导出
- 数据查阅
- 数据分析内容
- 哪些类别比较畅销?
- 哪些商品比较畅销?
- 不同门店的销售额占比
- 哪个时间段是超市的客流高封期?
- 查看源数据类型
- 计算本月的相关的指标
- 计算上月相关指标
- 计算去年同期相关指标
- 创建DataFrame 添加同比和环比字段
项目介绍
数据
分析结果导出
近些年来,国内大型连锁超市如雨后春笋般迸发,对于各个超市来说,竞争压力不可谓 不大,为了拓展、保留客户,各种促销手段应运而生。 以下为国内某连锁超市的成交统计数据,针对于该数据,挖掘其中价值,为该超市的促销手段提供技术支持。
数据查阅
import pandas as pd
from datetime import datetime# 导入数据源,parse_dates:将时间字符串转为日期时间格式
data=pd.read_csv("order-14.3.csv",parse_dates=["成交时间"],encoding='gbk')
print(data.shape)
data.head()
(3478, 7)
商品ID 类别ID 门店编号 单价 销量 成交时间 订单ID
0 30006206 915000003 CDNL 25.23 0.328 2017-01-03 09:56:00 20170103CDLG000210052759
1 30163281 914010000 CDNL 2.00 2.000 2017-01-03 09:56:00 20170103CDLG000210052759
2 30200518 922000000 CDNL 19.62 0.230 2017-01-03 09:56:00 20170103CDLG000210052759
3 29989105 922000000 CDNL 2.80 2.044 2017-01-03 09:56:00 20170103CDLG000210052759
4 30179558 915000100 CDNL 47.41 0.226 2017-01-03 09:56:00 20170103CDLG000210052759
数据分析内容
哪些类别比较畅销?
# ascending=False 降序
data.groupby("类别ID")["销量"].sum().reset_index().sort_values(by="销量",ascending=False).head(10)
-
data.groupby("类别ID")["销量"].sum()
: 这一部分首先对数据集data
按照 “类别ID” 进行分组,然后针对每个类别的销量("销量"列)进行求和操作。 -
.reset_index()
: 对分组后的结果进行重置索引,将其转换为一个新的DataFrame,以便后续操作。 -
.sort_values(by="销量", ascending=False)
: 对DataFrame按照销量("销量"列)进行降序排序,即将销量最高的类别排在最前面。参数ascending=False
表示按降序排列。 -
.head(10)
: 获取排序后的前10行数据,即销量最高的10个商品类别。
哪些商品比较畅销?
pd.pivot_table(data,index="商品ID",values="销量",aggfunc="sum").reset_index().sort_values(by="销量",ascending=False).head(10)
-
pd.pivot_table(data, index="商品ID", values="销量", aggfunc="sum")
:这部分代码使用了 Pandas 库中的pivot_table
函数,它用于创建透视表。在这里,它的参数含义如下:data
:指定数据源,即数据集。index="商品ID"
:表示将 “商品ID” 列作为透视表的行索引。values="销量"
:表示将 “销量” 列作为需要聚合的数值列。aggfunc="sum"
:表示对 “销量” 列进行汇总计算,这里使用的是求和函数sum
。
-
.reset_index()
:对生成的透视表结果进行重置索引,将其转换为一个新的DataFrame对象。 -
.sort_values(by="销量", ascending=False)
:对透视表结果按照 “销量” 列进行降序排序,即将销量最高的商品排在最前面。参数ascending=False
表示按降序排列。 -
.head(10)
:获取排序后的前10行数据,即销量最高的10个商品。
不同门店的销售额占比
data["销售额"]=data["销量"]*data["单价"]
# 不同门店销售
print(data.groupby("门店编号")["销售额"].sum())
# 不同门店销售额占比
dfbb = data.groupby("门店编号")[["销售额"]].sum()/data["销售额"].sum()
dfbb.rename(columns={'销售额':'销售额占比'},inplace=True)
dfbb
-
data["销售额"]=data["销量"]*data["单价"]
:首先,创建了一个新的列 “销售额”,其值为 “销量” 列和 “单价” 列对应位置的乘积,表示每个商品的销售额。 -
print(data.groupby("门店编号")["销售额"].sum())
:使用groupby
函数按照 “门店编号” 对数据进行分组,然后对每个门店的销售额进行求和操作,得到不同门店的销售额总和。 -
dfbb = data.groupby("门店编号")[["销售额"]].sum()/data["销售额"].sum()
:这一部分是计算各门店销售额在总销售额中的占比。首先,使用groupby
函数按照 “门店编号” 分组,然后对每个门店的销售额进行求和操作。接着,将每个门店的销售额与总销售额相除,得到销售额占比。 -
dfbb.rename(columns={'销售额':'销售额占比'},inplace=True)
:对生成的 DataFrame 对象进行重命名,将列名 “销售额” 改为 “销售额占比”,以便更清晰地表示数据含义。
import matplotlib as pltplt.rcParams['figure.figsize'] = (16.0, 8.0) # 设置figure_size尺寸
plt.rcParams['font.sans-serif']=['SimHei'] # 用来设置字体样式以正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 默认是使用Unicode负号,设置正常显示字符,如正常显示负号
plt.rcParams['font.size'] = 15(data.groupby("门店编号")["销售额"].sum()/data["销售额"].sum()).plot.pie()
哪个时间段是超市的客流高封期?
# 利用自定义时间格式函数strftime提取小时数
data["小时"]=data["成交时间"].map(lambda x:int(x.strftime("%H")))
# 对小时和订单去重
traffic=data[["小时","订单ID"]].drop_duplicates()
# 求每小时的客流量
traffic.groupby("小时")["订单ID"].count().plot()
-
data["小时"]=data["成交时间"].map(lambda x:int(x.strftime("%H")))
:这一部分代码使用了map
函数和lambda
表达式,将 “成交时间” 列中的时间信息提取出小时数,并存储到新的列 “小时” 中。strftime("%H")
方法用于将时间转换为字符串,并提取小时部分。 -
traffic=data[["小时","订单ID"]].drop_duplicates()
:这一部分代码将数据集中的 “小时” 和 “订单ID” 列提取出来,并对其进行去重操作,得到每小时的订单数量。 -
traffic.groupby("小时")["订单ID"].count().plot()
:这部分代码计算了每小时的客流量,首先使用groupby
函数按照 “小时” 列进行分组,然后对每个小时的订单ID数量进行计数操作。最后,调用plot
方法绘制曲线图,横轴为小时,纵轴为客流量(订单数量)。
查看源数据类型
import pandas as pd
from datetime import datetimedata=pd.read_csv("order-14.1.csv",parse_dates=["成交时间"],encoding='gbk')
data.head()
# print(data.head(5))
# 查看源数据类型
data.info()
-
import pandas as pd
:这行代码导入了Pandas库,并将其重命名为pd
,以便在后续代码中使用。 -
from datetime import datetime
:从 datetime 模块中导入 datetime 类。这是为了后续在解析日期时间时使用。 -
data=pd.read_csv("order-14.1.csv",parse_dates=["成交时间"],encoding='gbk')
:这行代码使用pd.read_csv()
函数读取名为 “order-14.1.csv” 的CSV文件,并将其加载到名为data
的DataFrame中。其中的参数解释如下:"order-14.1.csv"
:指定要读取的CSV文件的路径。parse_dates=["成交时间"]
:指定要解析为日期时间类型的列名。在这里,“成交时间” 列会被解析为日期时间类型,以便后续进行时间序列的分析。encoding='gbk'
:指定文件的编码格式为GBK,以正确解析包含中文字符的数据。
-
data.head()
:这行代码输出data
DataFrame 的前5行数据,以便查看数据的样式和结构。 -
data.info()
:这行代码用于打印有关DataFrame的基本信息,包括每列的名称、非空值的数量以及每列的数据类型等。这有助于了解数据的完整性和结构。
计算本月的相关的指标
# 计算本月的相关的指标
This_month=data[(data["成交时间"]>=datetime(2018,2,1))&(data["成交时间"]<=datetime(2018,2,28))]
# 销售额计算
sales_1=(This_month["销量"]*This_month['单价']).sum()
# 客流量计算
traffic_1=This_month["订单ID"].drop_duplicates().count()
# 客单价计算
s_t_1=sales_1/traffic_1
print("本月销售额为:{:.2f},客流量为:{},客单价为:{:.2f}".format(sales_1,traffic_1,s_t_1))
-
This_month=data[(data["成交时间"]>=datetime(2018,2,1))&(data["成交时间"]<=datetime(2018,2,28))]
:这行代码根据成交时间筛选出了本月的订单数据。使用了DataFrame的布尔索引,选择了成交时间在2月1日至2月28日之间的数据。 -
sales_1=(This_month["销量"]*This_month['单价']).sum()
:这行代码计算了本月的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。 -
traffic_1=This_month["订单ID"].drop_duplicates().count()
:这行代码计算了本月的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。 -
s_t_1=sales_1/traffic_1
:这行代码计算了本月的客单价,即销售额除以客流量。 -
print("本月销售额为:{:.2f},客流量为:{},客单价为:{:.2f}".format(sales_1,traffic_1,s_t_1))
:这行代码将计算结果打印输出,格式化输出了本月的销售额、客流量和客单价,保留两位小数。
计算上月相关指标
# 计算上月相关指标
last_month=data[(data["成交时间"]>=datetime(2018,1,1))&(data["成交时间"]<=datetime(2018,1,31))]# 销售额计算
sales_2=(last_month["销量"]*last_month['单价']).sum()
# 客流量计算
traffic_2=last_month["订单ID"].drop_duplicates().count()
# 客单价计算
s_t_2=sales_2/traffic_2
print("本月销售额为:{:.2f},客流量为:{},客单价为:{:.2f}".format(sales_2,traffic_2,s_t_2))
-
last_month=data[(data["成交时间"]>=datetime(2018,1,1))&(data["成交时间"]<=datetime(2018,1,31))]
:这行代码根据成交时间筛选出了上月的订单数据。使用了DataFrame的布尔索引,选择了成交时间在1月1日至1月31日之间的数据。 -
sales_2=(last_month["销量"]*last_month['单价']).sum()
:这行代码计算了上月的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。 -
traffic_2=last_month["订单ID"].drop_duplicates().count()
:这行代码计算了上月的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。 -
s_t_2=sales_2/traffic_2
:这行代码计算了上月的客单价,即销售额除以客流量。 -
print("本月销售额为:{:.2f},客流量为:{},客单价为:{:.2f}".format(sales_2,traffic_2,s_t_2))
:这行代码将计算结果打印输出,格式化输出了上月的销售额、客流量和客单价,保留两位小数。
计算去年同期相关指标
# 计算去年同期相关指标
same_month=data[(data["成交时间"]>=datetime(2017,2,1))&(data["成交时间"]<=datetime(2017,2,28))]sales_3=(same_month["销量"]*same_month["单价"]).sum()traffic_3=same_month["订单ID"].drop_duplicates().count()
s_t_3=sales_3/traffic_3
print("本月销售额为:{:.2f},客流量为:{},客单价为:{:.2f}".format(sales_3,traffic_3,s_t_3))
-
same_month=data[(data["成交时间"]>=datetime(2017,2,1))&(data["成交时间"]<=datetime(2017,2,28))]
:这行代码根据成交时间筛选出了去年同期(2017年2月)的订单数据。使用了DataFrame的布尔索引,选择了成交时间在2017年2月1日至2017年2月28日之间的数据。 -
sales_3=(same_month["销量"]*same_month["单价"]).sum()
:这行代码计算了去年同期的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。 -
traffic_3=same_month["订单ID"].drop_duplicates().count()
:这行代码计算了去年同期的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。 -
s_t_3=sales_3/traffic_3
:这行代码计算了去年同期的客单价,即销售额除以客流量。 -
print("本月销售额为:{:.2f},客流量为:{},客单价为:{:.2f}".format(sales_3,traffic_3,s_t_3))
:这行代码将计算结果打印输出,格式化输出了去年同期的销售额、客流量和客单价,保留两位小数。
# 利用函数提高编码效率
def get_month_data(data):sale=(data["销量"]*data["单价"]).sum()traffic=data["订单ID"].drop_duplicates().count()s_t=sale/trafficreturn (sale,traffic,s_t)# 本月相关指数
sales_1,traffic_1,s_t_1=get_month_data(This_month)
print(sales_1,traffic_1,s_t_1)# 上月相关指数
sales_2,traffic_2,s_t_2=get_month_data(last_month)
print(sales_2,traffic_2,s_t_2)# 去年同期相关指数
sales_3,traffic_3,s_t_3=get_month_data(same_month)
print(sales_3,traffic_3,s_t_3)
-
def get_month_data(data):
:这行代码定义了一个名为get_month_data()
的函数,它接受一个数据集data
作为输入参数。 -
sale=(data["销量"]*data["单价"]).sum()
:在函数内部,这行代码计算了给定数据的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。 -
traffic=data["订单ID"].drop_duplicates().count()
:这行代码计算了给定数据的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。 -
s_t=sale/traffic
:这行代码计算了给定数据的客单价,即销售额除以客流量。 -
return (sale,traffic,s_t)
:这行代码将销售额、客流量和客单价作为元组返回给调用方。 -
sales_1,traffic_1,s_t_1=get_month_data(This_month)
:这行代码调用get_month_data()
函数计算了本月的销售额、客流量和客单价,并将结果分别赋值给了sales_1
、traffic_1
和s_t_1
变量。 -
类似地,
sales_2,traffic_2,s_t_2=get_month_data(last_month)
和sales_3,traffic_3,s_t_3=get_month_data(same_month)
分别计算了上月和去年同期的相关指数。 -
最后,
print(sales_1,traffic_1,s_t_1)
、print(sales_2,traffic_2,s_t_2)
和print(sales_3,traffic_3,s_t_3)
分别打印出了本月、上月和去年同期的销售额、客流量和客单价。
创建DataFrame 添加同比和环比字段
# 创建DataFrame
report=pd.DataFrame([[sales_1,sales_2,sales_3],[traffic_1,traffic_2,traffic_3],[s_t_1,s_t_2,s_t_3]],columns=["本月累计","上月同期","去年同期"],index=["销售额","客流量","客单价"])
# print(report)
# 添加同比和环比字段
report["环比"]=report["本月累计"]/report["上月同期"]-1report["同比"]=report["本月累计"]/report["去年同期"]-1
-
report=pd.DataFrame([[sales_1,sales_2,sales_3],[traffic_1,traffic_2,traffic_3],[s_t_1,s_t_2,s_t_3]], columns=["本月累计","上月同期","去年同期"], index=["销售额","客流量","客单价"])
:这行代码创建了一个DataFrame对象report
。其中:[[sales_1,sales_2,sales_3],[traffic_1,traffic_2,traffic_3],[s_t_1,s_t_2,s_t_3]]
:是一个二维列表,包含了本月累计、上月同期和去年同期的销售额、客流量和客单价。columns=["本月累计","上月同期","去年同期"]
:指定了DataFrame的列标签,分别对应本月累计、上月同期和去年同期。index=["销售额","客流量","客单价"]
:指定了DataFrame的行标签,分别对应销售额、客流量和客单价。
-
report["环比"]=report["本月累计"]/report["上月同期"]-1
:这行代码计算了环比,即本月累计与上月同期的销售额、客流量和客单价的增长率。 -
report["同比"]=report["本月累计"]/report["去年同期"]-1
:这行代码计算了同比,即本月累计与去年同期的销售额、客流量和客单价的增长率。
# 查看报表
report
# 将结果导出本地
report.to_csv("order.csv",encoding="utf-8-sig")
相关文章:

超市销售数据-python数据分析项目
Python数据分析项目-基于Python的销售数据分析项目 文章目录 Python数据分析项目-基于Python的销售数据分析项目项目介绍数据分析结果导出数据查阅 数据分析内容哪些类别比较畅销?哪些商品比较畅销?不同门店的销售额占比哪个时间段是超市的客流高封期?查看源数据类型计算本月…...
java实现手机号,密码,游邮箱 , 验证码的正则匹配工具类
先定义一个抽象类RegexPatterns,定义相关正则字符串 : public abstract class RegexPatterns {/*** 手机号正则*/public static final String PHONE_REGEX "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";/*** 邮箱正则*/public stat…...
java中的Arrays类的常用操作
Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。 import java.util.Arrays; Arrays.sort(arr); int index Arrays.binarySearch(arr, 3); boolean isEqual Arrays.equals(arr1, arr2); // isEqual为true int[] arrnew int[5]; Arrays.fill(arr, 7)…...

回溯算法|78.子集
力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {result.push_back(path); // 收集子集,要放在终止添加的上面,否则会漏掉自…...
VC++、GCC、CLANG,INT128有符号整数编译器关键字
注意INT128为目标平台扩展关键字,不属于C/C语言本身支持特性,每个C/C编译器平台支持上都略有不同,甚至不支持。 可以详细参考本人此篇文章: GUN C/C (GCC/CLANG) 对于 __int128_t (128位有符号大整数的扩展支持平台限…...

用于HUD平视显示器的控制芯片:S2D13V40
一款利用汽车抬头显示技术用于HUD平视显示器的控制芯片:S2D13V40。HUD的全称是Head Up Display,即平视显示器,以前应用于军用飞机上,旨在降低飞行员需要低头查看仪表的频率。起初,HUD通过光学原理,将驾驶相关的信息投射…...
JSP使用模板字符串数据不能渲染的问题
entrap father 的 rubbish JSP 数据不能直接渲染,要从接口请求后去拼接结构 然后模板字符串不能直接用 用以下方法是不能渲染出数据的 let div <div class"circulation"><div class"list"><div class"left"><div class&qu…...

AI音乐GPT时刻来临:Suno 快速入门手册!
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

数字乡村发展蓝图:科技赋能农村实现全面振兴
目录 一、数字乡村发展蓝图的内涵与目标 二、科技赋能农村:数字乡村发展的动力与路径 (一)加强农业科技创新,提升农业生产效率 (二)推进农村电商发展,拓宽农民增收渠道 (三&…...
Day42 动态规划 part04
Day42 动态规划 part04 46. 携带研究材料(卡哥的卡码网的题目) 背包问题 我的思路: 写不了一点儿…T^T 总结规律就是,dp数组要比原来各个size 1,dp[i][j] Math.max(xxx, xxxx(根据题目情况进行各种处理)) 解答: …...

python set是什么类型
python set是一种数据类型,数学里的集合概念,在Python语言里对应的是set类型。与list,tuple不同的地方是,set更加强调的是一种“从属关系”(membership),跟顺序无关,所以有重复的元素…...

redis事务(redis features)
redis支持事务,也就是可以在一次请求中执行多个命令。redis中的事务主要是通过MULTI和EXEC这两个命令来实现的。 MULTI命令用来开启一个事务,事务开启之后,所有的命令就都会被放入到一个队列中,最后通过一个EXEC命令来执行事务中…...

SpringBoot整合minio
SpringBoot整合minio 1. 下载及安装1.1 windows版本1.2 Linux版本 2. SpringBoot整合minio2.1 依赖2.2 配置文件2.3 配置类2.4 工具类2.5 测试1. 业务层2. 控制层 1. 下载及安装 1.1 windows版本 目录结构 启动文件 标红的地方按实际安装地更改 echo off REM 声明采用UT…...
3090. 每个字符最多出现两次的最长子字符串
说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,…...
26.活锁、饥饿锁
两个线程,相互改变了对方结束条件,导致两个线程不能结束。执行时间也都是一样,导致两个线程永远不会结束。 Slf4j public class LiveLockDemo {static volatile int count 10;public static void main(String[] args) {new Thread(() ->…...

docker 安装nginx
一、先查看有没有nginx镜像 docker images 二、发现没有nginx镜像,下载最新镜像 docker pull nginx 三、运行镜像 为了先复制出部分文件,先启动一个临时容器 docker run --name nginx -p 9001:80 -d nginx docker cp nginx:/etc/nginx/conf.d /home/…...

2024年阿里云新用户便宜购买云服务器攻略:5大细节助你降低购买成本
随着互联网的蓬勃发展,无论是个人还是企业,拥有一个稳定且高效的网站或APP已成为提升竞争力的关键。为了将这些项目部署并运行起来,购买一台实用又便宜的云服务器是必不可少的。阿里云作为国内首屈一指的云服务提供商,自然成为了众…...

SSTI模板注入(jinja2)
前面学习了SSTI中的smarty类型,今天学习了Jinja2,两种类型都是flask框架的,但是在注入的语法上还是有不同 SSTI:服务器端模板注入,也属于一种注入类型。与sql注入类似,也是通过凭借进行命令的执行ÿ…...

ESP32学习---ESP-NOW(一)
ESP32学习---ESP-NOW(一) 官网简介arduino 官网简介 首先看官网的介绍:https://www.espressif.com.cn/zh-hans/solutions/low-power-solutions/esp-now ESP-NOW 是乐鑫定义的一种无线通信协议,能够在无路由器的情况下直接、快速…...
C++核心高级编程 --- 3、函数提高
文章目录 第三章:3.函数提高3.1 函数默认参数3.2 函数占位参数3.3 函数重载3.3.1 函数重载概述3.3.2 注意事项 第三章: 3.函数提高 3.1 函数默认参数 语法结构:返回值类型 函数名 (参数 默认值){} #include <iostream> using name…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...