记第一次Python数据分析练习——2018年“泰迪杯”数据分析职业技能大赛B题(2021/5/20)

文章目的

本人目前是应用统计专业大二(2021/5/20)的本科生,上学期上过Python课,但说实话讲的不深,过了一个学期也基本上忘光了。

最近深刻地觉得计算机专业真是好啊,以后我也要当程序员.JPG ,最近开始和老板参加点小项目,打算重新把Python捡起来,不过其实和新入门没什么差别。最近老板给我们布置了个练习做做,便想通过CSDN来记录自己打代码的经历,也可以给同为刚入门的萌新提供点自己的思路,如果能帮上忙的话。

先来看题目:

数据框的操作1

数据来源:2018年“泰迪杯”数据分析职业技能大赛B题

数据说明:某商场在不同地点安放了5台自动售货机,编号分别为A、B、C、D、E。attachment1.csv提供了从2017年1月1日至2017年12月31日每台自动售货机的商品销售数据,附件2提供了商品的分类。

(注:这里我并没有收到附件2,仅有一个attachment1.csv文件,以下题目也不需要附件2。)

  1. 读取数据

    • attachment1.csv
  2. 转换变量

    有一条记录日期非法(2017/2/29),在做数据转换前先剔除它。

    • 订单号是唯一的,仍使用字符型变量;
    • 设备ID商品地点状态提现是分类变量,化为因子变量。
    • 应付金额实际金额为数值变量,无需改变。
    • 支付时间为字符型,将其转化为时间日期型。
  3. 统计不同地点的销售额,按销售额从大到小排序

  4. 销售量最大的前10种商品,销售额最大的前10种商品

  5. 统计不同地点的销售额最多的3类商品,然后按销售额从大到小排序

  6. 统计地点E在不同时间的销售额

    • 按月分组统计
    • 按小时分组统计
    • 按一星期的第几天分组统计

说实话,刚开始看到这个题目我人就麻了,这玩意我们学过吗?我使劲儿回忆上学期只讲到了字典就结课的Python知识,发现这玩意儿是我解决不了的。回头看看群,经老板提点,我开始了边百度边打代码的痛苦之旅。

首先上最终代码:

import pandas as pd
import os
if os.path.exists('attachment1.csv') == False:print('未找到attachment1.csv!','请将attachment1.csv文件放入以下目录:',os.getcwd())
else:am = pd.read_csv('attachment1.csv',encoding='gb2312')#2.去除日期非法数据#先直接转换:am['支付时间'] = pd.to_datetime(am['支付时间'], format='%Y/%m/%d %H:%M')#提示错误:"ValueError: time data 2017/2/29  3:44:00 PM doesn't match format specified"#于是:am1 = am[~am['支付时间'].isin(['2017/2/29  3:44:00 PM'])]#2.将如下分类变量改为因子变量cols = ['设备ID','商品','地点','状态','提现']for col in cols:am[col] = am[col].astype('category')#2.将支付时间改成时间日期型变量am1['支付时间'] = pd.to_datetime(am1['支付时间'],format='%Y/%m/%d %H:%M')#3.统计不同地点的销售额,按销售额从大到小排序am_SalesTotal = am1.groupby('地点')[['实际金额']].sum()\.sort_values(by='实际金额',ascending=False)\.rename(columns={'实际金额':'销售额'})#4.销售量最大的前10种商品,销售额最大的前10种商品am_SalesVolumeMax10 = am1.groupby('商品')['订单号']\.count().reset_index(name='销售量')\.sort_values(by='销售量',ascending=False)\.head(10)am_SalesMax10 = am1.groupby('商品')['实际金额'].sum()\.reset_index(name='销售额')\.sort_values(by='销售额',ascending=False)\.head(10)#4.或者am_SalesBothMax10 = am1.groupby('商品')\.agg(销售量 = pd.NamedAgg(column = '订单号',aggfunc = 'count'),销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum'))\.sort_values(by=['销售量','销售额'],ascending=False)\.head(10)#5.统计不同地点销售额最多的3类商品并按销售额降序排序am_SalesLoc = am1.groupby(['地点','商品'])\.agg(销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum'))\.sort_values(by=['地点','销售额'],ascending=[True,False])\.reset_index().groupby('地点')\.head(3)#6.地点E按月份统计销售额am_SalesMonth = am1.loc[am1.地点=='E']\.groupby(['地点',am1['支付时间'].apply(lambda x:x.month)])\.agg(销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum'))\.reset_index().set_index('地点')\.rename(columns={'支付时间':'月份'})#6.地点E按小时统计销售额am_SalesHour = am1.loc[am1.地点=='E']\.groupby(['地点',am1['支付时间'].apply(lambda x:x.hour)])\.agg(销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum'))\.reset_index().set_index('地点')\.rename(columns={'支付时间':'时'})#6.地点E按一星期的第几天统计销售额am2 = am1[:]am2['支付时间'] = am1['支付时间'].dt.weekdayam_SalesDay = am2.loc[am2.地点=='E']\.groupby(['地点','支付时间'])['实际金额']\.sum().reset_index(name='销售额')\.set_index('地点')\.rename(columns={'支付时间':'第几天(从星期天开始)'})#输出EXCEL报表writer = pd.ExcelWriter('Output.xlsx')am_SalesTotal.to_excel(writer,'各地区销售额')am_SalesBothMax10.to_excel(writer,'商品销售量与销售额前十')am_SalesLoc.to_excel(writer,'各地区销售额最多的三类商品')am_SalesMonth.to_excel(writer,'地点E按月份统计销售额')am_SalesHour.to_excel(writer,'地点E按小时统计销售额')am_SalesDay.to_excel(writer,'地点E按星期统计销售额')writer.save()print('统计报告已输出至:',os.getcwd(),'目录下的Output.xlsx,请注意查看。')input('Press Enter to exit')

第一题

  1. 读取数据

    • attachment1.csv

代码:

import pandas as pd
import numpy as np
import os
if os.path.exists('attachment1.csv') == False:print('未找到attachment1.csv!','请将attachment1.csv文件放入以下目录:',os.getcwd())
else:am = pd.read_csv('attachment1.csv',encoding='gb2312')

导入所需要的库,然后检测attachment1.csv文件在不在工作目录下,随后读取。由于存在中文项,我直接读取会乱码,就使用encoding = 'gb2312'编码打开。

文件检测(若attachment1.csv不在工作目录下):

未找到attachment1.csv! 请将attachment1.csv文件放入以下目录: C:\Users\Administrator\AppData\Local\Programs\Python\Python39

若存在则继续运行。

第二题

  1. 转换变量

    有一条记录日期非法(2017/2/29),在做数据转换前先剔除它。

日期非法,源文件的日期并没有用时间日期型格式,于是使用

am['支付时间'] = pd.to_datetime(am['支付时间'], format='%Y/%m/%d %H:%M')

出现报错:ValueError: time data 2017/2/29 3:44:00 PM doesn't match format specified,与题目的非法日期相同,于是删除:

am1 = am[~am['支付时间'].isin(['2017/2/29  3:44:00 PM'])]

由于只有一条非法记录,便可以使用~来反选。

  • 订单号是唯一的,仍使用字符型变量;
  • 设备ID商品地点状态提现是分类变量,化为因子变量。
  • 应付金额实际金额为数值变量,无需改变。
  • 支付时间为字符型,将其转化为时间日期型。

使用print (am.dtypes),发现订单号已经是Object类型了,不做改变,其他四项需要改变。

订单号      object
设备ID     object
应付金额    float64
实际金额    float64
商品       object
支付时间     object
地点       object
状态       object
提现       object
dtype: object

代码:

cols = ['设备ID','商品','地点','状态','提现']
for col in cols:am[col] = am[col].astype('category')
am1['支付时间'] = pd.to_datetime(am1['支付时间'], format='%Y/%m/%d %H:%M')

一个简单的循环,然后将日期变成如YYYY/MM/DD HH:MM的格式。
(PS:因为之前我修改的是am的数据类型而不是am1,且只修改了am1支付时间数据类型,导致后面代码都是在am1除了支付时间外其他数据类型还是初始状态进行的,打完代码才发现,懒得改了,了解方法就行)

结果:

print(am.info())
<class 'pandas.core.frame.DataFrame'>
Int64Index: 70679 entries, 0 to 70678
Data columns (total 9 columns):#   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         0   订单号     70679 non-null  object        1   设备ID    70679 non-null  category      2   应付金额    70679 non-null  float64       3   实际金额    70679 non-null  float64       4   商品      70679 non-null  category      5   支付时间    70679 non-null  datetime64[ns]6   地点      70679 non-null  category      7   状态      70679 non-null  category      8   提现      70679 non-null  category      
dtypes: category(5), datetime64[ns](1), float64(2), object(1)
memory usage: 3.1+ MB
None

第三题

  1. 统计不同地点的销售额,按销售额从大到小排序。

想起百度先生的教导,使用分组聚合。

代码:

am_SalesTotal = am1.groupby('地点')[['实际金额']].sum() \.sort_values(by='实际金额',ascending=False) \.rename(columns={'实际金额':'销售额'})

先将地点分组,随后计算实际金额的总和即销售额,并将其重命名为销售额,降序排列。

结果:

        销售额
地点         
E   95655.4
C   61568.1
B   53970.3
A   42542.6
D   33243.3

第四题

  1. 销售量最大的前10种商品,销售额最大的前10种商品

同样是分组聚合,只是有两个数据需要计算。这里我用了两种方法,可以分开计算,也可以合成一个表计算,由于我需要导出到Excel表,使用同一个表计算而不需要再后期合成表,显然更方便些。

代码:

#分开计算
am_SalesVolumeMax10 = am1.groupby('商品')['订单号'].count() \.reset_index(name='销售量') \.sort_values(by='销售量',ascending=False) \.head(10)am_SalesMax10 = am1.groupby('商品')['实际金额'].sum() \.reset_index(name='销售额') \.sort_values(by='销售额',ascending=False) \.head(10)#4.合并
am_SalesBothMax10 = am1.groupby('商品') \.agg(销售量 = pd.NamedAgg(column = '订单号',aggfunc = 'count'),销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum')) \.sort_values(by=['销售量','销售额'],ascending=False) \.head(10)

总体思想还是和第三题一样,先按商品分组,后计算销售量与销售额,然后降序排列,由于有两个变量,就销售量优先排序,所以销售额会有些乱序。最后显示前10位。

结果:

              销售量      销售额
商品                        
怡宝纯净水        4964  12563.5
脉动           2778  12255.0
东鹏特饮         2581   9293.0
阿萨姆奶茶        2396  10149.0
营养快线         2239   9572.5
统一冰红茶        1891   6250.0
果粒橙          1356   4737.5
30g无穷农场盐_鸡蛋  1315   4336.5
统一绿茶         1284   4231.0
王老吉(罐)       1258   4730.5

第五题

  1. 统计不同地点的销售额最多的3类商品,然后按销售额从大到小排序

代码:

am_SalesLoc = am1.groupby(['地点','商品']) \.agg(销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum')) \.sort_values(by=['地点','销售额'],ascending=[True,False]) \.reset_index() \.groupby('地点') \.head(3)

同样分组就完了,和前两题差不多,稍微要注意的地方就是有两个引索,形成了二元表,需要重设一下引索,注意重设后需要再次分组.groupby('地点'),否则只会显示总排名的前三行,而不会将每个地点的前三行显示出来。

结果:

#重设后分组:groupby('地点')地点     商品     销售额
0     A   东鹏特饮  1583.5
1     A  阿萨姆奶茶  1307.5
2     A     脉动  1272.5
274   B  怡宝纯净水  3478.5
275   B  阿萨姆奶茶  1931.0
276   B     脉动  1872.0
535   C     脉动  3447.5
536   C  怡宝纯净水  2617.5
537   C  阿萨姆奶茶  1963.5
801   D  阿萨姆奶茶  1461.5
802   D   东鹏特饮  1443.5
803   D   营养快线  1285.5
1036  E  怡宝纯净水  4619.5
1037  E     脉动  4510.5
1038  E   营养快线  3532.5#不分组:地点     商品     销售额
0  A   东鹏特饮  1583.5
1  A  阿萨姆奶茶  1307.5
2  A     脉动  1272.5

第六题

  1. 统计地点E在不同时间的销售额

    • 按月分组统计
    • 按小时分组统计
    • 按一星期的第几天分组统计
  1. 按月分组统计:

代码:

am_SalesMonth = am1.loc[am1.地点=='E'] \.groupby(['地点',am1['支付时间'] \.apply(lambda x:x.month)]) \.agg(销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum')) \.reset_index() \.set_index('地点') \.rename(columns={'支付时间':'月份'})

结果:

    月份      销售额
地点             
E    1   1656.8
E    2    938.7
E    3   1507.0
E    4   3723.1
E    5   5699.0
E    6   9899.7
E    7   3186.4
E    8   6722.5
E    9  17054.3
E   10  10208.6
E   11  21501.8
E   12  13557.5

由于只要分析地点E,那么先筛选出地点E的数据,随后将其按地点分组,实际上只剩地点E的那一组了。然后将支付时间的时间日期型转换成月份,计算销售额并将列名实际金额改成销售额,之后重设引索后,将地点设为引索(非必要),将列名支付时间重命名成月份

  1. 按小时分组统计

代码:

am_SalesHour = am1.loc[am1.地点=='E'] \.groupby(['地点',am1['支付时间'] \.apply(lambda x:x.hour)]) \.agg(销售额 = pd.NamedAgg(column = '实际金额',aggfunc = 'sum')) \.reset_index().set_index('地点') \.rename(columns={'支付时间':'时'})

和第一小问大同小异,这里就不赘述。

  1. 按一星期的第几天分组统计

代码:

am2 = am1[:]
am2['支付时间'] = am1['支付时间'].dt.weekday
am_SalesDay = am2.loc[am2.地点=='E'] \.groupby(['地点','支付时间'])['实际金额'].sum() \.reset_index(name='销售额') \.set_index('地点') \.rename(columns={'支付时间':'第几天(从星期天开始)'})

这里为什么和上面两问不同了?因为我把lambda x:x.hour改成lambda x:x.weekdaylambda x:x.dt.weekday都会报错,而且我不知道怎么修(滑稽 ,所以另辟蹊径。
新建一个am2 = am1[:],这里注意要使用am2 = am1[:]而非am2 = am1,否则修改am2时也会修改am1。随后将am2支付时间列改成星期显示。

结果:

    第几天(从星期天开始)      销售额
地点                      
E             0  15041.1
E             1  11484.0
E             2  14029.1
E             3  12497.5
E             4  12958.3
E             5  14379.1
E             6  15266.3

从星期天开始,星期天为第0天,星期一为第1天,以此类推。

END

附加:输出报表于Excel

到上面这篇练习就算完成了,但本着面向实际解决问题的精神,还是输出一个报表,并优化一下代码使之用起来更舒适。
所以开头添加了attachment1.csv文件的检测。

代码:

writer = pd.ExcelWriter('Output.xlsx')
am_SalesTotal.to_excel(writer,'各地区销售额')
am_SalesBothMax10.to_excel(writer,'商品销售量与销售额前十')
am_SalesLoc.to_excel(writer,'各地区销售额最多的三类商品')
am_SalesMonth.to_excel(writer,'地点E按月份统计销售额')
am_SalesHour.to_excel(writer,'地点E按小时统计销售额')
am_SalesDay.to_excel(writer,'地点E按星期统计销售额')
writer.save()

没有指定路径,所以Output.xlsx默认生成在工作目录下,鉴于甲方通常计算机基础不强,还是需要文件路径提示。

代码:

print('统计报告已输出至:',os.getcwd(),'目录下的Output.xlsx,请注意查看。')

最后加一个按ENTER退出,这样就方便直接双击.py文件使用了。

代码:

input('Press Enter to exit')

结果:

统计报告已输出至: C:\Users\Administrator\AppData\Local\Programs\Python\Python39 目录下的Output.xlsx,请注意查看。
Press Enter to exit

Output.xlsx如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意

由于开头使用了if,所以要注意如上单个题目的代码都是在else之下,注意缩进对齐。

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

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

相关文章

【意料之中】北大 “韦神”斩获100万奖金

来源&#xff1a;达摩院&#xff0c;编辑&#xff1a;nhyilin 仅用于学术分享&#xff0c;版权属于原作者 前一段时间&#xff0c;韦神就因为一段采访火了。这次韦神又入了达摩院奖杯名单中&#xff0c;不得不说实力真的强。 10月14日&#xff0c;2021达摩院青橙奖公布获奖名单…

《绝地求生》玩家排名预测(2万5千字~大型综合实战)

《绝地求生》玩家排名预测 1. 项目背景2. 数据集介绍3. 项目评估方式3.1 评估方式3.2 MAE(Mean Absolute Error)介绍 4. 项目实现&#xff08;数据分析RFlightGBM&#xff09;4.1 获取数据、基本数据信息查看4.2 数据基本处理4.2.1 数据缺失值处理4.2.2 特征数据规范化处理4.2.…

2019年‘泰迪杯’数据分析职业技能大赛A题——个人代码分享

目录 题目 任务 1 数据预处理与统计 任务 2 数据分析与可视化 代码展示 任务一 任务二 题目 任务 1 数据预处理与统计 任务 1.1 对数据作必要的预处理&#xff0c;在报告中列出处理步骤&#xff0c;将处理后的结 国保存为“task1_1.csv”。 任务 1.2 统计每个大类商品…

2020泰迪杯数据分析技能赛B题-新冠疫情数据分析

任务 1 数据的基本处理 任务 1.1 根据附件 1“城市疫情”中的数据统计各城市自首次通报确诊病 例后至 6 月 30 日的每日累计确诊人数、累计治愈人数和累计死亡人数&#xff0c;将结果 保存为“task1_1.csv”&#xff0c;第一行为字段名&#xff0c;按城市、日期、累计确诊人数…

【论文阅读】提升的自动作文评分通过Prompt预测和匹配

摘要 自动作文评分的目标时自动得评估文章的质量。它是自然语言处理领域中主要的教育应用之一。近来&#xff0c;预训练的技术被用于提升下游任务的性能表现。但是&#xff0c;通过预训练的编码器获取更好的特征&#xff0c;比如说prompts&#xff0c;是很重要的但是并没有被完…

数据分析师是青春饭吗?年龄影响很大吗?

数据分析师是青春饭吗&#xff1f;企业需要经验丰富的数据分析师&#xff0c;数据分析师是不是青春饭&#xff0c;反而是越老越吃香&#xff0c;做数据分析不在于年龄&#xff0c;年龄相对你的经验和技能、适应性、还有学习能力并不重要&#xff0c;数据分析工作并不是一蹴而就…

下一个韦神?广西桂林14岁初中生保送清华丘班,明年本硕博连读!

【导读】最近&#xff0c;初三学生官子钦和高一学生周睿哲被清华丘成桐数学领军计划录取&#xff0c;网友们围观后深深震撼&#xff1a;这就是天才。 14岁天才少年又一次震撼了网友&#xff01; 近日&#xff0c;清华大学丘成桐领军人才培养计划2023年第一批次入围认定结果公…

如何通过tushare获取数据并添加进度条,写入到本地Excel文件

tushare官网地址&#xff1a;Tushare数据 欢迎大家注册体验 安装tushare库 在命令提示符或终端中输入以下命令&#xff0c;可使用pip安装tushare库&#xff1a; pip install tushare 获取API token 在使用tushare库之前&#xff0c;需要先获取API token。在tushare官网注册…

U8如何修改单位名称和账套名称

1、修改单位名称和账套名称时需要使用系统管理员账号登录&#xff0c;系统管理员账号为1 2、登录之后点击系统管理-单位信息 3、找到需要修改的单位&#xff0c;双击即可修改 4、在弹出的弹窗中修改单位名称然后点击确定即可 5、账套名称的修改需点击系统管理-单位账套 6、…

悟空crm二次开发 新增人力资源HRM招聘需求、简历管理、公文管理、回款统计、回款管理、回款计划

悟空crm二次开发 新增人力资源HRM招聘需求、简历管理、公文管理、回款统计、回款管理、回款计划 public function createTeamData($param) {if (!is_array($param[user_id])) {$param[user_id] [intval($param[user_id])];}if (!is_array($param[types_id])) {$param[types_id…

【U8+】用友U8+自动审核自动生成的其他出入库单据

【问题需求】 用友U8中&#xff0c;客户希望调拨单、组装拆卸单、盘点单审核后&#xff0c;自动审核对应的其他出入库单。 【解决方法】 针对账套库执行&#xff0c;查询语句&#xff1a; select * from AccInformation where cSysID ST and ccaption like %自动审核%查询后…

SAP_过账提示科目要求一个成本会计分配

问题点&#xff1a; 解决方案&#xff1a; 在ECC系统&#xff0c;可通过KA02-更改成本要素&#xff0c;在缺省科目分配中设置默认的成本中心或内部订单 后台-控制-成本要素会计-主数据-成本要素-创建成本要素 在S4/HANA系统中&#xff0c;由于成本要素会计功能的变更&#xf…

【分享】用友U8无需API开发连接表单系统、CRM系统、数据库等第三方应用

用友U8用户使用场景&#xff1a; 每当用友U8有存货修改时&#xff0c;需要仓库管理员查询存货档案详情&#xff0c;然后在钉钉宜搭上查询对应货品详情并进行修改&#xff0c;确保两个系统的信息统一&#xff0c;便于销售人员调整营销策略。 但整个流程耗费一定的时间&#xff0…

总账科目 前台操作关事务代码及操作要点

目录 1、维护会计科目相关代码及要点 2、公司代码中的科目参数详解 1、维护会计科目相关代码及要点 事务代码&#xff1a;FSP0 在科目表中维护科目 操作例子&#xff1a;创建1001010100 现金-人民币 及40010001实收资本. 点保存后成功展示如下图 注意&#xff0c;后台必须的…

安卓--记账软件课程设计

安卓课程设计 记账软件课程设计 目录 1 引言............................................................................................................................................................. 2 1.1 背景............................................…

用友U8二次开发之登录

首先引用U8的登录DLL&#xff1a; 然后是调用U8的登录UI&#xff1a; UFSoft.U8.Framework.Login.UI.clsLogin U_Login new UFSoft.U8.Framework.Login.UI.clsLogin();U_Login.login("DP")其中DP是门户子系统的代码&#xff0c;如果不调用U8的业务系统功能&#xff…

基于android的记账APP大作业项目

基于android的记账APP 一 项目介绍 由于日常生活中,有很多月光一族的人们&#xff0c;他们往往不知不觉&#xff0c;觉得钱用的差不多了。而且最后回想起来&#xff0c;还不知道钱用到哪些地方了。所以开发此软件的目的&#xff0c;就是为了解决这样的问题&#xff0c;从软件…

【安卓开发】简单记账app功能实现开发-期末大作业个人总结

说在前面&#xff1a; 由于这一次的大作业涉及到的代码部分过于长&#xff0c;所以博客里不放相关代码&#xff1b; 工程&apk&记账app原型&素材资源链接&#xff1a;https://download.csdn.net/download/white2333/11234105 配套文档目录预览&资源链接&…

管家婆软件创建账套提示:创建账套失败

我们在安装完管家婆软件后&#xff0c;在创建账套的时&#xff0c;可能会碰到这个错误&#xff1a;创建账套失败&#xff01;这个报错要怎么去解决呢&#xff1f; 问题原因1&#xff1a;这个提示一般是管家婆软件安装目录比较深&#xff0c;就比如A文件夹里面有个A1的文件夹&am…

【T+】将查询账套更换成可以业务操作的正式版账套

【问题描述】 在使用畅捷通T软件过程中&#xff0c; 由于某些原因&#xff0c;将已使用的账套设置成【查询版】&#xff0c;并且根据软件提示&#xff0c;设置后该账套只能查询使用&#xff0c;不可以进行业务操作。 并且【查询】账套不支持反操作。 设置成查询版后&#xff0c…