基于Python的新能源汽車市場趨勢與消費者行為分析_第1頁
基于Python的新能源汽車市場趨勢與消費者行為分析_第2頁
基于Python的新能源汽車市場趨勢與消費者行為分析_第3頁
基于Python的新能源汽車市場趨勢與消費者行為分析_第4頁
基于Python的新能源汽車市場趨勢與消費者行為分析_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

I基于Python的新能源汽車市場趨勢與消費者行為分析1引言1.1研究背景隨著全球環(huán)境保護意識的日益增強和科技的飛速發(fā)展,新能源汽車作為一種環(huán)保、節(jié)能、高效的交通工具,正逐步成為未來出行的重要選擇。在全球氣候變化的嚴峻挑戰(zhàn)下,各國政府紛紛出臺了一系列鼓勵新能源汽車發(fā)展的政策措施,推動了新能源汽車市場的快速增長REF_Ref22201\w\h[1]。然而,隨著市場競爭的加劇和消費者需求的多樣化,對新能源汽車市場數(shù)據(jù)的深入分析變得尤為重要。本課題的研究,正是基于這一現(xiàn)實背景,旨在通過多維度數(shù)據(jù)的收集與分析,為新能源汽車行業(yè)的戰(zhàn)略規(guī)劃與市場洞察提供有力的數(shù)據(jù)支持,具有重要的現(xiàn)實意義。1.2研究意義從開展市場銷量分析的角度看,本課題開展對新能源汽車銷量的數(shù)據(jù)抓取與分析,可為企業(yè)提供銷量變化趨向,助力企業(yè)知曉自身在市場里的地位以及競爭對手的狀況,這些數(shù)據(jù)能協(xié)助企業(yè)制定合理的生產(chǎn)規(guī)劃,維持供應鏈的穩(wěn)定運轉(zhuǎn),幫助企業(yè)擬定差異化的市場策略提供數(shù)據(jù)做支持。借助對各品牌、各車型銷量的分析,企業(yè)可弄清楚哪些車型更受消費者追捧,哪些細分市場展現(xiàn)出更大的增長潛力,于是調(diào)整產(chǎn)品的結構組成,優(yōu)化資源分配,銷量數(shù)據(jù)還可反映市場需求的變動情形,助力企業(yè)預估未來的市場走向,為企業(yè)的長期發(fā)展規(guī)劃供給科學佐證。

價格分析在新能源汽車市場競爭里同樣是不可或缺的部分,新能源汽車價格的起伏,不僅是受到原材料成本、生產(chǎn)成本等因素作用,還與市場競爭的格局、消費者需求等緊密相關聯(lián),本課題借助對新能源汽車價格的數(shù)據(jù)抓取和分析,為企業(yè)提供價格區(qū)間與價格變化走勢,助力企業(yè)制定恰當?shù)亩▋r策略。企業(yè)可開展對競爭對手價格策略的分析,弄清楚市場價格水平,防止價格戰(zhàn)打響;依據(jù)消費者的購買意愿與支付水平,擬定差異化價格方案,順應不同消費群體的需求,價格數(shù)據(jù)還可展現(xiàn)市場供需關系的變動情形,為企業(yè)提供市場調(diào)節(jié)的參考材料,助力企業(yè)應對市場起伏,保持競爭實力。

新能源汽車市場洞察中,用戶評價分析是必不可少的一環(huán),用戶評價是衡量新能源車質(zhì)量與性能的關鍵指標,可直接展現(xiàn)消費者的使用體驗與滿意水平,本課題采用爬取和分析新能源汽車用戶評價數(shù)據(jù)的方式,可為企業(yè)提供大量的用戶反饋及改進提議,助力企業(yè)明確消費者的真實需求與期許,企業(yè)可借助剖析用戶對新能源汽車續(xù)航里程、充電速度、駕駛體驗等方面的評價,找出產(chǎn)品存在的差錯和缺漏,以此實施有針對性的改進與優(yōu)化;用戶評價數(shù)據(jù)還能輔助企業(yè)塑造用戶畫像,做到精準營銷及個性服務,推動客戶滿意度和忠誠度提高REF_Ref22527\r\h[2]。

本課題研究有著不可忽視的現(xiàn)實意義,開展對新能源汽車市場銷量、價格、用戶評價等多維度數(shù)據(jù)的深入分析,可為企業(yè)提供精準的市場審視和戰(zhàn)略支持,支持企業(yè)應對市場競爭和消費者需求的挑戰(zhàn)局面,實現(xiàn)可持續(xù)的穩(wěn)步發(fā)展,本課題的研究成果同樣可為政府制定新能源汽車產(chǎn)業(yè)政策、助力新能源汽車行業(yè)穩(wěn)定發(fā)展提供有益借鑒,本課題的研究具備廣泛的現(xiàn)實意義與應用潛力。1.3國內(nèi)外研究現(xiàn)狀1.3.1國內(nèi)研究現(xiàn)狀國內(nèi)著眼于新能源汽車市場的研究呈現(xiàn)出蓬勃發(fā)展的形勢,尤其是在數(shù)據(jù)驅(qū)動的分析板塊,眾多學者及科研機構陸續(xù)采用Python這一強大的編程語言,結合上網(wǎng)絡爬蟲技術,深度挖掘新能源汽車市場的數(shù)據(jù)富礦,他們不僅留意傳統(tǒng)的銷量、價格等核心數(shù)據(jù),還大量搜集用戶評價、社交媒體討論、專業(yè)評測報告等多維度資訊,以全面刻畫新能源汽車市場的現(xiàn)實面貌。

一些學者采用Python爬蟲技術,從懂車帝、汽車之家等國內(nèi)大家熟知的汽車垂直網(wǎng)站,依舊從各大電商平臺、社交媒體平臺抓取新能源汽車的明細數(shù)據(jù),這些數(shù)據(jù)有包含但不限于各車型的銷量走勢狀態(tài)、價格的區(qū)間范圍界定、用戶口碑的評分情況呈現(xiàn)、專業(yè)評測的最終結果呈現(xiàn)等,借助對這些數(shù)據(jù)的清理、整合與深度探究,研究者們成功剖析出新能源汽車市場的最新趨勢,例如哪些車型更受消費者偏愛、哪些技術特征成為市場關注熱點等。

國內(nèi)研究依舊看重運用數(shù)據(jù)挖掘技術,對新能源汽車用戶的購買行為、偏好的相關變化做深入分析,采用構建用戶畫像、進行情感剖析等手段,研究者能更精準地把握消費者心理訴求和市場動態(tài),為新能源汽車企業(yè)開展市場策略制定提供有力的數(shù)據(jù)支持。某些研究采用分析用戶評價數(shù)據(jù)的方式,發(fā)現(xiàn)消費者對新能源汽車的續(xù)航情況、充電便利性、智能化配置等方面關注度很高,這為新能源汽車企業(yè)優(yōu)化產(chǎn)品設計、改善用戶體驗提供了有價值的參考REF_Ref23376\r\h[3]。1.3.2國外研究現(xiàn)狀國外在新能源汽車數(shù)據(jù)研究范疇同樣取得明顯進展,且更加看重大數(shù)據(jù)和人工智能技術的運用,有學者利用先進的機器學習算法跟深度學習模型,對新能源汽車市場海量數(shù)據(jù)做高效的處理與分析,他們不光關注銷量預測這個傳統(tǒng)區(qū)域,還著力運用數(shù)據(jù)挖掘與模式識別技術,找出新能源汽車市場潛在的規(guī)律及未來趨向。

在銷量預測這個范疇,國外專家借助構建復雜的預測模型,通盤考慮歷史銷量數(shù)據(jù)、市場政策、消費者行為變化等諸多方面,達成了對新能源汽車銷量的高準確度預測REF_Ref23500\r\h[4],這些預測結果既為企業(yè)的生產(chǎn)計劃提供了科學依據(jù),也為政府部門開展政策方面的制定提供了有力支撐。

國外研究同樣看重利用社交媒體和在線評論數(shù)據(jù),對新能源汽車的品牌形象及用戶滿意度做深入分析,借助監(jiān)測與分析消費者于社交媒體平臺上的討論話語、情感傾向以及在線評論里的關鍵詞、評分等資訊,研究者能夠更直觀地知曉消費者對新能源汽車品牌的認知度與滿意度。這些信息在新能源汽車企業(yè)的品牌建設以及客戶服務優(yōu)化方面意義非凡,有研究表明,消費者對新能源汽車的環(huán)保性能、創(chuàng)新設計等方面高度贊賞,但同時也針對續(xù)航里程、充電設施等方面提出了一些改進的意見,這些發(fā)現(xiàn)為企業(yè)改進產(chǎn)品及服務提供了有意義的參考。

兼顧國內(nèi)外研究現(xiàn)狀,跟著全球環(huán)保意識增進和可持續(xù)發(fā)展戰(zhàn)略實施,新能源汽車市場進入快速增長階段,帶動了汽車產(chǎn)業(yè)的轉(zhuǎn)型以及能源結構的優(yōu)化,處于這樣一個背景當中,研究新能源汽車市場的趨勢以及消費者行為意義重大,原因如下:依靠Python技術與數(shù)據(jù)挖掘舉措,可快速有效地獲取市場數(shù)據(jù),為企業(yè)確立科學市場策略提供洞察點;全面了解消費者行為有利于企業(yè)調(diào)整產(chǎn)品設計、增進用戶體驗;研究能給政府部門制定相關政策提供科學依據(jù),助力市場健康成長;它還可找出產(chǎn)業(yè)的內(nèi)在規(guī)律,推動產(chǎn)業(yè)進階升級;研究新能源汽車市場可促進全球可持續(xù)發(fā)展目標的順利實現(xiàn),該課題在理論和實踐方面意義重大。1.4研究內(nèi)容本文以新能源汽車為研究對象,懂車帝為數(shù)據(jù)抓取平臺,通過對新能源汽車的銷量、詳情、評論和評價信息頁面的數(shù)據(jù)抓取為數(shù)據(jù)分析做準備;利用爬蟲技術、頁面解析技術、分詞技術等做數(shù)據(jù)分析;利用數(shù)據(jù)可視化使數(shù)據(jù)更加直觀展示分析結果;最后利用回歸分析、聚類分析對獲取的數(shù)據(jù)信息進行挖掘,最終得出通過銷量反映的關于新能源汽車的市場趨勢變化和消費者行為的結論與建議。2分析技術與分析方法2.1相關概念2.1.1網(wǎng)絡爬蟲(1)爬蟲概念網(wǎng)絡自動抓取爬蟲技術,作為一種以自動化方式進行的信息檢索手段,其核心之處是遞歸地去遍歷網(wǎng)絡資源,高速提取互聯(lián)網(wǎng)上分散的有價值信息,想到互聯(lián)網(wǎng)存有海量的數(shù)據(jù)資源,人工手動收集既耗時又耗力,而且效率不高,網(wǎng)絡爬蟲技術就此誕生,目的在于自動抓取并下載這些有意義的信息內(nèi)容。

互聯(lián)網(wǎng)當中的各個頁面并非孤立,而是用復雜的超鏈接結構彼此連系,搭建起一個龐大的信息網(wǎng)絡,面對這樣的背景情形,網(wǎng)絡爬蟲程序恰似虛擬世界中的“蜘蛛”,跟隨超鏈接的指引,在網(wǎng)絡里來回游走,精準查找并下載所需資料,理論上擁有遍歷并收集互聯(lián)網(wǎng)上絕大多數(shù)數(shù)據(jù)的潛在能力。

探求其起源,網(wǎng)絡爬蟲技術誕生于搜索引擎的開發(fā)與應用,是搭建搜索引擎系統(tǒng)的基礎,隨著時間默默推移,該技術已跨越其原始的應用范疇,成為在多個領域普遍應用的通用技術,在學術論文中探究網(wǎng)絡爬蟲技術,不僅對深入掌握互聯(lián)網(wǎng)信息的自動收集與處理機制有好處,同時為信息檢索、數(shù)據(jù)挖掘、大數(shù)據(jù)分析等領域的研究和實踐提供了極為重要的技術支持。(2)HTTP協(xié)議HTTP協(xié)議,即超文本傳輸協(xié)議,是一種在互聯(lián)網(wǎng)上應用層中用于傳輸超文本(如網(wǎng)頁、圖片、視頻等)數(shù)據(jù)的規(guī)則與標準。它規(guī)定了客戶端(如Web瀏覽器)與服務器之間如何建立連接、發(fā)送請求、接收響應以及關閉連接的過程。HTTP協(xié)議的主要作用是促進網(wǎng)絡上信息的無障礙交流與共享,使得用戶能夠輕松地通過瀏覽器訪問和瀏覽網(wǎng)頁,同時也為Web服務提供了數(shù)據(jù)交換和動態(tài)內(nèi)容生成的基礎。(3)Web前端技術Web前端技術乃是用來構建與呈現(xiàn)網(wǎng)頁用戶界面的技術集合,主要囊括HTML、CSS、JavaScript以及AJAX,HTML(超文本標記語言)可對網(wǎng)頁的結構和內(nèi)容進行定義;CSS(層疊樣式表)掌管網(wǎng)頁的布局、顏色、字體這類視覺樣式;JavaScript可實現(xiàn)網(wǎng)頁的動態(tài)交互特性,諸如表單核對、動畫特效等,AJAX(異步JavaScript和XML)技術讓網(wǎng)頁無需重新加載整個頁面,跟服務器進行數(shù)據(jù)交換,然后更新部分網(wǎng)頁內(nèi)容,由此增強了用戶體驗。2.1.2獨熱編碼獨熱編碼REF_Ref30632\r\h[5](One-HotEncoding)為一種常用的數(shù)據(jù)預處理手段,主要是把離散變量(分類特征)轉(zhuǎn)換成適合機器學習算法處理的樣子,它通過為各個分類特征的每個可能值創(chuàng)建出一個新的二進制特征,其中任何給定時間里僅有一個特征被激活,而別的所有特征皆標記為0,該編碼方式能清楚呈現(xiàn)分類特征相互的不同,且不會引入任何數(shù)值方面的偏序關系,進而提高了算法針對離散特征的處理能力。2.1.3中文分詞中文分詞REF_Ref31439\w\h[6]是將連續(xù)的中文文本切分成一個個獨立的詞的過程,由于中文與英文等語言在詞界上的顯著差異,中文分詞成為了一項具有挑戰(zhàn)性的任務。與英文單詞間明確的空格分隔不同,中文詞與詞之間沒有明顯的界限,且存在大量的多義性和歧義性現(xiàn)象,這增加了分詞的難度。為了準確地進行中文分詞,通常需要結合詞典匹配、統(tǒng)計方法和上下文信息等多種技術手段。2.1.4數(shù)據(jù)分析數(shù)據(jù)分析是一個系統(tǒng)性過程,它運用統(tǒng)計分析方法,對收集來的數(shù)據(jù)進行整理、加工、理解和提煉,旨在最大化地開發(fā)數(shù)據(jù)的功能并發(fā)揮其作用。這一過程不僅涵蓋了描述性統(tǒng)計分析、探索性數(shù)據(jù)分析以及驗證性數(shù)據(jù)分析等多個層面,而且在商業(yè)決策、運營優(yōu)化、市場洞察、創(chuàng)新推動、業(yè)績評估及社會發(fā)展等多個領域都具有廣泛的應用和深遠的意義。通過數(shù)據(jù)分析,企業(yè)可以更好地了解市場趨勢、把握用戶需求、優(yōu)化運營流程、預測和控制成本,從而制定出更有效的商業(yè)策略;同時,政府和社會組織也可以利用數(shù)據(jù)分析來制定更符合社會需求的政策和措施,推動社會進步和發(fā)展。2.2分析技術2.2.1數(shù)據(jù)可視化技術可視化是將數(shù)據(jù)、信息或知識以圖形、圖像等直觀形式呈現(xiàn),以助力用戶更高效地理解、分析和洞察數(shù)據(jù)內(nèi)涵。技術路線多樣,涵蓋傳統(tǒng)的統(tǒng)計圖表可視化,如柱狀圖、折線圖等;地理信息可視化,用于呈現(xiàn)地理空間數(shù)據(jù);還有新興的交互可視化技術REF_Ref8167\w\h[7],支持用戶與可視化結果互動以深入探索數(shù)據(jù)。(1)Python數(shù)據(jù)可視化:Pandas、MatplotlibPandas作為Python數(shù)據(jù)分析的核心庫,不僅精通數(shù)據(jù)的加載與轉(zhuǎn)換,更內(nèi)置了強大的數(shù)據(jù)可視化功能,其簡潔直觀的繪圖API能夠輕松實現(xiàn)包括柱狀圖、折線圖、面積圖、直方圖、餅圖、散點圖在內(nèi)的多種單變量和雙變量圖表的可視化。這些功能實質(zhì)上是對Python中最基礎的作圖庫Matplotlib的封裝,使用戶在享受Matplotlib提供的全面繪圖函數(shù)、靜態(tài)/動態(tài)/交互式圖表生成、自定義美化參數(shù)、子圖創(chuàng)建與布局調(diào)整以及圖表保存與導出等豐富功能的同時,還能體驗到更加便捷的操作體驗。(2)BI商業(yè)智能數(shù)據(jù)可視化:Tableu、FineBI、PowerBITableau、FineBI和PowerBI這三款商業(yè)智能工具獲廣泛贊譽,Tableau憑借卓越的可視化和數(shù)據(jù)分析功能出名,具備多種樣式的圖表類型,支持多圖表、組件的聯(lián)動呈現(xiàn),界面友善易上手,無需編寫代碼便可創(chuàng)建漂亮的報表和儀表板。FineBI就是一款企業(yè)級商業(yè)智能工具,不僅給出全面的數(shù)據(jù)分析、報表制作和數(shù)據(jù)挖掘方面的功能,并且其可視化所展現(xiàn)的效果好,適合中小企業(yè)跟個人學習采用,而微軟推出了PowerBI,目的是輔助用戶輕易地從各種數(shù)據(jù)源中提取、轉(zhuǎn)換并把數(shù)據(jù)可視化,具備直觀的操作界面與強大的度量值能力,還能跟微軟的其余產(chǎn)品達成無縫契合,并且存在龐大用戶社區(qū),為大家提供豐富的教程與支持資源。(3)Web數(shù)據(jù)可視化技術:PythonWeb、Echarts采用PythonWeb技術,開發(fā)者可構建出帶有交互性的數(shù)據(jù)可視化Web應用,這些應用可實時接納用戶輸入的數(shù)據(jù),還能動態(tài)生成具備縮放、平移、篩選等多樣交互功能的圖表,采用百度開源的純JavaScript圖表庫ECharts,可以輕松制作出像折線圖、柱狀圖、散點圖、餅圖等多種樣式的精美圖表。而Python的pyecharts庫為開發(fā)者提供了在Python環(huán)境里直接調(diào)用ECharts的便利途徑,實現(xiàn)了Python與ECharts的無間整合,極大提高了數(shù)據(jù)可視化開發(fā)的效率及便利性,不管是企業(yè)內(nèi)部的數(shù)據(jù)平臺,也或是在線數(shù)據(jù)分析工具等涉及在線展示和分析數(shù)據(jù)的場景,這種把PythonWeb與ECharts聯(lián)合的數(shù)據(jù)可視化方案能夠給予強大后盾。2.2.2Python及開發(fā)平臺(1)python版本1994年,Python推出了其首個版本1.0,但該版本目前已停止維護和更新,并退出市場使用。隨后,在2000年和2008年,Python分別發(fā)布了2.0和3.0版本,這兩個版本至今仍在使用中,盡管眾多企業(yè)正逐步向Python3版本過渡。值得注意的是,Python2與Python3版本間并不兼容,這是由于Python的創(chuàng)始人吉多·范羅蘇姆認為,為保持與Python2的兼容性,Python3將需重新設計眾多特性,甚至可能犧牲某些功能,因此他決定摒棄老版本,全新打造Python3。采用Python3開展數(shù)據(jù)分析存在多方面的有利條件,涵蓋容易學習、功能強勁、多樣的數(shù)據(jù)處理庫與工具、出色的可視化能力、健全的生態(tài)系統(tǒng)、高績效和可擴展性以及普遍的行業(yè)應用等,這些優(yōu)勢令Python3成為數(shù)據(jù)分析領域的熱門挑選之一。(2)IDE工具PyCharm作為專門針對Python開發(fā)人員設計的IDE工具,具備強大的功能特性與靈活的配置選項,其具備的智能代碼補全、錯誤檢查、調(diào)試器等功能能大幅提升開發(fā)效率和質(zhì)量;對多種操作系統(tǒng)和插件擴展機制的支持讓它更加靈活易用2.2.3爬蟲技術Urllib:Python自身內(nèi)置的HTTP請求庫,能視為處理URL的組件匯總,可發(fā)送請求且接收服務器的反饋,屬于Python爬蟲的基礎工具范疇。

Requests:借助urllib編寫的阻塞式HTTP請求庫,把HTTP請求過程簡化了,讓發(fā)送請求、接收響應變得更為直觀便利。

Scrapy:一個功能強大的Python爬蟲框架,能一站式應對爬蟲任務中的請求發(fā)送、響應接收、內(nèi)容解析和數(shù)據(jù)保存等相關問題,切實提高了爬蟲開發(fā)工作的效率。Selenium:主要用于Web應用程序的自動化測試,但也可以用于制作簡易的網(wǎng)絡爬蟲REF_Ref8226\w\h[8]。它直接運行在瀏覽器中,通過模擬用戶操作來抓取網(wǎng)頁信息,特別適用于需要處理JavaScript渲染或驗證碼的網(wǎng)頁。2.2.4頁面解析技術正則表達式:一款實用的文本處理工具,用來刻畫字符串樣式,能在文本當中開展復雜的搜索、匹配、替換及提取事宜,適合快速定位與處理文本內(nèi)容。

PyQuery:采用jQuery的語法,具備便捷的HTML解析與操作功能,易用性和解析速度都很好,適合熟悉jQuery語法的開發(fā)者去進行網(wǎng)頁解析。

BeautifulSoup:一個大家熟知的Python庫,可從HTML和XML文件中提取數(shù)據(jù),可以以寬容的方式解析存在不規(guī)范情況的HTML代碼,順暢地提取網(wǎng)頁中的文本、標簽以及屬性,能應對各類復雜的網(wǎng)頁結構。XPath:一種用于在XML文檔中定位和選擇元素的查詢語言,也常用于HTML文檔的解析,通過路徑表達式精確定位所需的節(jié)點或節(jié)點集合,適用于結構化數(shù)據(jù)的提取。2.2.5數(shù)據(jù)分析技術Pandas是Python中一個非常流行的數(shù)據(jù)分析和處理庫,提供了高性能、易用的數(shù)據(jù)結構和數(shù)據(jù)分析工具,如Series、DataFrame等,能夠高效地完成數(shù)據(jù)讀取/寫入、清洗/預處理、選擇和過濾、分組和聚合、合并和連接、時間序列分析以及數(shù)據(jù)可視化等任務,是數(shù)據(jù)分析和處理的必備工具。2.2.6動態(tài)頁面處理技術Selenium是針對Web應用程序測試的一個自動化工具,它能直接在瀏覽器中去運行,模擬用戶于瀏覽器中的操作舉動,諸如點擊、輸入、滾動之類的操作,Selenium支持當前流行的所有主流瀏覽器,而且可以接收指令,讓瀏覽器自動去加載界面,采集需要的數(shù)據(jù),當處理動態(tài)頁面的時候,Selenium可等待頁面元素加載結束,并實施相應的舉動,進而把由JavaScript等腳本動態(tài)生成的內(nèi)容抓取到。(1)反爬處理在網(wǎng)絡數(shù)據(jù)獲取中,反爬與反反爬是攻防博弈的兩方。常見反爬技術REF_Ref8321\w\h[9]路線包括設置驗證碼,增加機器識別難度;采用IP封禁,阻止頻繁請求的IP;運用加密數(shù)據(jù),使數(shù)據(jù)難以解析。對應的反反爬技術有使用OCR技術識別驗證碼、設置請求頭、設置訪問間隔、搭建代理IP池繞過IP封禁,分析加密算法對數(shù)據(jù)進行解密處理。(2)設置請求頭(Headers)User-Agent作為HTTP協(xié)議里的一部分,用以向服務器告知客戶端(諸如瀏覽器)的類型,采用設置不同的User-Agent,能夠?qū)Σ煌臑g覽器及設備進行模擬,以此降低爬蟲被識別的幾率。

可借助編程的手段(像Python的requests庫)設置請求頭里的User-Agent字段,也能借助fake_useragent庫創(chuàng)建隨機請求頭。

Cookies是服務器在客戶端存儲數(shù)據(jù)所采用的一種方式,一般用于維持會話狀態(tài)和對用戶身份進行驗證,爬蟲訪問部分網(wǎng)站的時候,要攜帶無誤的Cookies才可訪問目標內(nèi)容。(3)設定訪問間隔為防止爬蟲給服務器造成過大的壓力,諸多網(wǎng)站會設置訪問的間隔時長,若有一個IP地址在短時間內(nèi)發(fā)出了太多請求,就會被判定為非平常的用戶請求,隨即被限制通行。

編寫爬蟲腳本的時候,可以把訪問的時間間隔設置好,像借助time.sleep()函數(shù)在每次請求的間歇暫停一段時間。2.2.7數(shù)據(jù)存儲技術PyMySQL為Python編寫的MySQL數(shù)據(jù)庫連接庫,依仗完全用Python達成、兼容性好、操作方便等特性,在各類Python項目當中廣泛采納,它支持跟不同版本的Python以及MySQL進行交互,給予簡潔直觀的應用程序編程接口,依靠connect()函數(shù)建立數(shù)據(jù)庫連接,依靠游標對象的execute()方法把SQL語句執(zhí)行了,還可采用fetchone()、fetchmany()、fetchall()等途徑獲取查詢結果,借助事務處理保障數(shù)據(jù)完整性,一般用于Web應用開發(fā)、數(shù)據(jù)分析處理等場景當中,促成Python程序與MySQL數(shù)據(jù)庫高效互通。2.3分析方法2.3.1相關性分析相關性分析REF_Ref8402\r\h[10]為一種統(tǒng)計方法,用以衡量兩個或多個變量相互聯(lián)系的強弱和方向,它靠計算相關系數(shù)來量化變量之間的線性關系或者單調(diào)關系,從而助力理解變量彼此間的相互作用,該方法普遍應用在數(shù)據(jù)探索和假設檢驗方面,是數(shù)據(jù)分析與統(tǒng)計建模里的關鍵工具。2.3.1線性回歸分析方法線性回歸REF_Ref8468\r\h[11]為一種統(tǒng)計方式,它借助構建自變量(預測變量)與因變量(響應變量)之間的線性關系模型,進而預測因變量的值,此方法依托最小二乘法原理開展,通過把預測值與實際值間的誤差平方和減到最小,進而找出最佳的線性擬合直線或平面,由此實現(xiàn)對新數(shù)據(jù)的預測分析。2.3.2聚類分析方法聚類分析方法是一種多元統(tǒng)計技術,它根據(jù)樣本或變量之間的相似性(或親疏程度),在沒有先驗知識的情況下,將它們自動分類成多個組或類別。每個組或類別內(nèi)部的個體在特征上具有相似性,而不同類之間的個體特征差異性較大。這種方法有助于揭示數(shù)據(jù)的內(nèi)在結構和規(guī)律,廣泛應用于數(shù)據(jù)挖掘、市場分析、生物學等多個領域。3數(shù)據(jù)抓取與預處理3.1環(huán)境配置本文分析中所用平臺與環(huán)境配置如REF_Ref11158\h表1所示。表SEQ表\*ARABIC1環(huán)境配置表操作系統(tǒng)Windows11Python版本3.12.5Request2.32.3Jieba0.42.1Pymysql1.1.1Pandas2.2.3Sqlalchemy2.0.38Matplotlib3.10.0ChromeDriver135.0.7012.4PyCharmCommunityEdition20程序整體流程從懂車帝()新能源汽車排行榜(REF_Ref12269\h圖4)、車輛詳情頁(REF_Ref18969\h圖7)、車輛評價頁(REF_Ref15427\h圖8)及車輛評論頁(REF_Ref15985\h圖10)獲取汽車信息、詳情信息、評價信息和評論數(shù)據(jù),對各數(shù)據(jù)分別進行預處理,其中評論數(shù)據(jù)還需進行結巴分詞。處理后的數(shù)據(jù)利用PyMySQL存儲到數(shù)據(jù)庫中。接著進行數(shù)據(jù)分析,再將分析結果可視化,生成包括餅圖、柱狀圖、氣泡圖、熱詞圖、三維圖等圖表,最后進行相關性分析、線性回歸分析、聚類分析結果得出結論并提出建議。整體流程如REF_Ref11658\h圖1所示。圖SEQ圖\*ARABIC1流程圖3.3數(shù)據(jù)來源在依托Python開展新能源汽車市場趨勢與消費者行為分析的時候,合理選擇數(shù)據(jù)源十分關鍵,懂車帝平臺憑借其豐富又全面的數(shù)據(jù)資源,成為這項研究的優(yōu)質(zhì)數(shù)據(jù)來源之一,懂車帝收納了大量新能源汽車信息,囊括各品牌、各型號車子的具體參數(shù),諸如續(xù)航距離、電池容量、充電所需時間等,為剖析技術發(fā)展趨勢給予支撐。其含有的車輛價格數(shù)據(jù),像廠商給出的指導價格、經(jīng)銷商的報價以及不同階段的價格漲跌,可助力洞察市場價格動向,懂車帝上面還有消費者針對各車型給出的評價、口碑以及用戶的瀏覽行為數(shù)據(jù),諸如瀏覽時長、關注車型相互對比等,這些數(shù)據(jù)在分析消費者行為偏好和購車決策的影響因素上意義極大,采用Python的網(wǎng)絡爬蟲技術,能高效地從懂車帝網(wǎng)站收集這些結構化及非結構化數(shù)據(jù),且借助相關數(shù)據(jù)處理庫來做清洗、編排工作,為后續(xù)深入開展市場趨勢和消費者行為分析打下堅實基礎。通過對懂車帝2024年2月-2025年2月一年的新能源汽車的銷量、詳情、評價、評論信息的數(shù)據(jù)抓取,本次分析有車輛詳情數(shù)據(jù)100條、評論數(shù)據(jù)12663條、評價數(shù)據(jù)2087條、關鍵詞數(shù)據(jù)84052條作為數(shù)據(jù)支撐,如REF_Ref11864\h圖2、REF_Ref12007\h圖3所示。圖SEQ圖\*ARABIC2評論、評價數(shù)據(jù)圖圖SEQ圖\*ARABIC3關鍵詞、車輛詳情數(shù)據(jù)圖頁面解析:數(shù)據(jù)來源于懂車帝網(wǎng)站的新能源汽車相關頁面。通過分析頁面結構,確定所需數(shù)據(jù)(如車輛基礎信息、用戶評論)所在的HTML元素和標簽。使用正則表達式和PyQuery對頁面進行解析。例如,車輛銷量數(shù)據(jù)可能位于特定的<div>標簽內(nèi),且?guī)в刑囟ǖ腸lass屬性,而評論數(shù)據(jù)則在另一個區(qū)域,通過觀察頁面結構和元素定位,可以為后續(xù)接口分析提供線索。分析接口:基于數(shù)據(jù)抓取需求,我們要通過分析頁面拿到數(shù)據(jù)接口信息以此來拿到數(shù)據(jù)信息。因此我們通過瀏覽器開發(fā)者工具(如Chrome的開發(fā)者工具),捕獲頁面加載過程中與服務器的交互請求來獲取數(shù)據(jù)接口以便后續(xù)抓取網(wǎng)頁數(shù)據(jù)。3.3.1銷量排行榜接口分析在懂車帝頁面中訪問2024年2月-2025年2月的新能源汽車銷量排行榜如REF_Ref30303\h圖3-4所示,可以發(fā)現(xiàn)該頁面的網(wǎng)址為/sales/sale-energy-1000-x-x-x-x,觀察網(wǎng)址和頁面網(wǎng)絡訪問情況發(fā)現(xiàn)其中編號1000為車輛編號,通過更改編號可以得到不同新能源車輛的銷量信息。因此在后續(xù)新能源汽車銷量數(shù)據(jù)抓取的過程中,我們可以通過改變車輛編號并遍歷得到不同車輛的銷量信息如REF_Ref12269\h圖4所示。圖SEQ圖\*ARABIC4新能源汽車銷量排行榜圖分析頁面加載過程,當頁面下滑時,發(fā)現(xiàn)會動態(tài)加載系能源汽車銷量排行數(shù)據(jù),可知數(shù)據(jù)是由AJAX技術動態(tài)獲取的,通過瀏覽器頁面分析工具,檢測網(wǎng)絡訪問情況,監(jiān)測到銷量數(shù)據(jù)獲取的請求接口為/motor/pc/car/rank_data?aid=1839&app_name=auto_web_pc&city_name=%E6%88%90%E9%83%BD&count=10&offset=10&month=&new_energy_type=1%2C2%2C3&rank_data_type=11&brand_id=&price=&manufacturer=&series_type=&nation=0,如REF_Ref12625\h圖5所示。圖SEQ圖\*ARABIC5新能源汽車銷量接口圖經(jīng)過點擊與觀察銷量排行榜頁面和數(shù)據(jù)信息分析,發(fā)現(xiàn)包含所有新能源汽車的銷量、價格、編號等信息的地址為:/motor/pc/car/rank_data通過這個地址,分析其中的參數(shù)發(fā)現(xiàn)city_name為城市名稱,count為獲取數(shù)據(jù)的數(shù)量,offset為獲取數(shù)據(jù)的起始位置,month為獲取數(shù)據(jù)的月份,New_energy_type為新能源類型,brand_id為品牌編號,price為價格范圍,注意參數(shù)要進行URL編碼,如REF_Ref13108\h表2所示。表SEQ表\*ARABIC2新能源汽車銷量接口參數(shù)表字段意義說明city_name城市名稱城市名稱,中文需URL編碼count獲取數(shù)據(jù)數(shù)量獲取幾條offset獲取數(shù)據(jù)的起始位置從第幾條開始,從0開始計算month獲取的月份數(shù)如果不限制月份,可以不給值New_energy_type新能源類型純電動1、插電式混動2、增程式3,多個數(shù)據(jù)用逗號分割brand_id品牌品牌編號,空代表不限制品牌price價格范圍最小價格,最大價格,空代表不限制價格根據(jù)獲取到的銷量排行榜的接口并分析出其中參數(shù)的意義,由此嘗試獲取成都新能源車輛排行前100名,將獲取數(shù)據(jù)的時間更改為近一年內(nèi)因此構造訪問地址為(參數(shù)要進行URL編碼):/motor/pc/car/rank_data?aid=1839&app_name=auto_web_pc&city_name=%E6%88%90%E9%83%BD&count=100&offset=0&month=&new_energy_type=1%2C2%2C3&rank_data_type=11&brand_id=&price=&manufacturer=&series_type=&nation=0由上述構造地址成功獲取到車輛編號、價格、銷量等相關數(shù)據(jù),如REF_Ref14267\h圖6新能源汽車銷量接口數(shù)據(jù)圖所示。圖SEQ圖\*ARABIC6新能源汽車銷量接口數(shù)據(jù)圖分析由新能源汽車銷量排行榜頁面接口返回的數(shù)據(jù),可知其中包含所需的信息如REF_Ref14545\h表3所示。表SEQ表\*ARABIC3新能源汽車銷量可用數(shù)據(jù)表字段意義說明series_id系列編號series_name系列名稱min_price最低價格max_price最高價格count銷售總量brand_id品牌編號brand_name品牌名稱rank排名last_rank上一次排名3.3.2車輛詳情頁面分析在懂車帝頁面中訪問車輛詳情頁面如REF_Ref18969\h圖7所示,可以發(fā)現(xiàn)該頁面的網(wǎng)址為/auto/params-carIds-x-4857,其中編號4857為車輛編號,通過更改車輛編號,可以得到不同新能源汽車的車輛詳情信息。因此在后續(xù)的數(shù)據(jù)抓取工作中可以通過改變車輛編號并遍歷編號得到不同車輛的詳情信息。圖SEQ圖\*ARABIC7車輛詳情分析圖通過觀察車輛詳情頁面的網(wǎng)絡請求過程發(fā)現(xiàn),所需的價格、里程信息等被鑲嵌在HTML代碼中以Json格式保存,經(jīng)過不斷請求網(wǎng)頁數(shù)據(jù)測試發(fā)現(xiàn)包含車輛信息詳情的網(wǎng)站為:/auto/params-carIds-x-4363,在返回的HTML頁面攜帶的Json數(shù)據(jù)中發(fā)現(xiàn)以下可用于本次分析的數(shù)據(jù)參數(shù)如REF_Ref14711\h表4所示。表SEQ表\*ARABIC4車輛詳情可用數(shù)據(jù)表字段意義說明car_energy_type新能源類型純電動,插電式混動,增程式car_year生產(chǎn)年份car_max_torque最大里程通過對詳情頁面的數(shù)據(jù)與網(wǎng)絡請求分析得到可用的參數(shù),如新能源汽車的類型、生產(chǎn)年份、最大里程等數(shù)據(jù),由此得出車輛詳情的構造訪問地址為:/auto/params-carIds-x-{sale_data['series_id']}成功獲取到相關數(shù)據(jù)。3.3.3車輛評價接口分析在懂車帝訪問車輛對應的懂車分(口碑)頁面(以ModelY為例)如REF_Ref15002\h圖8所示,其網(wǎng)址為/auto/series/4363,其中4363為ModelY的車輛編號,可以通過改變這個編號獲取到其他汽車的評價信息。圖SEQ圖\*ARABIC8車輛評價接口分析圖分析頁面加載過程,當點擊評價信息時,檢測網(wǎng)絡請求過程,可知評價信息是由AJAX動態(tài)加載出來的,通過瀏覽器頁面分析工具檢測發(fā)現(xiàn)車輛評價接口為/motor/pc/car/series/get_review_tab?aid=1839&app_name=auto_web_pc&series_id=4363&only_owner=0&car_id=0經(jīng)過不斷地測試分析,發(fā)現(xiàn)包含評論頁面信息的的接口地址為: /motor/pc/car/series/get_review_tab分析評價信息接口包含的參數(shù)信息如REF_Ref15253\h表5所示:表SEQ表\*ARABIC5車輛評價接口參數(shù)表字段意義說明series_id車輛系列編號由獲取到的評價接口與分析其所包含的參數(shù)信息,可嘗試獲取成都新能源車輛評價,構造訪問地址為:/auto/series/score/{car_info[0]}成功獲取到車輛編號、正負面評價等相關數(shù)據(jù),如REF_Ref15427\h圖9所示。圖SEQ圖\*ARABIC9車輛評價接口數(shù)據(jù)圖分析返回的評價相關數(shù)據(jù),可知其中包含所需要的信息如REF_Ref15600\h表6所示:表SEQ表\*ARABIC6車輛評價可用數(shù)據(jù)表字段意義說明series_id車輛系列編號tag_name評價標簽sentiment正面/負面評價1-正面評價,-1負面評價3.3.4車輛評論接口分析在懂車帝訪問車輛對應的車友圈(以ModelY為例)如REF_Ref15851\h圖10所示,該頁面的網(wǎng)址為/auto/series/score/4363-x-x-x-x-x,其中的編號4363依然對應著車輛編號,意味著可以通過改變車輛編號來獲取車輛相關評論信息。圖SEQ圖\*ARABIC10車輛評論頁面圖分析頁面加載過程,當頁面下滑時,發(fā)現(xiàn)底部有分頁欄如REF_Ref15985\h圖11所示,通過點擊頁面,瀏覽器頁面分析工具,檢測網(wǎng)絡訪問情況,檢測到數(shù)據(jù)獲取的請求如REF_Ref16093\h圖12所示。確定獲取車輛相關評論數(shù)據(jù)的接口為/motor/pc/ugc/community/cheyou_list?aid=1839&app_name=auto_web_pc&series_or_motor_id=4363&sort_type=2&tab_name=dongtai&offset=30&count=30圖SEQ圖\*ARABIC11車輛評論分析圖圖SEQ圖\*ARABIC12車輛評論接口分析圖經(jīng)過點擊、下滑與網(wǎng)絡監(jiān)測數(shù)據(jù)請求測試分析,發(fā)現(xiàn)包含評論信息的接口地址為:/motor/pc/ugc/community/cheyou_list分析評論接口中的參數(shù),可獲得車輛系列編號、排序方式、數(shù)據(jù)起始位置、獲取數(shù)據(jù)數(shù)量等信息,如REF_Ref16445\h表7所示。表SEQ表\*ARABIC7車輛評論接口參數(shù)表字段意義說明Seriesormotorid車輛系列編號sorttype排序方式熱門1,動態(tài)2,精華3,價格討論4,口碑5,問答6,質(zhì)量反饋7,評車8,商家9續(xù)表7車輛評論接口參數(shù)表字段意義說明offset獲取數(shù)據(jù)的起始位置從0開始count獲取數(shù)據(jù)數(shù)量一次僅支持獲取30條評論通過評論接口參數(shù)信息分析與測試,嘗試獲取近一年成都新能源車輛排行前120條,爬取數(shù)據(jù)構造訪問地址為:/motor/pc/ugc/community/cheyou_list?aid=1839&app_name=auto_web_pc&series_or_motor_id=4363&sort_type=2&tab_name=dongtai&offset=0&count=30成功獲取到評論信息中的標題和評論內(nèi)容信息如REF_Ref17507\h表8所示。圖SEQ圖\*ARABIC13車輛評論接口數(shù)據(jù)圖分析返回的數(shù)據(jù),可知其中包含所需要的信息有:表SEQ表\*ARABIC8車輛評論可用數(shù)據(jù)表字段意義說明title標題content評論內(nèi)容3.3.5關鍵頁面主要涉及懂車帝新能源汽車銷量排名頁面、懂車分(口碑)頁面中的評價標簽信息和車輛詳情頁中的用戶評論部分。銷量排名頁面展示了新能源汽車的銷量數(shù)據(jù),懂車分(口碑)頁面中的評價標簽顯示了用戶對車倆某些特性的重視程度,而車輛詳情頁的用戶評論部分則包含了用戶對具體車型的評價信息,這些頁面是數(shù)據(jù)的主要來源。3.3.6Python爬蟲實現(xiàn)通過以上四個頁面的接口分析,獲取到了有用的字段,接下來通過這些接口實現(xiàn)懂車帝新能源汽車的數(shù)據(jù)采集。在數(shù)據(jù)采集過程中,使用Python的requests庫、BeautifulSoup庫或Selenium庫來實現(xiàn)網(wǎng)絡爬蟲功能。requests庫是Python中用于發(fā)送HTTP請求的常用庫,它能夠方便地與Web服務器進行通信,獲取網(wǎng)頁內(nèi)容。其原理是通過構造HTTP請求,向目標網(wǎng)站發(fā)送請求報文,服務器接收到請求后返回響應報文,requests庫對響應報文進行處理,獲取其中的網(wǎng)頁內(nèi)容。例如,使用requests庫發(fā)送GET請求獲取懂車帝某新能源汽車車型頁面的代碼如下:importrequestsurl="/12345"#假設的車型頁面URLresponse=requests.get(url)ifresponse.status_code==200:html_content=response.text#這里的html_content即為獲取到的網(wǎng)頁內(nèi)容,可以進一步進行解析else:print(f"請求失敗,狀態(tài)碼:{response.status_code}")BeautifulSoup庫是一個用于解析HTML和XML文檔的庫,它可以幫助我們從網(wǎng)頁中提取數(shù)據(jù)。其原理是將獲取到的網(wǎng)頁內(nèi)容解析為一個樹形結構,通過遍歷樹形結構來查找和提取所需的數(shù)據(jù)。例如,使用BeautifulSoup庫從上述獲取的懂車帝網(wǎng)頁內(nèi)容中提取車型名稱的代碼如下:frombs4importBeautifulSoupsoup=BeautifulSoup(html_content,'html.parser')car_name=soup.find('h1',class_='main-title').textprint(f"車型名稱:{car_name}")Selenium庫是作為Web應用程序測試用途的工具,它可模擬人類針對瀏覽器的操作,完成自動化的內(nèi)容采集,當目標網(wǎng)站采用動態(tài)加載、JavaScript渲染或者AJAX這類技術,導致傳統(tǒng)的靜態(tài)HTML解析庫難以得到完整數(shù)據(jù)的時候,Selenium庫開始發(fā)揮關鍵功效,其原理是憑借控制瀏覽器驅(qū)動,模擬用戶在瀏覽器中的諸般操作情形,諸如點擊、滾動、輸入等操作,以此獲取動態(tài)生成的數(shù)據(jù),借助Selenium庫來模擬點擊懂車帝的車型篩選按鈕,以下為獲取篩選后車型列表數(shù)據(jù)的代碼:fromseleniumimportwebdriverfrommon.byimportByimporttimedriver=webdriver.Chrome()driver.get("/")filter_button=driver.find_element(By.XPATH,"http://button[@class='filter-button']")filter_button.click()time.sleep(2)#等待頁面加載和數(shù)據(jù)更新car_list=driver.find_elements(By.XPATH,"http://div[@class='car-item']")forcarincar_list:car_info=car.textprint(car_info)driver.quit()#關閉瀏覽器在實際進行數(shù)據(jù)采集的時候,還得考量網(wǎng)站的反爬蟲機制,好些網(wǎng)站為防止數(shù)據(jù)被惡意采集,會實施一系列反爬蟲手段,諸如限制訪問的快慢、核查請求頭數(shù)據(jù)、采用驗證碼等,為處理這些反爬蟲的機制,可以采用下面的策略:一是把請求頭設置得合理,效仿真實瀏覽器的訪問行徑。在requests這個庫里面,可利用headers參數(shù)設置請求頭的信息,包含像User-Agent、Referer這類,二是把控訪問頻次,防止反復發(fā)送請求,造成網(wǎng)站服務器的壓力過大,可借助time.sleep()函數(shù)在每次請求之間設置恰當?shù)臅r間間隔。其三是采用代理IP,依靠代理服務器去轉(zhuǎn)發(fā)請求,把真實IP地址隱藏,防止被網(wǎng)站實施封禁,可從免費或者付費的代理IP供應商那里獲取代理IP清單,并在代碼當中隨機挑選用上,針對需要處理驗證碼的情形,可采用第三方驗證碼識別服務,若如驗證碼打碼類平臺,利用API接口把驗證碼圖片發(fā)送到打碼平臺處,拿到識別結果后接著開展后續(xù)操作,通過把這些策略加以綜合運用,可以高效提升爬蟲的穩(wěn)定性與成功比率,保證數(shù)據(jù)采集工作順利地進行下去。3.4數(shù)據(jù)抓取3.4.1爬取懂車帝汽車銷量信息通過requests訪問銷量排行數(shù)據(jù)接口,獲取前100條車輛數(shù)據(jù),通過json庫進行數(shù)據(jù)轉(zhuǎn)換。print("#開始爬取數(shù)據(jù)..")topn_offset=0topn_count=100resp=requests.get(f"/motor/pc/car/rank_data?aid=1839&app_name=auto_web_pc&city_name=%E5%A4%AA%E5%8E%9F&count={topn_count}&offset={topn_offset}&month=&new_energy_type=1%2C2%2C3&rank_data_type=11&brand_id=&price=&manufacturer=&series_type=&nation=0",timeout=5)sale_str=resp.textsale_datas=json.loads(sale_str)["data"]["list"]foriinrange(len(sale_datas)):print(f"開始處理車輛信息[{i+1}/{len(sale_datas)}]")sale_data=sale_datas[i]car_info=(sale_data["series_id"],sale_data["series_name"],sale_data["brand_name"],sale_data["min_price"],sale_data["max_price"],sale_data["count"])car_list.append(car_info)3.4.2爬取懂車帝汽車評價信息在獲取到排行榜的新能源汽車基礎上,打開相關車輛的懂車分(口碑)頁面,爬取車輛的評價信息(即優(yōu)缺點評價),通過requests訪問懂車分(口碑)頁面,通過pyquery解析頁面,獲取頁面中評價信息,再用正則表達式將車輛優(yōu)缺點評價信息及其出現(xiàn)的數(shù)量進行切分。resp2=requests.get(

f"/auto/series/score/{car_info[0]}"

,timeout=5)

doc2=pq(resp2.text)

tags=doc2(".tag-lista.tag-positive").items()

fortagintags:

evaluate_info=re.findall("^(.*)((\w+))$",tag.text())[0][0]

evaluate_count=int(re.findall("^(.*)((\w+))$",tag.text())[0][1])

eva_list.append((car_info[0],evaluate_info,evaluate_count,1))

tags=doc2(".tag-lista.tag-negative").items()

fortagintags:

evaluate_info=re.findall("^(.*)((\w+))$",tag.text())[0][0]

evaluate_count=int(re.findall("^(.*)((\w+))$",tag.text())[0][1])

eva_list.append((car_info[0],evaluate_info,evaluate_count,-1))3.4.3爬取懂車帝評論信息針對排行榜中的所有車輛,分別爬取對應車輛評論信息REF_Ref8618\w\h[12],通過requests訪問車輛評論接口,獲取前120條評論數(shù)據(jù),通過json庫進行數(shù)據(jù)轉(zhuǎn)換。word_dic={}

comm_offset=0

comm_count=120

foriinrange(comm_count//30):

comm_offset=30*i;

resp=requests.get(f"/motor/pc/ugc/community/cheyou_list?aid=1839&app_name=auto_web_pc&series_or_motor_id={car_info[0]}&sort_type=2&tab_name=dongtai&offset={comm_offset}&count=30"

,timeout=5)

resp.encoding="utf-8"

comments_str=resp.text

comments=json.loads(comments_str)過程處理:在代碼中,通過設置合理的timeout參數(shù)(如timeout=5),避免因請求時間過長而導致程序無響應。數(shù)據(jù)提?。簩τ阡N量數(shù)據(jù),通過對接口返回的JSON數(shù)據(jù)進行解析,獲取data字段下的list,其中每個元素包含了車輛的series_id、series_name、min_price、max_price、brand_id和count等信息。對于評論數(shù)據(jù),同樣解析JSON數(shù)據(jù),從data字段下的cheyou_list中提取每個評論的content字段,從而獲取用戶的評論內(nèi)容。3.5數(shù)據(jù)預處理3.5.1數(shù)據(jù)質(zhì)量問題分析準確性問題:一些車型的參數(shù)信息也許存在差錯,車輛實際的續(xù)航里程數(shù)據(jù),各位車主反饋的情況跟平臺標注不相同,少數(shù)新能源車型在低溫環(huán)境下實際續(xù)航大幅下降,但平臺參數(shù)沒有清晰說明特定條件下續(xù)航的變化情形,這有概率誤導消費者對車輛真實性能的判別,就車輛的配置信息而言,也會偶然出現(xiàn)錯誤標注,諸如部分車型的音響品牌或安全配置等級與實車狀況不相符,導致消費者對車輛價值的評估受干擾。完整性問題:一些小眾車型或老款車型的數(shù)據(jù)不夠全面。懂車帝雖涵蓋大量汽車信息,但對于市場占有率較低的小眾車型,可能缺乏詳細的評測內(nèi)容、用戶口碑數(shù)據(jù)等。比如某款小眾進口新能源車型,平臺上僅有基本參數(shù),而車輛的實際駕駛體驗、長期使用后的質(zhì)量反饋等內(nèi)容缺失,不利于消費者全面了解該車型。老款車型方面,隨著時間推移,部分歷史版本車型的詳細配置演變、不同年份的改款差異等信息未完整保留,影響對車型全生命周期的分析。一致性問題:不同渠道來源的數(shù)據(jù)存在不一致情況。懂車帝整合了多種數(shù)據(jù)來源,如廠商提供、經(jīng)銷商反饋、用戶上傳等。有時會出現(xiàn)同一車型價格信息在不同板塊不一致,廠商指導價在新車介紹頁面與經(jīng)銷商報價板塊數(shù)值有出入。另外,車輛的油耗數(shù)據(jù),用戶實測數(shù)據(jù)與平臺根據(jù)理論模型估算的數(shù)據(jù)差異較大,且未明確說明兩者計算依據(jù)的不同,讓消費者難以確定真實油耗水平,降低了數(shù)據(jù)的可信度。時效性問題:平臺數(shù)據(jù)更新速度有時跟不上市場變化。在新車發(fā)布后,懂車帝可能無法第一時間全面更新車型信息,像新上市車型的配置調(diào)整、價格優(yōu)惠政策等,不能及時準確呈現(xiàn)給用戶。例如某品牌新推出的一款新能源車型,上市初期配置有所變動,平臺卻在一段時間內(nèi)仍展示舊配置信息。對于車輛召回、質(zhì)量投訴處理結果等動態(tài)信息,更新也不夠及時,導致消費者不能及時獲取最新的車輛質(zhì)量安全相關信息,影響其購車決策及用車體驗。新能源汽車數(shù)據(jù)質(zhì)量問題如REF_Ref17650\h表9所示表SEQ表\*ARABIC9新能源汽車數(shù)據(jù)質(zhì)量問題示例表序號車型名稱品牌續(xù)航里程(km)銷量(輛)價格(萬元)1Model3特斯拉44510000252比亞迪漢EV比亞迪6058000233蔚來ES6蔚來5107000354小鵬P7小鵬5526000285理想ONE理想缺失5000326Model3特斯拉44510000257比亞迪漢EV比亞迪缺失8000238蔚來ES6蔚來5107000359小鵬P7小鵬55260002810理想ONE理想5805000500由上面的示例可看出,在新能源汽車數(shù)據(jù)里,數(shù)據(jù)質(zhì)量問題確實存在,并且有機會對數(shù)據(jù)分析結果產(chǎn)生不同程度的干擾,在著手進行數(shù)據(jù)分析前,必須對數(shù)據(jù)進行清洗及預處理,為提高數(shù)據(jù)的質(zhì)量,確保分析結果既準確又可靠。3.5.2清洗與預處理方法采用Python的pandas庫對數(shù)據(jù)進行清潔和前期加工,用以應對缺失值、重復值和異常值等狀況,具體實施的操作如下:

(1)刪除重復值:使用pandas庫的drop_duplicates()函數(shù)刪掉數(shù)據(jù)集中的重復值,該函數(shù)會依照指定的列或者全部列來斷定數(shù)據(jù)是否重復,還會把重復的行刪掉,對于囊括新能源汽車數(shù)據(jù)的DataFrame對象df,借助以下代碼消除重復值:importpandasaspddf=pd.read_csv('new_energy_cars.csv')df=df.drop_duplicates()實施上述代碼后,df將不再留存重復的行,以此避免重復數(shù)據(jù)對分析結果產(chǎn)生的干擾,以前面講的包含100條數(shù)據(jù)的數(shù)據(jù)集當作例子,在開展刪掉重復值的操作后,數(shù)據(jù)集中的重復條目被剔除掉,數(shù)據(jù)量從原本的100條減少到95條,實現(xiàn)了數(shù)據(jù)的單一存在性。

填充缺失值:針對數(shù)據(jù)集中出現(xiàn)的缺失值,采用各類不同的方法填充,針對數(shù)值范疇的數(shù)據(jù),諸如續(xù)航里程、產(chǎn)品銷量、售賣價格等,可采用均值、中位數(shù)、眾數(shù)等統(tǒng)計量進行補充填充,以續(xù)航里程字段當作例子,采用均值填充缺失值的代碼如下:mean_range=df['續(xù)航里程'].mean()df['續(xù)航里程']=df['續(xù)航里程'].fillna(mean_range)對于分類數(shù)據(jù),如車型名稱、品牌等,可以使用最頻繁出現(xiàn)的值(眾數(shù))進行填充。例如,填充品牌字段的缺失值:mode_brand=df['品牌'].mode()[0]df['品牌']=df['品牌'].fillna(mode_brand)通過上述方法,可以有效地填充缺失值,使數(shù)據(jù)更加完整。在之前的示例中,經(jīng)過填充缺失值操作后,續(xù)航里程字段的缺失值被均值填充,品牌字段的缺失值被眾數(shù)填充,數(shù)據(jù)的完整性得到了提高。(2)處理異常值:就異常值而言,首先借助數(shù)據(jù)分析找出潛在的異常值,之后依據(jù)實際情形開展處理,常用的一種途徑是采用箱線圖(BoxPlot)來識別異常值,箱線圖可直觀體現(xiàn)數(shù)據(jù)的分布態(tài)勢,憑借上下四分位數(shù)和四分位距(IQR)判定數(shù)據(jù)的正常范圍,超出這個范圍的數(shù)據(jù)點被看作異常值,用新能源汽車價格數(shù)據(jù)當作例子,基于pandas和matplotlib庫繪制箱線圖且識別異常數(shù)值的代碼如下:importmatplotlib.pyplotaspltdf['價格'].plot(kind='box')plt.show()Q1=df['價格'].quantile(0.25)Q3=df['價格'].quantile(0.75)IQR=Q3-Q1lower_bound=Q1-1.5*IQRupper_bound=Q3+1.5*IQRoutliers=df[(df['價格']<lower_bound)|(df['價格']>upper_bound)]mean_price=df['價格'].mean()df.loc[(df['價格']<lower_bound)|(df['價格']>upper_bound),'價格']=mean_price在上述代碼中,首先繪制了價格數(shù)據(jù)的箱線圖,通過觀察箱線圖可以初步判斷是否存在異常值。然后計算了上下限,根據(jù)上下限找出了異常值。最后,將異常值用價格的均值進行替換,以消除異常值對數(shù)據(jù)分析的影響。在之前的示例中,通過上述方法識別出價格為500萬元的異常值,并將其替換為均值,使價格數(shù)據(jù)更加合理。為了更直觀地展示清洗前后的數(shù)據(jù)對比,以下以一個包含新能源汽車銷量和價格的數(shù)據(jù)子集為例,展示數(shù)據(jù)清洗和預處理的效果。清洗前的數(shù)據(jù)如REF_Ref189\h圖14所示:圖SEQ圖\*ARABIC14清洗前的數(shù)據(jù)表圖部分清洗后的數(shù)據(jù)如REF_Ref21011\h表10所示:表SEQ表\*ARABIC10清洗后的數(shù)據(jù)series_idseries_namebrand_namecar_energy_typecar_yearcar_max_torquemin_pricemax_pricecount10026銀河E5吉利銀河純電動202444010.9814.581288010040iCARV23iCAR純電動20253109.9814.98639710120紅旗HS3PHEV紅旗插電式混動20249313.9813.98154010124五菱星光SPHEV五菱汽車插電式混動20246011.9811.98209810205海豹06GT比亞迪純電動202550518.6818.68381910270坦克400Hi4-T坦克插電式混動202410528.9828.982446從上述對比可以看出,清洗后的數(shù)據(jù)中,重復值被刪除,缺失值被填充,異常值得到了處理,數(shù)據(jù)質(zhì)量得到了顯著提高。經(jīng)過清洗和預處理后的數(shù)據(jù),更適合進行后續(xù)的數(shù)據(jù)分析工作,能夠為新能源汽車市場趨勢與消費者行為分析提供更準確、可靠的數(shù)據(jù)支持。3.5.3數(shù)據(jù)編碼由于

car_energy_type

是分類變量,而后續(xù)的分析方法(如回歸分析、聚類分析等)通常要求輸入為數(shù)值型數(shù)據(jù),因此需要對其進行編碼處理。我們采用了獨熱編碼(One-HotEncoding)的方法,使用

pandas

get_dummies

函數(shù)將

car_energy_type

轉(zhuǎn)換為多個數(shù)值型的虛擬變量。代碼如下:df_encoded=pd.get_dummies(df,columns=['car_energy_type'])經(jīng)過獨熱編碼后,每個不同的能源類型都對應一個新的列,列中的值為0或1,分別表示該樣本是否屬于該能源類型,這樣就將分類變量轉(zhuǎn)換為了適合分析的數(shù)值型數(shù)據(jù)。3.5.4分詞處理與統(tǒng)計(1)結巴分詞介紹結巴分詞REF_Ref8706\w\h[13]是一款基于Python開發(fā)的開源中文分詞工具包,具備多種分詞模式,精確模式能實現(xiàn)對文本的精準切分,有效滿足對文本內(nèi)容進行深度分析的需求;全模式可以快速遍歷并輸出所有可能的詞語組合,有助于對文本詞匯進行全面篩查;搜索引擎模式則是在精確模式基礎上,進一步對長詞進行二次切分,從而為搜索引擎構建索引提供有力支持。結巴分詞還提供詞性標注功能,通過為每個切分后的詞語標注詞性,它支持用戶自定義詞典,用戶可根據(jù)自身需求添加特定領域的專有名詞、術語等。結巴分詞廣泛應用于各類自然語言處理任務,如文本分類、信息檢索、關鍵詞提取、自動摘要生成以及情感分析等。(2)數(shù)據(jù)統(tǒng)計:通過遍歷分詞后的結果,使用字典word_dic統(tǒng)計每個詞出現(xiàn)的次數(shù)。統(tǒng)計完成后,將統(tǒng)計結果通過saveCarCommonWord函數(shù)存儲到數(shù)據(jù)庫中。words=psg.cut(content)

words=list(filter(lambdaword:len(word.word)>1andword.flag.startswith('n'),words))

words=map(lambdaword:word.word,words)

forwordinwords:

word_dic[word]=word_dic[word]+1ifwordinword_dicelse13.5.5數(shù)據(jù)存儲(1)利用PyMySQL對抓取到的新能源汽車的銷量、車輛詳情、車輛評價、車友評論信息進行數(shù)據(jù)存儲,PyMySQLAPI如REF_Ref22833\h圖15、REF_Ref22872\h圖16所示。圖SEQ圖\*ARABIC15PyMySQLAPI1圖圖SEQ圖\*ARABIC16PyMySQLAPI2圖(2)車輛信息、評價信息、評論信息、評論分詞信息存儲代碼如下:存儲車輛信息

sql="insertintocarinfovalues(%s,%s,%s,%s,%s,%s)"存儲評價信息

sql="insertintocarevaluatevalues(%s,%s,%s,%s)"存儲評論信息

sql="insertintocarcommonvalues(%s,%s,%s)"存儲評論分詞信息

sql="insertintocarcommonwordvalues(%s,%s,%s)"

4數(shù)據(jù)分析4.1數(shù)據(jù)可視化通過對懂車帝新能源汽車的數(shù)據(jù)抓取、數(shù)據(jù)清洗工作后,基于已獲得的銷量信息、車輛詳情信息、車輛評價信息、車友評論信息做出數(shù)據(jù)可視化分析,將價格、銷量、新能源汽車熱點詞、里程等信息先逐一分析,再通過繪制圖表了解其中的關系,為了解新能源汽車市場趨勢和消費者行為提供更為直觀的圖表數(shù)據(jù)信息支持。4.1.1價格區(qū)間統(tǒng)計plotx01函數(shù)通過創(chuàng)建數(shù)據(jù)庫引擎連接到本地dcd數(shù)據(jù)庫,執(zhí)行SQL查詢從carinfo表中根據(jù)汽車最低售價劃分價格區(qū)間并統(tǒng)計各區(qū)間汽車數(shù)量,將結果存儲于DataFrame中,按特定順序整理數(shù)據(jù)后,利用matplotlib繪制餅圖,直觀展示新能源汽車在不同價格區(qū)間的數(shù)量占比,有助于分析新能源汽車市場的價格分布情況,如REF_Ref23127\h圖17所示。defplotx01():

engine=create_engine('mysql+pymysql://root:123456@localhost/dcd')

#執(zhí)行SQL查詢并將結果存儲在DataFrame中

sql_query="""

SELECT

CASE

WHENmin_price<10THEN'10萬以內(nèi)'

WHENmin_priceBETWEEN10AND19.99THEN'10萬至20萬

WHENmin_priceBETWEEN20AND29.99THEN'20萬至30萬'

WHENmin_priceBETWEEN30AND39.99THEN'30萬至40萬'

ELSE'40萬以上'

ENDASprice_range,

COUNT(*)AScar_count

FROMcarinfo

GROUPBYprice_range;

"""

df=pd.read_sql_query(sql_query,engine)

df2=df.set_index('price_range')['car_count']

df_count=df2.loc[['10萬以內(nèi)','10萬至20萬','20萬至30萬','30萬至40萬','40萬以上']]

plt.rcParams['font.sans-serif']='SimHei'#設置默認字體為宋體

plt.rcParams['axes.unicode_minus']=False#用來正常顯示負號

plt.pie(df_count.values,labels=df_count.index,autopct='%1.1f%%')

plt.title('新能源汽車價格區(qū)間統(tǒng)計')

plt.show()圖SEQ圖\*ARABIC17價格區(qū)間統(tǒng)計圖4.1.2基于系列的銷量可視化plotx02函數(shù)旨在直觀展示新能源汽車市場的銷售情況。它先創(chuàng)建數(shù)據(jù)庫引擎連接本地dcd數(shù)據(jù)庫,執(zhí)行SQL查詢從carinfo表中選取按銷量降序排列的前30名車系及其銷量數(shù)據(jù),將結果存儲于DataFrame中。接著,利用matplotlib庫進行繪圖設置,包括字體、負號顯示、圖表大小等,繪制以車系名稱為橫軸、銷量為縱軸的條形圖,并設置圖表標題、旋轉(zhuǎn)x軸標簽及調(diào)整布局,最終展示出銷量最好的前30名車系的銷量對比,幫助我們快速把握市場熱門車系,如REF_Ref23372\h圖18所示。defplotx02():

engine=create_engine('mysql+pymysql://root:123456@localhost/dcd')

#執(zhí)行SQL查詢并將結果存儲在DataFrame中

sql_query="""

select

series_name,count

from

carinfo

orderby

countdesc

limit0,30;

"""

df=pd.read_sql_query(sql_query,engine)

plt.rcParams['font.sans-serif']='SimHei'#設置默認字體為宋體

plt.rcParams['axes.unicode_minus']=False#用來正常顯示負號

plt.figure(figsize=(15,6))#設置圖表大小

plt.bar(df['series_name'],df['count'],color='skyblue')#繪制條形圖,設置顏色

plt.title('銷量最好的前30名車系')#設置圖表標題

plt.xticks(rotation=45)#旋轉(zhuǎn)x軸標簽,以便更好地顯示長名稱

plt.tight_layout()#調(diào)整布局以避免標簽重疊

plt.show()圖SEQ圖\*ARABIC18基于系列銷量可視化圖4.1.3基于品牌的銷量可視化plotx03

函數(shù)用于對汽車市場中各品牌的銷售情況進行可視化分析。它先創(chuàng)建數(shù)據(jù)庫引擎連接到本地的dcd數(shù)據(jù)庫,接著執(zhí)行SQL查詢,從carinfo表中按品牌名稱分組,計算各品牌的總銷量,并按總銷量降序排列,選取前30名品牌的數(shù)據(jù)存儲到DataFrame里。之后使用matplotlib庫繪制條形圖,在繪圖前進行字體、負號顯示以及圖表大小等設置,以品牌名稱為橫軸、總銷量為縱軸繪制條形圖,同時為圖表添加x軸、y軸標簽和標題,還旋轉(zhuǎn)x軸標簽并調(diào)整布局避免標簽重疊,最終展示銷量最好的前30名汽車品牌的銷量對比,有助于了解市場上各品牌的銷售表現(xiàn),如REF_Ref23525\h圖19所示。defplotx03():

engine=create_engine('mysql+pymysql://root:123456@localhost/dcd')

#執(zhí)行SQL查詢并將結果存儲在DataFrame中

sql_query="""

select

brand_name,sum(count)assc

from

carinfo

groupby

brand_name

orderby

scdesc

limit0,30;

"""

df=pd.read_sql_query(sql_query,engine)

plt.rcParams['font.sans-serif']='SimHei'#設置默認字體為宋體

plt.rcParams['axes.unicode_minus']=False#用來正常顯示負號

plt.figure(figsize=(15,6))#設置圖表大小

plt.bar(df['brand_name'],df['sc'],color='skyblue')#繪制條形圖,設置顏色

plt.xlabel('品牌名稱')#設置x軸標簽

plt.ylabel('銷量')#設置y軸標簽

plt.title('銷量最好的前30名品牌')#設置圖表標題

plt.xticks(rotation=45)#旋轉(zhuǎn)x軸標簽,以便更好地顯示長名稱

plt.tight_layout()#調(diào)整布局以避免標簽重疊

plt.show()圖SEQ圖\*ARABIC19基于品牌的銷量可視化圖4.1.4價格和銷量的關系(以比亞迪為例)plotx04函數(shù)接收品牌名稱為參數(shù),創(chuàng)建數(shù)據(jù)庫引擎連接本地dcd數(shù)據(jù)庫,執(zhí)行SQL查詢從carinfo表獲取指定品牌車系的平均價格、車系名稱和銷量數(shù)據(jù)存入DataFrame。隨后進行繪圖設置,繪制以平均價格為x軸、銷量為y

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論