超市销售数据-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)
  1. data.groupby("类别ID")["销量"].sum(): 这一部分首先对数据集 data 按照 “类别ID” 进行分组,然后针对每个类别的销量("销量"列)进行求和操作。

  2. .reset_index(): 对分组后的结果进行重置索引,将其转换为一个新的DataFrame,以便后续操作。

  3. .sort_values(by="销量", ascending=False): 对DataFrame按照销量("销量"列)进行降序排序,即将销量最高的类别排在最前面。参数 ascending=False 表示按降序排列。

  4. .head(10): 获取排序后的前10行数据,即销量最高的10个商品类别。

哪些商品比较畅销?

pd.pivot_table(data,index="商品ID",values="销量",aggfunc="sum").reset_index().sort_values(by="销量",ascending=False).head(10)
  1. pd.pivot_table(data, index="商品ID", values="销量", aggfunc="sum"):这部分代码使用了 Pandas 库中的 pivot_table 函数,它用于创建透视表。在这里,它的参数含义如下:

    • data:指定数据源,即数据集。
    • index="商品ID":表示将 “商品ID” 列作为透视表的行索引。
    • values="销量":表示将 “销量” 列作为需要聚合的数值列。
    • aggfunc="sum":表示对 “销量” 列进行汇总计算,这里使用的是求和函数 sum
  2. .reset_index():对生成的透视表结果进行重置索引,将其转换为一个新的DataFrame对象。

  3. .sort_values(by="销量", ascending=False):对透视表结果按照 “销量” 列进行降序排序,即将销量最高的商品排在最前面。参数 ascending=False 表示按降序排列。

  4. .head(10):获取排序后的前10行数据,即销量最高的10个商品。

不同门店的销售额占比

data["销售额"]=data["销量"]*data["单价"]
# 不同门店销售
print(data.groupby("门店编号")["销售额"].sum())
# 不同门店销售额占比
dfbb = data.groupby("门店编号")[["销售额"]].sum()/data["销售额"].sum()
dfbb.rename(columns={'销售额':'销售额占比'},inplace=True)
dfbb
  1. data["销售额"]=data["销量"]*data["单价"]:首先,创建了一个新的列 “销售额”,其值为 “销量” 列和 “单价” 列对应位置的乘积,表示每个商品的销售额。

  2. print(data.groupby("门店编号")["销售额"].sum()):使用 groupby 函数按照 “门店编号” 对数据进行分组,然后对每个门店的销售额进行求和操作,得到不同门店的销售额总和。

  3. dfbb = data.groupby("门店编号")[["销售额"]].sum()/data["销售额"].sum():这一部分是计算各门店销售额在总销售额中的占比。首先,使用 groupby 函数按照 “门店编号” 分组,然后对每个门店的销售额进行求和操作。接着,将每个门店的销售额与总销售额相除,得到销售额占比。

  4. 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()
  1. data["小时"]=data["成交时间"].map(lambda x:int(x.strftime("%H"))):这一部分代码使用了 map 函数和 lambda 表达式,将 “成交时间” 列中的时间信息提取出小时数,并存储到新的列 “小时” 中。strftime("%H") 方法用于将时间转换为字符串,并提取小时部分。

  2. traffic=data[["小时","订单ID"]].drop_duplicates():这一部分代码将数据集中的 “小时” 和 “订单ID” 列提取出来,并对其进行去重操作,得到每小时的订单数量。

  3. 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()
  1. import pandas as pd:这行代码导入了Pandas库,并将其重命名为 pd,以便在后续代码中使用。

  2. from datetime import datetime:从 datetime 模块中导入 datetime 类。这是为了后续在解析日期时间时使用。

  3. 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,以正确解析包含中文字符的数据。
  4. data.head():这行代码输出 data DataFrame 的前5行数据,以便查看数据的样式和结构。

  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))
  1. This_month=data[(data["成交时间"]>=datetime(2018,2,1))&(data["成交时间"]<=datetime(2018,2,28))]:这行代码根据成交时间筛选出了本月的订单数据。使用了DataFrame的布尔索引,选择了成交时间在2月1日至2月28日之间的数据。

  2. sales_1=(This_month["销量"]*This_month['单价']).sum():这行代码计算了本月的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。

  3. traffic_1=This_month["订单ID"].drop_duplicates().count():这行代码计算了本月的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。

  4. s_t_1=sales_1/traffic_1:这行代码计算了本月的客单价,即销售额除以客流量。

  5. 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))
  1. last_month=data[(data["成交时间"]>=datetime(2018,1,1))&(data["成交时间"]<=datetime(2018,1,31))]:这行代码根据成交时间筛选出了上月的订单数据。使用了DataFrame的布尔索引,选择了成交时间在1月1日至1月31日之间的数据。

  2. sales_2=(last_month["销量"]*last_month['单价']).sum():这行代码计算了上月的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。

  3. traffic_2=last_month["订单ID"].drop_duplicates().count():这行代码计算了上月的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。

  4. s_t_2=sales_2/traffic_2:这行代码计算了上月的客单价,即销售额除以客流量。

  5. 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))
  1. same_month=data[(data["成交时间"]>=datetime(2017,2,1))&(data["成交时间"]<=datetime(2017,2,28))]:这行代码根据成交时间筛选出了去年同期(2017年2月)的订单数据。使用了DataFrame的布尔索引,选择了成交时间在2017年2月1日至2017年2月28日之间的数据。

  2. sales_3=(same_month["销量"]*same_month["单价"]).sum():这行代码计算了去年同期的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。

  3. traffic_3=same_month["订单ID"].drop_duplicates().count():这行代码计算了去年同期的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。

  4. s_t_3=sales_3/traffic_3:这行代码计算了去年同期的客单价,即销售额除以客流量。

  5. 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)
  1. def get_month_data(data)::这行代码定义了一个名为 get_month_data() 的函数,它接受一个数据集 data 作为输入参数。

  2. sale=(data["销量"]*data["单价"]).sum():在函数内部,这行代码计算了给定数据的销售额。首先,将销量和单价相乘得到每笔订单的销售额,然后对所有订单的销售额进行求和。

  3. traffic=data["订单ID"].drop_duplicates().count():这行代码计算了给定数据的客流量。首先,对订单ID列进行去重操作,然后计算去重后的订单数量,即客流量。

  4. s_t=sale/traffic:这行代码计算了给定数据的客单价,即销售额除以客流量。

  5. return (sale,traffic,s_t):这行代码将销售额、客流量和客单价作为元组返回给调用方。

  6. sales_1,traffic_1,s_t_1=get_month_data(This_month):这行代码调用 get_month_data() 函数计算了本月的销售额、客流量和客单价,并将结果分别赋值给了 sales_1traffic_1s_t_1 变量。

  7. 类似地,sales_2,traffic_2,s_t_2=get_month_data(last_month)sales_3,traffic_3,s_t_3=get_month_data(same_month) 分别计算了上月和去年同期的相关指数。

  8. 最后,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
  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的行标签,分别对应销售额、客流量和客单价。
  2. report["环比"]=report["本月累计"]/report["上月同期"]-1:这行代码计算了环比,即本月累计与上月同期的销售额、客流量和客单价的增长率。

  3. report["同比"]=report["本月累计"]/report["去年同期"]-1:这行代码计算了同比,即本月累计与去年同期的销售额、客流量和客单价的增长率。

# 查看报表
report
# 将结果导出本地
report.to_csv("order.csv",encoding="utf-8-sig")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT 实现无边框可伸缩变换有阴影的QDialog弹窗

实现无标题栏窗口的拖拽移动、调节窗口大小以及边框阴影效果。初始化时进行位或操作&#xff0c;将这些标志合并为一个值&#xff0c;并将其设置为窗口的标志。这些标志分别表示这是一个对话框、无边框窗口、有标题栏、有最小化按钮和最大化按钮。 setWindowFlags(Qt::Dialog |…

Java(内部类)

1.内部类 内的五大成员&#xff1a;属性、方法、构造方法、代码块、内部类 解释&#xff1a;在一个类的里面&#xff0c;再定义一个类。举例:在A类的内部定义B类&#xff0c;B类就被称为内部类注意&#xff1a;内部类表示的事物是外部类的一部分&#xff0c;内部类单独出现没…

Digi XBee RF 模块型号说明

目录 Digi XBee 射频模块 2.4 GHz 射频模块&#xff1a; 1.Digi XBee3系列&#xff1a; XB3-24Z8RM-J 2. Digi XBee S2C系列&#xff1a; XBP24CZ7UIS-005 低于 1 GHz 射频模块 1. Digi XBee 900 和 868 MHz 模块&#xff1a; XBP9X-DMUS-021 2. Digi XTend vB 模块…

MCU配置的1106模块与1102模块功能差异分析

在现代工业自动化和智能控制领域&#xff0c;微控制器(MCU)扮演着至关重要的角色。而在MCU的配置中&#xff0c;选择适合的传感器采集模块是确保数据采集准确性和多样性的关键。其中&#xff0c;1106模块和1102模块作为两种常见的采集模块&#xff0c;各自具有独特的功能特点和…

SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值

在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时&#xff0c;你可以结合 SQLAlchemy 的 func 模块来实现 SQL 函数的调用&#xff0c;比如 JSON_EXTRACT&#xff0c;并使用 group_by 和 count 方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步…

sdrangel使用说明

使用说明 首先找一个usrp设备&#xff0c;我找到的是b205进行连接。打开生成的sdrangel.exe&#xff0c;第一次打开会出现空白界面 点击Add Rx Device按钮。 然后会弹出一个设备刷新窗口&#xff0c;选择你需要的设备 点击OK后&#xff0c;会响应一段时间&#xff0c;然后弹…

孙崧-回归祖国的数学天才谈国外学习研究感受

孙崧&#xff0c;这位37岁的美国加州大学伯克利分校数学系教授&#xff0c;今年正式回归祖国&#xff0c;担任浙江大学数学高等研究院杜建英讲席教授、博士生导师。在此&#xff0c;知识人网小编就经历过国外就读、从事博士后研究及任教的这位数学天才是怎么说的&#xff0c;或…

【三十二】【算法分析与设计】深搜(2),98。 验证二叉搜索树,不同方式定义递归函数,230。 二叉搜索树中第 K 小的元素,257。 二叉树的所有路径

98. 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。…

小程序 两页面间数据传递

页面1 页面2 实现效果&#xff1a;点击页面1 可以直接跳进页面2 实现过程&#xff1a; xhtml <view class"rank" wx:for"{{rankList}}" data-ids"{{item.id}}" data-names"{{item.name}}" data-description"{{item.descri…

C++ 11 初始化对象

1 概述 在C11中&#xff0c;可以使用多种方式来初始化对象。以下是一些常见的初始化方法&#xff1a; 2 列表初始化&#xff08;Uniform Initialization&#xff09; int a{10}; // 列表初始化一个整数 int b {10}; // 同样的&#xff0c;这也是列表初始化std::string str{…

行测——言语分析

行测——言语分析 1. 全文概括题1.1 做题思路1.2 例子1.2.1 概括内容1.2.2 标题类 2.中心理解题2.1 做题思路2.2 例子2.2.1 关键词清晰2.2.2 关键词不清晰 3. 逻辑顺序题3.1 做题思路3.2 例子3.2.1 划线部分填什么句子3.2.2 句子排序3.2.3 下一段讲什么3.2.4 细节分析题 4. 逻辑…

【C/C++】BST树的后序遍历

题目描述&#xff1a; 给定一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1a; 5 / \ 2 6 / \ 1 3 示例…

IPKISS ------ 导入 Lumerical S-matrix 仿真结果

IPKISS ------ 导入 Lumerical S-matrix 仿真结果 引言引言 这里给大家介绍一下如何使用 IPKISS 导入 Lumerical 中器件 S Matrix 的仿真结果。 import ipkiss3.all as i3 import matplotlib.pyplot as plt import numpy as nps_matrix = i3.device_sim.satrix1swep.from_tou…

[ RV1108_LINUX] 关于如何调整cpu中vdd_core的电压

问题描述 通过rv1108.dtsi调整其中dvfs节点下pd_core和pd_ddr对应频率的电压。发现修改后电压并没有改变&#xff0c;一直为11.25v。尝试了将pd_core下的operating-points中的1008000 1150000修改为1008000 1200000&#xff0c;也无作用。将operating-points中频率是留一个&am…

49. QT中的HTTP通信与JSON数据格式解析

1. 说明 最近参考B站以为博主的视频视频链接学习了一些在QT当中利用HTTP访问网页数据的相关知识,在此记录一下。在访问网页的时候主要用到的接口类包括:QNetworkAccessManager、QNetworkReply、QNetworkRequest,因为大部分网页数据都是以 JSON 格式保存的,所以在获取到网页…

Spring Boot Actuator

概述 Spring Boot Actuator是Spring Boot的一个功能模块&#xff0c;用于提供生产环境中常见的监控和管理功能。它提供了各种端点&#xff08;endpoints&#xff09;&#xff0c;可以用于监视应用程序的运行状况、收集应用程序的指标数据以及与应用程序进行交互。 以下是Spri…

Oracle基础-PL/SQL编程 备份

1、PL/SQL简介 PL/SQL块结构 约定&#xff1a;为了方便&#xff0c;本文后面把PL/SQL简称PL。 PL程序都是以块&#xff08;BLOCK&#xff09;为基本单位&#xff0c;整个PL块分三部分&#xff1a;声明部分&#xff08;使用DECLARE开头&#xff09;、执行部分(以BEGIN开头)和异…

数字人视频合成平台推荐

数字人讲解视频和全景作品的结合是一种全新的数字交互方式&#xff0c;可为用户提供更加直观和具有沉浸感的内容展示和交互体验&#xff0c;从而适用于诸如旅游、展览、博物馆、教育培训、泛房地产、以及娱乐和文化等应用场景。 当前数字人合成视频技术已经发展至日益成熟的阶…

Redission--分布式锁

Redission的锁的好处 Redission分布式锁的底层是setnx和lua脚本(保证原子性) 1.是可重入锁。 2.Redisson 锁支持自动续期功能&#xff0c;这可以帮助我们合理控制分布式锁的有效时长&#xff0c;当业务逻辑执行时间超出了锁的过期时间&#xff0c;锁会自动续期&#xff0c;避免…

学术论文写作

学术论文写作 摘自复旦张军平老师的书籍&#xff1a;高质量读研&#xff1a;教你如何写论文、做科研 标题 标题&#xff1a;1.明确研究内容&#xff1b;2.吸引眼球 摘要 字数&#xff1a;期刊&#xff08;300字左右&#xff09;、会议&#xff08;150字左右&#xff09;、毕…