版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[17]。这包括主机、端口、用户名、密码以及数据库名称。最后,创建一个游标对象,以便执行数据库操作。关键代码如下:fromflaskimportFlask,jsonify,render_template,requestimportpymysqlapp=Flask(__name__)#MySQL数据库连接配置db=pymysql.connect(host='localhost',port=3306,user='root',password='',database='dongchedi',cursorclass=pymysql.cursors.DictCursor)#创建游标对象cursor=db.cursor()这个部分的代码主要负责建立应用程序与数据库之间的连接,为后续的数据交互提供了基础。5.2数据可视化实现5.2.1可视化网页可视化网页如图5.1、图5.2所示。图5.1可视化网页图5.2汽车参数查询5.2.2不同车型的汽车数量分布情况柱状图在app.py里,通过与MySQL数据库的连接,提供一个接口“/data”,用于存放从详情参数new表中查询的不同厂商的汽车数量信息,并排除了名字为“0”以及厂商名称含有英文字母的数据,对过滤后的结果进行分组,按厂商名称进行分组,并筛选出数量大于10的数据。最后将经过处理的数据以JSON格式返回给前端,以便前端页面可以使用这些数据进行展示或者进一步处理。关键代码如下:@app.route('/data')defget_data():try:#执行SQL查询,去除厂商为零以及厂商名称中包含英文的行sql_shuliang=("SELECT厂商,COUNT(*)AS数量FROM详情参数newWHERE厂商<>'0'AND厂商NOTREGEXP'[a-zA-Z]'GROUPBY厂商HAVING数量>10;")cursor.execute(sql_shuliang)data_shuliang=cursor.fetchall()returnjsonify(data_shuliang)exceptExceptionase:returnjsonify({"error":str(e)})在index.html里,使用fetch('/data')方法向服务器发送请求获取数据,该请求指向的是“/data”路由。解析从服务器获取到响应的数据,将获取到的数据用于构建柱状图。厂商作为x轴的数据,将汽车数量作为y轴的数据。通过遍历数据,将厂商和数量分别放在xAxisData和seriesData数组中,利用echarts库初始化一个柱状图实例。然后构建柱状图的配置对象option,包括设置标题、网格、X轴、Y轴以及柱状图数据等属性。最后调用myChart.setOption(option)方法将配置应用到柱状图实例上,完成柱状图的绘制。绘制柱状图,可以直观地展示不同车型的汽车数量分布情况。关键代码如下:fetch('/data').then(response=>response.json()).then(data=>{varmyChart=echarts.init(document.getElementById('shuliangContent'));varxAxisData=[];varseriesData=[];data.shuliang.forEach(item=>{xAxisData.push(item.厂商);seriesData.push(item.数量);});option&&myChart.setOption(option);}).catch(error=>console.error('Error:',error));5.2.3官方指导价与厂商关系散点图在app.py里,通过与MySQL数据库的连接,提供一个接口“/data”,用于存放从详情参数new表中获取的官方指导价大于0小于1000000的数据以及对应的厂商。最后将经过处理的数据以JSON格式返回给前端,以便前端页面可以使用这些数据进行展示或者进一步处理。关键代码如下:@app.route('/data')defget_data():try:#执行SQL查询,获取厂商和官方指导价数据sql_changshangjiage="SELECT厂商,官方指导价FROM详情参数newWHERE官方指导价>0AND官方指导价<=1000000;"cursor.execute(sql_changshangjiage)data_changshangjiage=cursor.fetchall()returnjsonify(data_changshangjiage)exceptExceptionase:returnjsonify({"error":str(e)})在index.html里,使用fetch('/data')方法向服务器发送请求获取数据,该请求指向的是“/data”路由。解析从服务器获取到响应的数据,将获取到的数据用于构建散点图。厂商作为x轴的数据,将官方指导价作为y轴的数据。通过遍历数据,将厂商和官方指导价分别放xAxisData和seriesData数组中,利用echarts库初始化一个散点图实例。然后构建柱状图的配置对象option,包括设置标题、网格、X轴、Y轴以及散点图数据等属性。最后调用myChart.setOption(option)方法将配置应用到散点图实例上,完成散点图的绘制。绘制散点图,可以直观地展示官方指导价与厂商之间的关系。关键代码如下:fetch('/data').then(response=>{if(!response.ok){thrownewError('Networkresponsewasnotok');}returnresponse.json();}).then(data=>{varmyChart=echarts.init(document.getElementById('changshangjiageContent'));//将厂商和官方指导价分别提取出来varxAxisData=data.changshangjiage.map(item=>item.厂商);varseriesData=data.changshangjiage.map(item=>[item.厂商,Number(item.官方指导价)]);option&&myChart.setOption(option);}).catch(error=>{console.error('Errorfetchingdata:',error);});5.2.4官方指导价频数直方图在app.py里,通过与MySQL数据库的连接,提供一个接口“/data”,用于存放从详情参数new表中选取官方指导价不为0的数据。最后将经过处理的数据以JSON格式返回给前端,以便前端页面可以使用这些数据进行展示或者进一步处理。关键代码如下:@app.route('/data')defget_data():try:#执行SQL查询,获取车型的官方指导价数据sql_jiage=("SELECT官方指导价FROM详情参数newWHERE官方指导价<>'0';")cursor.execute(sql_jiage)data_jiage=cursor.fetchall()returnjsonify(data_jiage)exceptExceptionase:returnjsonify({"error":str(e)})在index.html里,使用fetch('/data')方法向服务器发送请求获取数据,该请求指向的是“/data”路由。解析从服务器获取到响应的数据,将获取到的数据用于构建直方图。在x轴上,每隔20万作为一个价格区间,y轴的数据为频数。通过循环遍历预先定义的价格区间数组“bins”,并对每个价格区间内的数据进行统计,将数量统计结果存入seriesData数组中,利用echarts库初始化一个直方图实例,然后构建直方图的配置对option,包括设置标题、网格、X轴、Y轴以及直方图数据等属性。最后调myChart.setOption(option)方法将配置应用到直方图实例上,完成直方图的绘制。绘制直方图,可以直观地展示官方指导价在不同价格区间的分布情况。关键代码如下:fetch('/data').then(response=>response.json()).then(data=>{varmyChart=echarts.init(document.getElementById('jiageContent'));varbins=[0,200000,400000,600000,800000,1000000,1200000,1400000,1600000,1800000,2000000,];//这里以20万为一个价格区间varseriesData=[];for(vari=0;i<bins.length-1;i++){varcount=0;data.jiage.forEach(item=>{if(item.官方指导价>=bins[i]&&item.官方指导价<bins[i+1]){count++;}});seriesData.push(count);}option&&myChart.setOption(option);}).catch(error=>{console.error('Errorfetchingdata:',error);});5.2.5优、缺点词云图生成优、缺点词云图,首先利用Pandas库读取Excel文件中的数据,并存储在DataFrame对象df2中。其次通过自定义函数plt_wordcloud()实现词云图的生成,该函数能够根据输入的参数(优点或缺点)提取相应数据并转换为字符串形式。随后利用WordCloud库创建词云对象,并设置相关参数,如字体、大小等,最终生成词云图并保存到指定文件夹。df2=pd.read_excel(r'C:\Users\11959\Desktop\懂车帝数据\车型优缺点.xlsx')defplt_wordcloud(s,save_path=None):adv=df2[s]advStr=''foriinadv:ifstr(i)!='nan':i=i.replace(',','')advStr+=iadvStr+='\n'wc=WordCloud(collocations=False,font_path='simhei.ttf',width=800,height=450,margin=1,max_font_size=120).generate(advStr.lower())ifsave_path:ifnotos.path.exists(save_path):os.makedirs(save_path)wc.to_file(os.path.join(save_path,'{}词云图.png'.format(s)))在index.html里,使用了ECharts库来生成词云图,并通过CSS样式设置了合适的布局,使得两张词云图在页面上呈现为上下排列的形式。每张词云图下方都有一个标题,用于说明词云图的内容。在页面渲染时,通过模板语法{{image1}}和{{image2}}将对应的词云图图片插入到页面中。关键代码如下:divclass="wordcloud-container"><divclass="wordcloud-itemwordcloud-right"><h3>优点词云图</h3><imgsrc="{{image1}}"alt="Wordcloud1"></div><divclass="wordcloud-itemwordcloud-left"><h3>缺点词云图</h3><imgsrc="{{image2}}"alt="Wordcloud2"></div></div>CSS样式:<style>.wordcloud-container{width:50%;float:left;/*横向排列*/}</style>5.2.6不同车型级别的汽车数量分布情况饼图在app.py里,通过与MySQL数据库的连接,提供一个接口“/data”,用于存放从详情参数new表中查询的不同级别的汽车数量信息,并排除了级别名称为“0”的行。最后将经过处理的数据以JSON格式返回给前端,以便前端页面可以使用这些数据进行展示或者进一步处理。关键代码如下:@app.route('/data')defget_data():try:#执行SQL查询,去除级别名称为“0”的行sql_jibie="SELECT级别,COUNT(*)AS数量FROM详情参数newWHERE级别<>'0'GROUPBY级别;"cursor.execute(sql_jibie)data_jibie=cursor.fetchall()returnjsonify(data_jibie)exceptExceptionase:returnjsonify({"error":str(e)})在index.html里,使用fetch('/data')方法向服务器发送请求获取数据,该请求指向的是“/data”路由。解析从服务器获取到响应的数据,将获取到的数据用于构建饼图。利用echarts库初始化一个饼图实例,然后构建饼图的配置对option,包括设置标题、鼠标悬浮提示、图例、饼图半径以及饼图数据等属性。最后调用myChart.setOption(option)方法将配置应用到饼图实例上,完成饼图的绘制。绘制饼图,可以直观地展示不同级别汽车数量的比例。关键代码如下:fetch('/data').then(response=>response.json()).then(data=>{varmyChart=echarts.init(document.getElementById('shuliangContent'));varxAxisData=[];varseriesData=[];data.shuliang.forEach(item=>{xAxisData.push(item.厂商);seriesData.push(item.数量);});option&&myChart.setOption(option);}).catch(error=>console.error('Error:',error));5.2.7官方指导价与纯电续航里程关系折线图在app.py里,通过与MySQL数据库的连接,提供一个接口“/data”,用于存放从详情参数new表中获取的官方指导价大于0小于1000000的数据以及对应的纯电续航里程。最后将经过处理的数据以JSON格式返回给前端,以便前端页面可以使用这些数据进行展示或者进一步处理。关键代码如下:@app.route('/data')defget_data():try:sql_dian="SELECT纯电续航里程,官方指导价FROM详情参数newWHERE官方指导价>0AND官方指导价<=1000000"cursor.execute(sql_dian)data_dian=cursor.fetchall()returnjsonify(data_dian)exceptExceptionase:returnjsonify({"error":str(e)})在index.html里,使用fetch('/data')方法向服务器发送请求获取数据,该请求指向的是“/data”路由。解析从服务器获取到响应的数据,将获取到的数据用于构建折线图。官方指导价作为x轴的数据,将纯电续航里程作为y轴的数据。通过遍历数据,将官方指导价和纯电续航里程分别放在xAxisData和seriesData数组中,利用echarts库初始化一个折线图实例。然后构建折线图的配置对象option,包括设置标题、网格、X轴、Y轴以及折线图数据等属性。最后调用myChart.setOption(option)方法将配置应用到折线图实例上,完成折线图的绘制。绘制折线图,可以直观地展示官方指导价与纯电续航里程之间的变化趋势。关键代码如下:fetch('/data').then(response=>response.json()).then(data=>{//对数据按照官方指导价进行排序data.dian.sort((a,b)=>parseFloat(a['官方指导价'])-parseFloat(b['官方指导价']));varmyChart=echarts.init(document.getElementById('dianContent'));varxAxisData=data.dian.map(item=>parseFloat(item['官方指导价']));varseriesData=data.dian.map(item=>parseFloat(item['纯电续航里程']));myChart.setOption(option);}).catch(error=>{console.error('Errorfetchingdata:',error);});5.2.8汽车参数查询在app.py里,首先,通过与MySQL数据库的连接,提供一个接口“/data”,用于存放从详情参数new表中获取的汽车参数。然后定义了两个主要函数,一个用于获取不重复的汽车厂商列表,另一个用于根据选定厂商查询车辆参数。通过两个路由来处理用户请求,一个用于显示可选择的汽车厂商列表,另一个用于处理用户提交的POST请求,并根据选定的厂商显示相应的车辆参数信息。最后,通过启动Flask应用并设置调试模式,使用户可以方便地通过网页界面选择厂商并查看车辆参数信息。关键代码如下:#获取厂商列表defget_manufacturers():try:withdb.cursor()ascursor:sql="SELECTDISTINCT厂商FROM`详情参数new`"cursor.execute(sql)result=cursor.fetchall()return[manufacturer['厂商']formanufacturerinresult]finally:pass#车辆参数查询函数defquery_car_parameters(manufacturer):try:withdb.cursor()ascursor:sql="SELECT*FROM`详情参数new`WHERE厂商=%s"cursor.execute(sql,(manufacturer,))result=cursor.fetchall()returnresultfinally:pass在index.html里,页面主体包含一个标题“汽车参数查询”和一个表单,用户可在表单中选择汽车厂商并点击“查询”按钮。使用模板引擎生成了厂商选项,如果选项匹配用户选择的厂商,则设置为选中状态。如果存在车辆参数,则以表格形式呈现,包括车型、上市时间、官方指导价等参数。JavaScript部分为“图”和“表”按钮分别绑定了点击事件,点击“图”按钮将跳转至网站根目录,点击“表”按钮则通过创建表单并提交来执行查询操作。关键代码如下:<script>document.getElementById('tuButton').addEventListener('click',function(){window.location.href='/';});document.getElementById('biaoButton').addEventListener('click',function(){//创建一个表单元素varform=document.createElement('form');form.method='POST';//使用POST方法form.action='/get_car_parameters';//目标URL//提交表单document.body.appendChild(form);form.submit();//window.location.href='/get_car_parameters';//跳转到canshu.html页面});</script>5.3数据可视化分析5.3.1新能源汽车数量分析通过对不同车型的汽车数量分布情况,如图5.1所示,可以得出汽车数量最高的前五名:比亚迪150辆、吉利远程102辆、上汽通用五菱91辆、长安轻型车90辆、上汽大通77辆。可以得出以下分析:市场份额分布不均:比亚迪、吉利远程、上汽通用五菱、长安轻型车、上汽大通等厂商的新能源汽车数量较多,表明它们在市场中拥有较大的份额和竞争优势。比亚迪以150辆的数量领先其他厂商,显示出其在新能源汽车领域的市场地位和竞争力。新能源汽车市场竞争激烈:数量排名前十的厂商之间的差距较大,但整体来看,市场竞争激烈,各厂商都在争夺市场份额。部分厂商数量较少:也有一些厂商的新能源汽车数量较少,这可能是因为其产品线较窄或市场影响力较小。图5.1不同车型的汽车数量分布情况5.3.2官方指导价与厂商关系分析通过对官方指导价与厂商关系散点图,如图5.2所示,可以看到官方指导价与厂商关系分布不均,基本上每个厂商都占据着低端市场,部分厂商占据着中低端市场,少部分厂商中高端、低端市场都有涉及。可以得出以下分析:市场竞争和品牌定位:不同价格区间内的车辆数量分布也可以反映出市场中各个品牌的竞争态势和定位。一些厂商可能更适合在低价位市场竞争,而另一些厂商则更适合在高价位市场竞争。根据市场需求和竞争态势,厂商可以调整产品定位和营销策略。图5.2官方指导价与厂商关系散点图5.3.3官方指导价分析通过观察官方指导价频数直方图,如图5.3所示,可以看出不同价格区间的车数量呈现下降趋势,其中0-20万的车数最多,有1848辆;其次是20-40万的车,有762辆;160-180万的车最少,只有1辆。可以得出以下分析:市场需求趋势:数据显示,0-20万之间的车辆数量最多,说明市场对于低价位车辆的需求较高。随着价格的增加,车辆数量逐渐减少,这可能反映了高价位车辆的市场需求较低。因此,可以看出市场需求在低价位车辆方面比较活跃。市场细分和产品定位:可以帮助企业进行市场细分和产品定位。通过了解不同价格区间的车辆数量分布情况,企业可以针对不同的消费者群体推出具有不同价格定位的产品,并制定相应的营销策略。图5.3官方指导价频数直方图5.3.4车型优缺点分析词云是一种由各种词条构成的图案,它有着类似云朵的形状和多彩的色彩。词条在词云中所占据的空间大小反映了它们的出现频率,从而通过视觉效果更直观地展示信息REF_Ref160798311\r\h[1]。通过对优点词云图和缺点词云图,如图5.4、图5.5所示,很容易就能看出新能源车具有整体空间出色、动力十足、配置丰富、操控出色等优点以及续航表现较差、后备厢空间小、内饰材质较差、隔音差等缺点。根据词云图的结果,我们可以更清晰地了解车型的优缺点,为消费者提供更直观的参考。图5.4优点词云图图5.5缺点词云图5.3.5车型级别分析通过对不同级别的汽车数量分布情况,如图5.6所示,可以看出世界上新能源汽车发展迅速,已经有二十多种不同的级别。其中,紧凑型SUV占11.72%,占比最高;其次是微面和微卡分别占11.43%、10.01%,占据第二、第三;房车占比最低,仅为0.03%。不同级别车型的数量分布情况也反映了市场的细分情况,例如,跑车、迷你皮卡等高端或者特殊用途的车型数量较少,而紧凑型SUV、微面等通用型车型数量较多。各种级别的新能源汽车的出现表明了汽车制造技术的不断进步和创新以及消费者对于不同类型和级别的汽车有不同的偏好和需求,新能源汽车市场的需求非常多样化。图5.6不同车型级别的汽车数量分布情况5.3.6纯电续航里程分析通过对官方指导价与纯电续航里程关系折线图,如图5.7所示,可以看出官方指导价随着纯电续航里程的增加而增加,不过也有些车型的官方指导价相对较高但续航里程却较低。可以得出以下分析:官方指导价和纯电续航里程之间的关系:一般情况下,官方指导价随着纯电续航里程的增加而增加。这是符合直觉的,因为更高的续航里程通常意味着更高的电池容量或更高效的动力系统,从而增加了成本。但也有例外,例如有些车型的官方指导价相对较高,但续航里程却较低,这可能与其他因素如车型、品牌等有关。价格区间:官方指导价在0到100万之间,这是一个较广的价格区间,显示了新能源市场的多样性和不同档次的车型。一些车型具有相似的官方指导价但续航里程却不同,这反映了不同车型之间的功能和配置差异。纯电续航里程的分布:纯电续航里程主要集中在100到300公里之间,这是目前电动车市场的主流续航水平。有一些车型的续航里程低于100公里或超过300公里,这说明不一样的厂商不一样的车型有着不同的市场定位和用户需求。价格与续航里程的关系:通过观察数据,可以看出官方指导价和纯电续航里程之间的关系不是线性的,而是呈现出一定的复杂性和离散性,可能是受到各种因素的影响,如品牌、车型、配置等。图5.7官方指导价与纯电续航里程关系折线图5.4本章小结在本章中,我们对新能源汽车数量、官方指导价与厂商关系、纯电续航里程等进行了详细的分析。首先,我们通过分析不同车型的汽车数量分布情况,了解了市场份额分布不均、市场竞争激烈以及部分厂商数量较少等情况。接着,我们对官方指导价与厂商关系进行了分析,揭示了不同价格区间内的车辆数量分布,以及市场竞争和品牌定位的关系。此外,我们还对新能源汽车的官方指导价、车型优缺点、车型级别以及纯电续航里程进行了分析,并通过数据可视化工具呈现了相关结果。最后,我们介绍了用户评论量分析的重要性,并进行了相关的介绍。通过本章的分析,我们可以更加全面地了解新能源汽车市场的情况,并为相关决策提供参考依据。
6总结与展望6.1总结新能源汽车领域已成为现代汽车工业的关键发展领域,受到全球范围内政府政策和环保意识的推动,市场逐渐成熟。新能源汽车已经成为降低尾气排放、提高能源利用率的重要选择。本文旨在通过对懂车帝网站的数据爬取和可视化分析,深入探讨新能源汽车市场的现状和特点,为相关决策提供数据支持和参考依据。首先,在数据爬取方面,本文使用Python编写爬虫脚本,通过访问懂车帝网站获取了车型简述页面的信息以及车型的参数数据。借助Selenium库模拟浏览器操作,实现了对懂车帝网站的数据获取。通过详细的介绍和代码演示,展示了数据获取的过程和关键代码。其次,在数据处理方面,本文对获取的数据进行了预处理和导入操作。对于数据缺失值,采用了fillna()方法填充为0,并使用drop_duplicates()方法去除了重复值,以确保数据质量。针对特定列的处理,例如将官方指导价转换为浮点型数据,进一步完善了数据的准确性和可用性。同时,通过NavicatPremium12工具将处理后的数据导入到MySQL数据库中,为后续的数据分析和挖掘提供了便利。在数据可视化分析方面,本文通过对新能源汽车数量、官方指导价与厂商关系、纯电续航里程等进行了详细分析。通过图表展示了不同车型的汽车数量分布情况、官方指导价与厂商关系的散点图、官方指导价频数直方图、车型优缺点词云图、车型级别分布图以及官方指导价与纯电续航里程关系折线图等。通过对数据的可视化呈现,深入分析了市场份额分布、市场竞争激烈程度、不同价格区间的市场需求趋势、车型级别分布情况以及官方指导价与纯电续航里程之间的关系,为新能源汽车市场的发展趋势提供了重要参考。本文通过数据爬取、数据处理和可视化分析,深入剖析了新能源汽车市场的现状和特点,为相关决策提供了数据支持和参考依据。随着新能源汽车市场的不断发展和完善,本文提出的方法和分析结果具有一定的实践意义和指导价值,对于促进新能源汽车产业的健康发展和推动绿色出行具有积极意义。6.2展望由于时间紧任务重,再加上本人的技术能力以及掌握的专业知识还有很大的进步空间,所以只能写出以上内容。当然还有很多不足之处,比如:1、可以拓展数据来源和研究范围。本论文主要针对“懂车帝”网站进行数据爬取和分析,但新能源汽车市场涉及的数据和信息远不止于此。未来可以考虑拓展数据来源,如其他汽车网站、厂商官网等,同时扩大研究范围,包括不同类型的新能源汽车、不同地区的市场情况等。2、可以加强对新能源汽车市场的趋势和特点的分析。通过深入挖掘和分析大量的市场数据和用户评论,可以更好地把握新能源汽车市场的发展趋势和消费者需求,为企业制定营销策略和产品定位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年北京市东城区四年级道德与法治上册期中考试试卷及答案
- 2025年湘教版高一化学上册月考考试试题及答案
- 公司章程与股东协议书
- 悦诗风吟展示设计
- 船用低碳及无碳燃料发动机燃烧特性
- 配方法第一课时
- 团总支自我介绍
- 缩写课文的方法
- 受托代理资产相关
- 急诊剖宫产流程
- 初中地理教师培训课件粤人版(2024)初中地理教材简述
- 办公室管理-形考任务四(第五章)-国开-参考资料
- 乡村旅游规划方案模板
- 液压支架大修电液控和集中控制系统技术协议2020518最终1
- TCANSI 133-2024 液化天然气(LNG)燃料动力船舶槽车气试加注作业安全要求
- 2024年河北省中等职业【对口】升学中职【英语】真题(原卷版+解析版)
- 2024 年一级注册结构工程师《专业基础考试》真题及答案解析【完整版】
- 高频变压器的制作工艺
- 灭火器具与消防设备使用培训
- 2025抖音培训合同协议书
- 高铁专业职业生涯规划
评论
0/150
提交评论