




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
基于Python的空氣質(zhì)量數(shù)據(jù)分析與實踐 本篇文章利用了Python爬蟲技術(shù)對空氣質(zhì)量網(wǎng)站的數(shù)據(jù)進行獲取,獲取之后把數(shù)據(jù)生成CSV格式的文件,然后再存入數(shù)據(jù)庫方便保存。再從之前24小時的AQI(空氣質(zhì)量指數(shù))的平均值中進行分析,把數(shù)據(jù)取出來后,對數(shù)據(jù)進行數(shù)據(jù)清洗,最后將數(shù)據(jù)提取出來做可視化的分析。在對數(shù)據(jù)的獲取的過程中,使用了Python的request去獲取html的一個文本,然后利用正則表達式re庫和beautifulSoup這兩個庫去對數(shù)據(jù)進行篩選,拿到自己需要的一些空氣質(zhì)量的數(shù)據(jù),并且同時寫入CSV文件。在對數(shù)據(jù)進行存儲、分類時,利用了Python的sqlalchemy這個庫,對寫入CSV的數(shù)據(jù)去存進數(shù)據(jù)庫,更簡單直接的保存大群數(shù)據(jù),然后再使用pandas這個庫去讀取數(shù)據(jù)庫里面的數(shù)據(jù),并且讀取的數(shù)據(jù)可以直接去清洗、分類。在數(shù)據(jù)可視化的步驟中,則用matplotlib和pyecharts這兩個庫去將想要分析的數(shù)據(jù)進行可視化,繪制成條形圖,方便比較各個城市的空氣質(zhì)量差異,將當(dāng)天空氣最好的前十五個城市可視化出來,并且通過K-means聚類算法等去分析城市的一些空氣質(zhì)量受到影響的原因,以及對應(yīng)的治理措施。關(guān)鍵詞:Python;爬蟲;數(shù)據(jù)分析;數(shù)據(jù)庫;數(shù)據(jù)可視化
目錄20560第1章緒論 第1章緒論1.1課題的研究背景及意義隨著經(jīng)濟的高速發(fā)展,空氣質(zhì)量這一生存的大問題顯得越來越重要,我們以前發(fā)展太多重工業(yè)的時候,已經(jīng)犧牲了很多的空氣環(huán)境,到現(xiàn)在由于空氣質(zhì)量引發(fā)的一系列問題比比皆是,所以我們現(xiàn)在要注重空氣的質(zhì)量去保護環(huán)境。特別是現(xiàn)在網(wǎng)絡(luò)飛速發(fā)展的時代,我們可以隨時隨地就能獲取到各地的空氣質(zhì)量的信息,方便我們?nèi)チ私飧鞯氐目諝赓|(zhì)量以及對空氣質(zhì)量進行及時的控制,讓空氣質(zhì)量保持在一個比較良好的范圍。大氣污染狀況是與我們每一個人的健康情況息息相關(guān)的,我們每一個人都有責(zé)任去保護我們的地球,因此普及一些空氣污染的后果以及如何遏制這種提高空氣質(zhì)量具有重大意義。通過空氣質(zhì)量分析,可以使更多人了解大氣污染重的地區(qū)以及原因,使大家增強環(huán)境保護意識,提高公眾的科學(xué)素養(yǎng),便于公眾在線閱讀及參與。收集全省各地市空氣自動監(jiān)測點位的實時發(fā)布數(shù)據(jù),儲存進空氣質(zhì)量搜集的數(shù)據(jù)庫。這些數(shù)據(jù)不但可以呈現(xiàn)給用戶們每個城市實時的一些空氣質(zhì)量信息,也可以把獲取到的數(shù)據(jù)儲存起來,方便以后去收集利用,還可以把這些數(shù)據(jù)給有關(guān)的保護環(huán)境的部門,作為整治空氣環(huán)境的理由。所以對空氣質(zhì)量的關(guān)注是很有必要的。1.2互聯(lián)網(wǎng)數(shù)據(jù)及其分析的研究現(xiàn)狀隨著互聯(lián)網(wǎng)技術(shù)及應(yīng)用的高速發(fā)展,我們也越來越容易的可以在網(wǎng)上獲得我們所需要的一些數(shù)據(jù),在每個行業(yè)都擁有著非常海量的數(shù)據(jù)。數(shù)據(jù)量的愈發(fā)增大而導(dǎo)致分析這些空氣質(zhì)量數(shù)據(jù)難度也會變得更大,因此出現(xiàn)了一方面不斷地產(chǎn)生大量數(shù)據(jù),另一方面有許多的原因?qū)е铝藳]有辦法及時去利用剛剛收集到的海量的數(shù)據(jù),然后對這些數(shù)據(jù)造成了浪費。數(shù)據(jù)的可視化技術(shù)可以說正好挽救了這種數(shù)據(jù)的浪費,高效率的從數(shù)據(jù)里面獲取需要的東西,現(xiàn)代的數(shù)據(jù)可視化技術(shù)是把存進數(shù)據(jù)庫里非常海量的數(shù)據(jù)提取出來,以非常直接、人們直接看明白的圖像的形式展示給使用者,以方便在廣大的數(shù)據(jù)里去尋找人們自己需要的數(shù)據(jù),而且數(shù)據(jù)能一眼看出來,不需要逐條的去分析,省時省力。圖像處理、計算機輔助設(shè)計、計算機視覺及人機交互技術(shù)等多個領(lǐng)域。在2010年NASA發(fā)布了由加拿大達爾豪斯大學(xué)的研究人員AaronvanDaniela和RandallMartin將兩臺衛(wèi)星儀器監(jiān)測儀器得到的氣溶膠總量數(shù)據(jù)相加,并且與電腦模型計算出的氣溶膠垂直分布量結(jié)合在一起。1.3論文主要研究內(nèi)容及框架結(jié)構(gòu)本文主要分析了全國各個城市的空氣質(zhì)量,主要為號召大家對空氣較差的城市進行一些改善,使大家的生活環(huán)境能夠變好,而且分析一些城市空氣質(zhì)量好的原因以及地域分布,使用爬蟲對每個城市的空氣質(zhì)量數(shù)據(jù)進行獲取。同時圍繞城市空氣質(zhì)量的獲取及其分析結(jié)果可視化,進行的一系列工作主要有如下:分析pm25.in這個天氣網(wǎng)站,爬取此站一天的AQI值,然后寫入CSV文件進行行列的數(shù)據(jù)整理,然后再將CSV文件寫入數(shù)據(jù)庫。對存儲的數(shù)據(jù)進行結(jié)果分析,并將其可視化??梢暬^程將利用目前較為流行Pandas與PyEcharts工具進行組合呈現(xiàn)數(shù)據(jù)分析結(jié)果,并在一定程度上驗證數(shù)據(jù)的正確性,從多個角度分析一些空氣質(zhì)量好的城市的共同點以及原因,和一些空氣質(zhì)量差的城市的共同點及原因。本文的大概結(jié)構(gòu)如下:第1章概述介紹了對空氣質(zhì)量分析的意義,以及對搜集數(shù)據(jù)到分析數(shù)據(jù)的一些簡略介紹,還有介紹了如今數(shù)據(jù)分析日漸提升的地位。第3章主要介紹Python爬蟲的一些知識,介紹在本文使用的一些爬蟲類庫,以及對爬蟲的一些科普,讓大家認(rèn)識到使用惡意爬蟲的一些危害以及后果,對網(wǎng)絡(luò)有著更深的法律意識,本文還講到對空氣質(zhì)量爬取的一些做法,為下文可視化提供數(shù)據(jù)。第4章和第5章介紹了一些儲存數(shù)據(jù)的工具、清洗數(shù)據(jù)的工具和可視化工具,以及聚類算法介紹。針對從網(wǎng)上獲取的數(shù)據(jù)進行數(shù)據(jù)的保存、清洗并且可視化,并在可視化數(shù)據(jù)過程中討論空氣質(zhì)量好的城市的分布情況以及空氣質(zhì)量差的城市的分布規(guī)律,并且將好的城市和空氣質(zhì)量差的城市排列出來,接著分析空氣質(zhì)量差的城市所受到的污染物的影響。第6章為設(shè)計的總結(jié)與展望。總結(jié)了本文關(guān)于空氣質(zhì)量分析與可視化研究成果,并指出我這次數(shù)據(jù)分析過程中仍需解決的問題和可拓展的功能實現(xiàn)。
第2章需求分析本系統(tǒng)的目的是方便大家實時獲取各個城市的一些空氣質(zhì)量情況,來決定是否合適出行。由于新冠肺炎疫情的影響,空氣質(zhì)量的問題也應(yīng)該更加值得關(guān)注,若是空氣好,對肺部的負(fù)擔(dān)更少,讓一些有肺部問題的人們擁有更好的環(huán)境。作為一種數(shù)據(jù)分析類的系統(tǒng),它的要在內(nèi)部條件與外部條件進行需求分析,下面將分為兩個部分,一個部分為功能性需求,另一個部分為非功能性需求去分析,因為影響數(shù)據(jù)獲取的不但是程序問題,還可能包括一些網(wǎng)絡(luò)狀態(tài)等原因。2.1功能性需求分析(1)空氣質(zhì)量數(shù)據(jù)的獲取。這個功能部分主要是使用Python的requests庫去獲取pm25.in這個網(wǎng)站首頁的整個網(wǎng)頁代碼,提取出首頁的城市名字以及對應(yīng)的子鏈接,子鏈接里面就是城市的詳細(xì)AQI空氣質(zhì)量信息,通過爬蟲再次爬取每個城市的鏈接,得到空氣質(zhì)量的數(shù)據(jù),由于這個網(wǎng)站公布的是實時數(shù)據(jù),所以需要爬取前24小時空氣質(zhì)量的AQI折線圖,然后得到平均值就是這一天的空氣質(zhì)量的值。(2)數(shù)據(jù)存儲。這個功能是利用SQLAlchemy去把從網(wǎng)頁獲取到的空氣質(zhì)量數(shù)據(jù)存進數(shù)據(jù)庫中,方便保存,相比于寫進CSV文件,存進數(shù)據(jù)庫能更加的方便利用,而且也不會因為操作失誤使數(shù)據(jù)丟失。(3)數(shù)據(jù)分析的結(jié)果。該功能主要是列出前十五個當(dāng)天的空氣質(zhì)量好的城市排名以及空氣質(zhì)量差的城市,并結(jié)合一些地理分布的情況與算法分析的結(jié)果去總結(jié)規(guī)律。2.2非功能性需求分析(1)網(wǎng)絡(luò)的穩(wěn)定性。網(wǎng)絡(luò)的好壞一定程度上會影響在線數(shù)據(jù)的獲取,所以需要在一個相對穩(wěn)定的網(wǎng)絡(luò)環(huán)境下才方便對數(shù)據(jù)進行獲取。(2)容錯率要高。對于一些網(wǎng)站也暫時沒有公布出來的城市空氣數(shù)據(jù),我們需要采取異常處理,不然會使得程序一直報錯。第3章介紹BeautifulSoup與爬蟲的一些事項3.1BeautifulSoup簡介簡單來說,BeautifulSoup是Python的一個對爬蟲的數(shù)據(jù)篩選庫,最主要的功能是把網(wǎng)頁中下載下來的數(shù)據(jù)進行篩選,獲得自己所需要的數(shù)據(jù)。官方解釋如下:BeautifulSoup里面包含了非常Python方式的簡單的函數(shù)用來去標(biāo)記所想找到的一些html節(jié)點,把他們?nèi)克鸭鰜?,類似于我們在查找文檔中的關(guān)鍵字ctrl+F一樣。它是一個查找的工具,通過解析整個的文檔為使用者提供使用者所指定想要查找到的數(shù)據(jù),非常的簡單快捷,所以使用BeautifulSoup是一個非常簡單的能夠在爬取到的所有數(shù)據(jù)中篩選數(shù)據(jù)的一個模塊,一般都是從html的標(biāo)簽中查找標(biāo)簽,然后去過濾一些不必要的標(biāo)簽,從需要的標(biāo)簽里選擇數(shù)據(jù)。BeautifulSoup的一些特點是會將字符串變成Unicode編碼寫入自己函數(shù)內(nèi),輸出到用戶的電腦中則是會變成utf-8編碼。所以我們不需要去考慮我們所寫的程序的編碼方式,除非在我們輸出的字符串中沒有去指定編碼方式。這時,BeautifulSoup就不能夠去識別這個字符串的編碼方式了。所以我們就需要自己去說明它的編碼方式,讓bs64去接收。BeautifulSoup如今作為一款出色的Python解釋器,地位已經(jīng)趕上了lxml、html6lib,有著非常強勁的處理速度和提供不同的解析策略。3.2關(guān)于爬蟲的一些注意事項以及對空氣質(zhì)量數(shù)據(jù)的搜集3.2.1區(qū)分惡意爬蟲和普通爬蟲如果把互聯(lián)網(wǎng)比作一個非常大的蜘蛛網(wǎng),那么我們所使用的爬蟲就相當(dāng)于蜘蛛網(wǎng)上的蜘蛛,每天都有無數(shù)的蜘蛛(爬蟲)在互聯(lián)網(wǎng)這個大網(wǎng)中活動,獲得這些網(wǎng)上的知識。所以網(wǎng)頁爬蟲就是一種按照制作者所指定的一些命令,去自動化的獲取互聯(lián)網(wǎng)上的一些信息資源的一種程序。網(wǎng)絡(luò)爬蟲的功能是通過網(wǎng)絡(luò)的鏈接去獲取該鏈接的內(nèi)容,并且可以對獲取的網(wǎng)頁內(nèi)容做出一些處理。簡單來說就是直接獲取網(wǎng)頁的前端顯示的所有內(nèi)容,比如html之類的前端頁面,html包括一些文字內(nèi)容、圖片鏈接、其他網(wǎng)頁的鏈接。網(wǎng)絡(luò)爬蟲就像一個蜘蛛一樣,只要有url的地方,他就可以沿著url去獲取這個網(wǎng)頁的信息。這個過程與蜘蛛在自己的蜘蛛網(wǎng)上爬行非常相似,它又被稱為網(wǎng)絡(luò)爬蟲系統(tǒng)或者網(wǎng)絡(luò)蜘蛛系統(tǒng)。雖然網(wǎng)絡(luò)爬蟲對于一些研究數(shù)據(jù),想要在網(wǎng)上搜集數(shù)據(jù)去做貢獻的人提供了不小的幫助。但也因為爬蟲的善惡程度是由使用者決定的,有的不法分子想要利用爬蟲去獲取網(wǎng)站的一些不公開的數(shù)據(jù),盜取他人隱私,給這些與爬取網(wǎng)站掛鉤的公司和其他一些政府造成非常重大的損失,這是絕對惡劣的行為,甚至是違法行為,這種爬蟲就稱為惡意爬蟲。與普通爬蟲不同,普通爬蟲是獲取網(wǎng)絡(luò)上公開的數(shù)據(jù),而惡意爬蟲就去專門搜集別人的隱私數(shù)據(jù)、未公開的數(shù)據(jù),這樣就讓被人的網(wǎng)站遭受了重大損失。還有網(wǎng)站的不公開信息可能在短短的時間內(nèi)就被惡意爬蟲竊取并悄無聲息的復(fù)制到別的網(wǎng)站。網(wǎng)站的一些關(guān)鍵內(nèi)容被復(fù)制之后使一些網(wǎng)站的權(quán)重變低,然后偷取內(nèi)容的網(wǎng)站權(quán)重變高,到時候影響了原網(wǎng)站在搜索引擎中的排行,這個時候不但會使用戶訪問量越來越低,還會讓自己的廣告收益、銷量等等日漸低下。
在網(wǎng)站注冊過的用戶若被找到信息,惡意使用者會利用這一邏輯漏洞,使用他們的爬蟲惡意通過各類社工庫,還有一些社工的APP,當(dāng)惡意的使用者拿到一部分手機號后可以在社工庫去驗證這些手機號與手機號號主的身份是否匹配,然后就有很多的騷擾電話打上門來。除了很明顯的違法欺詐外,爬蟲的惡意使用者可以將數(shù)據(jù)打包出售給一些黑心的公司,讓他們做各種違法的事情,這就相當(dāng)于黑產(chǎn)行為。值得注意的是,我們在平常使用非惡意的爬蟲,也需要注意一些問題,比如別人網(wǎng)站的負(fù)載,不能為自己的效率而去強行提高線程,這樣可能會使對方網(wǎng)站因為訪問量太大而崩潰,到時候追究的是我們所使用爬蟲的人的責(zé)任,2019年就有許多因為把別人網(wǎng)站爬取崩潰,從而造成別人運營的損失,然后構(gòu)成了違法行為。3.2.2關(guān)于反爬蟲的一些介紹反爬蟲是針對爬蟲所爬取網(wǎng)頁所制定的一種防御策略,可以通過多種途徑去防止爬蟲去對網(wǎng)頁收集數(shù)據(jù),下面介紹部分反爬蟲的類型:通過UserAgentUserAgent是表示http協(xié)議瀏覽器的信息,若是使用的Python爬蟲,UserAgent則會變成Python,所以禁止帶Python頭的一些數(shù)據(jù)可以遏制一部分的爬蟲。根據(jù)用戶行為若是在一個IP內(nèi),用戶對網(wǎng)頁的訪問過多,就會被認(rèn)定為是使用了爬蟲,所以可以判斷短時間內(nèi)對同一網(wǎng)頁訪問次數(shù)過多的“用戶”判定為爬蟲,所以可以封禁一些訪問頻率過高的ip?;隍炞C碼的反爬蟲有些網(wǎng)站設(shè)置的驗證碼就是專門防止一些爬蟲無障礙的獲取到網(wǎng)頁數(shù)據(jù),所以設(shè)立了需要驗證碼,這個時候就不得不手動去輸入驗證碼讓驗證通過,這樣就可以比較好的防止爬蟲?;诘顷懙姆磁老x有些網(wǎng)站只能登陸進去才能訪問到里面的數(shù)據(jù),而過于簡單的Python爬蟲并不能選擇自動登陸,所以也可以攔截住一部分的爬蟲。3.2.3對空氣質(zhì)量以及對應(yīng)城市數(shù)據(jù)的爬取考慮到上文提到的防止違法行為,我選擇了一個比較有公開性的空氣質(zhì)量檢測網(wǎng)站pm25.in,以及不提高其線程,防止對服務(wù)器造成太大負(fù)荷。查看了html的代碼,數(shù)據(jù)來源就是pm25.in所提供的,下載手法是使用Python的requests模塊對網(wǎng)頁的html代碼進行下載,而主要爬取思路如下:1.在主頁爬取城市的pinyin,通過這個網(wǎng)站發(fā)現(xiàn),每個城市的頁面就是主站+pinyin,如圖2.1所示。2.拿到pinyin的列表之后,再通過循環(huán)去爬取每個城市的AQI(空氣質(zhì)量指數(shù))以及污染物的數(shù)值,如圖2.2所示。3.由于網(wǎng)站檢測的AQI數(shù)值是每個小時的,所以需要去爬取24小時的空氣質(zhì)量數(shù)值,然后去除以一天的24小時,得出來的AQI平均值比較有代表性,如圖2.3所示。4.還要去搜集一下空氣質(zhì)量較差的城市 圖2.1頁面前端的規(guī)律圖2.2網(wǎng)站的空氣數(shù)據(jù)圖2.3廣州24小時的空氣質(zhì)量數(shù)據(jù)爬取的效果如圖2.4所示:圖2.4爬取數(shù)據(jù)效果第4章數(shù)據(jù)處理工具與算法介紹4.1Pandas模塊介紹Pandas是Python當(dāng)中的一個拓展的庫,Pandas里面包含了大量的標(biāo)準(zhǔn)數(shù)據(jù)類型并且提供了高效操作大型數(shù)據(jù)的工具,對于數(shù)據(jù)的處理,pandas可以做到非常的高效,并且可以與多種類庫共同使用,對編程者非常友好。同時Pandas也提供了集中數(shù)據(jù)結(jié)構(gòu)供使用者使用: 1.Series:一維數(shù)組,類似于List列表的一種數(shù)據(jù)結(jié)構(gòu),但是Series與List有一些不同之處,就是Series只允許儲存相同數(shù)據(jù)類型的數(shù)據(jù),這樣有利于內(nèi)存分配同時提高運算效率。數(shù)據(jù)庫中相同列的數(shù)據(jù)也是起著同樣作用。 2.DataFrame:二維數(shù)組,是一種表格型的數(shù)據(jù)結(jié)構(gòu),簡單來說就是行與列都有一層的Series的數(shù)組,這樣組成新的二維數(shù)組。當(dāng)用戶將所需要的數(shù)據(jù)寫進Excel表格文件時,DataFrame這種數(shù)據(jù)結(jié)構(gòu)可以很方便地利用CSV文件格式創(chuàng)建Excel表格,做到了與Excel表格基本沒有任何的錄入障礙。3.Panel:三維數(shù)組,同理可以理解為DataFrame之間的嵌套。利用爬蟲獲取到空氣質(zhì)量的數(shù)據(jù)之后,可以同時將其寫入已存在的CSV表格。同時還可以使用sqlalchemy去把CVS文件寫入數(shù)據(jù)庫,方便保存并且以防丟失。4.2SQLAlchemy模塊簡介及應(yīng)用SQLAlchemy是Python的一種SQL工具包和對象關(guān)系映射器,是Python的一種ORM(ObjectRelationshipMapping)框架,而ORM是一種為了面向?qū)ο缶幊涕_發(fā)方法而產(chǎn)生的一種對象關(guān)系映射的工具,它的關(guān)系是指關(guān)系數(shù)據(jù)庫,也就是數(shù)據(jù)可以保存在數(shù)據(jù)庫當(dāng)中。當(dāng)生成一個對象時,對象可以從數(shù)據(jù)庫當(dāng)中獲取持久化的數(shù)據(jù),不像是我們運行一個程序,里面的變量參數(shù)只存在程序運行的時候,數(shù)據(jù)存儲在數(shù)據(jù)庫里是持久的,反過來,數(shù)據(jù)也可以存儲在數(shù)據(jù)庫當(dāng)中。使用SQLAlchemy的時候,可以簡化開發(fā)時候需要使用SQL語句這一步操作,可以直接思考他的代碼邏輯,從而簡化一些步驟,提高開發(fā)中的效率。SQLAlchemy提供了一種非常持久性的模式,用于數(shù)據(jù)庫訪問的時候,就顯得非常的高效率。使用SQLAlchemy的優(yōu)勢是即使開發(fā)人員不熟悉數(shù)據(jù)庫操作的語句,SQLAlchemy可以讓開發(fā)人員直接使用對象操作,從而跳過數(shù)據(jù)庫語句的操作,不用開發(fā)人員去查找數(shù)據(jù)庫語句,提高了開發(fā)的效率。而其中也有它的缺點,使用SQLAlchemy的缺點是跳過了數(shù)據(jù)庫語句操作之后,不容易進行數(shù)據(jù)庫查詢的優(yōu)化,從而可能帶來一些性能上、運行方面的損失。下面是SQLAlchemy的一些常用的參數(shù):1.create_engine:可以當(dāng)作作為一個橋梁架起數(shù)據(jù)庫與Python之間的溝通,使Python可以對數(shù)據(jù)庫進行連接,里面的數(shù)據(jù)類型為字符串,用來表示連接的信息:’數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動名稱://用戶名:密碼@需要連接主機的ip(如果是本機則是localhost或者):端口號/數(shù)據(jù)庫名’2.sessionmaker:生成一個數(shù)據(jù)庫的會話類。這個類相當(dāng)于一個數(shù)據(jù)庫連接的session,向數(shù)據(jù)庫申請一個會話,同時這個類還會記錄一些查詢的數(shù)據(jù),并且可以控制執(zhí)行SQL語句的時間。當(dāng)用這個類拿到一個數(shù)據(jù)庫返回的session之后,就可以用這個session對數(shù)據(jù)庫進行增刪改查。4.3關(guān)于PyechartsPyecharts是Python與Echarts交接而成,用于生成Echarts圖表的一個類庫。而Echarts是由百度研發(fā),一個可以生成生動,直觀,可以交互并且可以高度個性化定制的web數(shù)據(jù)可視化圖表的可視化庫。簡單來說Echarts有著超越許多同行的一些優(yōu)勢,可視化出來的數(shù)據(jù)圖十分的美觀且炫酷。Pyecharts就是在Echarts的基礎(chǔ)上的一個Python類庫。值得注意的是,Pyecharts分為兩個版本,一個v0.5x,另一個為v1,兩個版本并不兼容,而且v0.5x僅僅支持Python2.7,Python3.4+,而v1的版本僅支持3.6+的版本,導(dǎo)入模塊的方式也不完全相同,所以Python版本限制了Pyecharts的版本。Pyecharts的強大之處在于可以導(dǎo)入全國甚至全球的地圖包,然后對其進行數(shù)據(jù)可視化,清楚的了解地區(qū)的特點。順帶一提,Pyecharts是Python的一個拓展庫,需要用pip去自行下載。4.4K-means算法介紹K-means算法是一種基于坐標(biāo)與距離的一種聚類算法,聚類算法就是將數(shù)據(jù)中分散的樣本分類,將每個特征相似的樣本都分為一組,在K-means算法中,這種組稱為“簇”。算法原理是先在樣本中做k個隨機點,作為“簇”的中心點,然后計算樣本到這些“簇”的距離,對于樣本點,距離哪個“簇”最近,就歸類在這個“簇”內(nèi),分完樣本點后。繼續(xù)在這些“簇”中重新選一個中心點,繼續(xù)計算離中心點的距離,繼續(xù)劃分“簇”,直到中心點的變化很小為止。第5章數(shù)據(jù)的可視化介紹及數(shù)據(jù)分析數(shù)據(jù)可視化是指利用圖形、動畫等更加形象的一些表達方式對數(shù)據(jù)進行體現(xiàn),在如今的大數(shù)據(jù)時代,每秒鐘就有無數(shù)條數(shù)據(jù),而一條條的去看這些數(shù)據(jù),不但枯燥,而且又難以記住,當(dāng)使用了數(shù)據(jù)可視化,就能將數(shù)據(jù)以圖形或者動畫的方式呈現(xiàn)出來,到時候我們可以使用圖形記憶去記住這些數(shù)據(jù),而不是將數(shù)字去背下來,這樣的數(shù)據(jù)更容易去使用和理解?,F(xiàn)在數(shù)據(jù)可視化應(yīng)用到許多方面,在新聞傳播的行業(yè)中,數(shù)據(jù)可視化不但是一種非常合理的呈現(xiàn)方式,節(jié)省大家的理解,只需幾秒鐘就可以看懂圖中的數(shù)據(jù)所想表達的意思,還是帶有更強的互動性的一張信息圖表,這就說明了數(shù)據(jù)可視化的化繁為簡的一個優(yōu)點,并且增加信息的可讀性和趣味性。信息的表達形式和手中閱讀信息時候的受歡迎度、記憶度和參與度存在一定的關(guān)系,可視化的敘事方式不僅降低了受眾的獲知知識的成本,而且提高了一些用戶對于這些信息的記憶效率和給其他人分享的欲望,這就為數(shù)據(jù)的傳播提供了非常良好的途徑。有科學(xué)研究表明,注視記錄長度與喜愛度之間存在非常正相關(guān)的關(guān)系。用視覺元素去快速抓住觀眾們的眼球,營造不同的興趣點,這樣來實現(xiàn)自己所喜歡的“悅讀”方式,進而延長信息消費的過程,已然成為當(dāng)下各類媒體爭取受眾的制勝之策。一般地,在人們對空氣質(zhì)量查看的過程中,會著重關(guān)注一些空氣質(zhì)量好的城市所處的位置、空氣質(zhì)量差的城市污染物的排放量、以及空氣質(zhì)量好的城市的排行。而且有些人們打算去某些城市旅游的,自己又不幸?guī)в羞^敏性鼻炎,這些空氣質(zhì)量對他們來說影響更加的大,使他們不得不關(guān)注自己意向去到的城市的空氣質(zhì)量情況,以防患上更嚴(yán)重的呼吸類疾病。對于數(shù)據(jù)的可視化,本著淺顯易懂的原則,本文對于以下若干問題做出了圖標(biāo)化處理,即進一步對所獲取的數(shù)據(jù)進行可視化處理。列出空氣質(zhì)量最好的前十五個城市列出空氣質(zhì)量最壞的前十五個城市以地區(qū)分析空氣質(zhì)量好的城市的一些分布特點以地區(qū)分析空氣質(zhì)量差的城市的一些分布特點將污染物占比進行可視化使用K-means算法分析污染情況相似的城市5.1空氣質(zhì)量最好的前15個城市排名展示根據(jù)從網(wǎng)上獲取到24小時的空氣質(zhì)量數(shù)據(jù)的平均值,空氣質(zhì)量最好的前十五個城市如圖5.1所示:圖5.1空氣質(zhì)量最好的前十五個城市圖5.1中顯示全國空氣質(zhì)量最好的前十五個城市,其中旅游勝地三亞高踞榜首,緊隨其后的湛江、陽江兩個城市也是旅游的大城市,有著非常豐富的水資源,綠化方面做得非常好,從整張圖的角度看來,這15個城市都處于AQI值35以下,在空氣質(zhì)量的判斷條件當(dāng)中屬于非常優(yōu)秀的水平。從省份分析,在空氣質(zhì)量最好的前十五個城市當(dāng)中,廣東省所占據(jù)的城市比例最多,有湛江、陽江、茂名、汕尾、韶關(guān)五個城市,共占這十五個城市的三分之一,由地理環(huán)境所知,廣東的水資源非常豐富,降雨量也非常多,表明空氣質(zhì)量受到水的影響非常大。從城市的發(fā)達程度看來,以上十五個城市全部位列三線城市及以下,空氣好的原因可能為經(jīng)濟發(fā)展比不上一二線城市的水平,所以工業(yè)污染較少,在城市街道的出行車比較少,排放的廢氣少,使得空氣維持在了一個較好的水平,在一定程度上說明了經(jīng)濟與環(huán)境的關(guān)系。5.2空氣質(zhì)量最差的前15個城市展示根據(jù)從網(wǎng)上獲取到24小時的空氣質(zhì)量數(shù)據(jù)的平均值,空氣質(zhì)量最差的前十五個城市如圖5.2所示:圖5.2空氣質(zhì)量差的前十五個城市從區(qū)域角度分析,前五名空氣差的城市都屬于新疆維吾爾自治區(qū),具體原因為沙塵暴的影響,因為新疆降雨量太少,導(dǎo)致沙塵容易揚起,到處都是顆粒物,并且在新疆有許多熱電廠、煤化工廠、硅鐵、石油化工廠、水泥廠等重污染的工廠,還有很多附屬廠;加上其它燃煤鍋爐、家里的燃煤爐子、在街邊飯店的烤肉爐。數(shù)量驚人,外界環(huán)境的條件加上自己使用重污染的一些物資,導(dǎo)致了這些城市空氣質(zhì)量這么差。由數(shù)據(jù)可以知道,有三個屬于新疆的城市達到了驚人的500AQI值,這個屬于嚴(yán)重污染的范圍,后面的幾個城市污染程度也在150以上,都屬于中度污染以上的級別。5.3以地區(qū)分析城市空氣質(zhì)量好的特點由圖5.3可知,空氣質(zhì)量好的地區(qū)大多數(shù)分布在空氣濕度較高的地方比如:長江以南的城市和四川盆地,其中還有西部和東北部的豐水區(qū)。在長江以南的地方尤為密集。長江以南的地區(qū)主要以亞熱帶季風(fēng)氣候為主,降水量較多,空氣濕潤。主要發(fā)展輕工業(yè),相對于重工業(yè),輕工業(yè)的污染比較小。降水能夠有效吸收、淋洗空氣中的污染物。因此這些地區(qū)的空氣的自我凈化能力較強。圖5.3空氣質(zhì)量最好的城市分布圖5.4以地區(qū)分析城市空氣質(zhì)量差的特點如圖5.4所示,空氣質(zhì)量不好的地方多數(shù)分布在華北地區(qū)和新疆的荒漠地區(qū)。這些地區(qū)的主要特點是降水少,氣候干燥。這些地區(qū)的氣候是溫帶季風(fēng)性氣候和溫帶大陸性氣候,降水少空氣干燥,風(fēng)沙比較多。因此這些地區(qū)的空氣自我凈化能力弱。由圖所見,空氣質(zhì)量差的密集區(qū)在黃河中下游地區(qū)。這部分地區(qū)在冬天的時候燃煤供暖,會產(chǎn)生有害氣體和粉塵,其次該地區(qū)是工業(yè)密集區(qū),石油,煤化,冶金工業(yè)發(fā)達,人類活動和工業(yè)生產(chǎn)對空氣質(zhì)量影響大。圖5.4空氣質(zhì)量差的城市分布圖5.5污染物占比的可視化圖5.5是對存在污染物的城市進行歸納,然后將這些污染物的占比可視化出來。由圖中我們可以看到,存在污染物的城市中,收到PM10影響的城市是最多的,其次是PM2.5,這兩種顆粒物加起來占污染物的90%以上,說明當(dāng)前要對空氣質(zhì)量的提高,仍需首要解決的還是顆粒物的問題。圖5.5空氣質(zhì)量與污染物圖5.6通過K-means聚類算法的分析結(jié)果要使用K-means算法分析,首先要對爬取到的數(shù)據(jù)進行標(biāo)準(zhǔn)化,同比例縮小,使得特征相似的城市落入一個小的特定區(qū)間內(nèi),消除奇異樣本的影響。標(biāo)準(zhǔn)化之后,就是將這些數(shù)據(jù)進行聚類算法計算,是它們特點相似的歸為一類。具體流程圖如5.6所示圖5.6K-means計算的流程圖下面將著重分析受到污染的城市的“簇”。根據(jù)樣本的標(biāo)準(zhǔn),我把這些城市分為5個“簇”,如圖5.7所示,右邊是每個簇包含的城市數(shù)量。圖5.7“簇”內(nèi)城市的數(shù)量由圖5.7和5.8,第一聚類有73座城市,代表城市有白銀、包頭等,群體特點為:所有污染物氣體均大于城市平均水平,但是又不算高太多,可采取溫和控制方法,對工業(yè)生產(chǎn)流程細(xì)節(jié)進行一些改良,減少排放。圖5.8第一聚類城市特點由圖5.7和5.8,第二聚類有31座城市,代表城市有安陽、濱州、常熟等,群體特點為:二氧化氮、一氧化碳排放量明顯大于其他城市群體,空氣質(zhì)量也偏差,這類城市可以減少氮氧化物的排放,建議使用清潔能源。圖5.9第二聚類城市特點由圖5.7和圖5.10,第四聚類有10座城市,代表城市有大同、和田地區(qū)等,所代表的群體特征為PM10、PM2.5的排放非常嚴(yán)重。可吸入顆粒物在環(huán)境空氣中持續(xù)的時間很長,對人體健康和大氣能見度影響都很大。通常在汽車在沙地?fù)P起的沙塵,被風(fēng)卷起的塵土,還有一些重工業(yè)的污染。圖5.10第四聚類城市特點第6章總結(jié)與展望6.1總結(jié)主要實現(xiàn)了對pm25.in的城市空氣質(zhì)量和其污染物的搜集,并將其獲取到的數(shù)據(jù)存儲進入數(shù)據(jù)庫。并且使用pandas模塊去將這些數(shù)據(jù)從數(shù)據(jù)庫中讀取出來,然后使用matplolib和pyecharts進行可視化。在獲取數(shù)據(jù)過程中,用了比較多的時間花在了獲取整個網(wǎng)站的全部城市空氣質(zhì)量以及首要污染物的實時數(shù)據(jù),并且在該網(wǎng)站的24小時的空氣質(zhì)量數(shù)據(jù)比較難以獲取,難點主要在于對全天AQI的獲取。我在這次項目中完成了以下的工作:(1) 對空氣質(zhì)量網(wǎng)站的全部城市的空氣質(zhì)量進行了數(shù)據(jù)爬取,并且配置了數(shù)據(jù)庫與Python進行連接,在這個過程中遇到了一些配置上的錯誤,后來發(fā)現(xiàn)需要下載pymysql的類庫去制造一個依賴環(huán)境。(2) 對獲取到的城市空氣質(zhì)量數(shù)據(jù)存放進數(shù)據(jù)庫并使用pandas取出來,方便可視化處理。對于存放到數(shù)據(jù)庫的數(shù)據(jù)可視化,本篇文章使用了數(shù)據(jù)可視化工具matplolib和pyecharts進行數(shù)據(jù)排名展示和對數(shù)據(jù)的空間分布展示,并結(jié)合各城市的一些氣候情況,污染物排放量,對這些城市的空氣質(zhì)量進行一些可視化分析和數(shù)據(jù)上的分析。本次數(shù)據(jù)分析對多個城市進行分析后,在幾個角度得到一些結(jié)論:(1) 在展示的空氣質(zhì)量最好的15個城市中,廣東的城市占了最大的一部分,而且這些城市大部分是水資源多的地區(qū),有的沿海地區(qū)空氣環(huán)境更好,而且這15個城市都是三線城市及以下的城市,說明水資源同樣豐富的情況下,經(jīng)濟不太發(fā)達的城市要比發(fā)達的城市空氣質(zhì)量好。(2) 在展示的空氣質(zhì)量最差的15個城市中,前五名空氣差的城市都屬于新疆維吾爾自治區(qū),具體原因為沙塵暴的影響,因為新疆降雨量太少,導(dǎo)致沙塵容易揚起,到處都是顆粒物,并且根據(jù)一些地方的資料介紹,在新疆有許多熱電廠、煤化工廠、硅鐵、石油化工廠、水泥廠等重污染的工廠,還有很多其他污染嚴(yán)重的附屬廠;加上其他家里用戶所使用的燃煤鍋爐、家里的燃煤爐子、在街邊飯店的烤肉爐,這樣的排放加上自然環(huán)境就導(dǎo)致了空氣質(zhì)量的惡劣。(3) 從地理位置分布規(guī)律看,空氣質(zhì)量好的地區(qū)大多數(shù)分布在空氣濕度較高的地方比如:長江以南的城市和四川盆地,其中還有西部和東北部的豐水區(qū)。在長江以南的地方尤為密集。長江以南的地區(qū)主要以亞熱帶季風(fēng)氣候為主,降水量較多,空氣濕潤。主要發(fā)展輕工業(yè),相對于重工業(yè),輕工業(yè)的污染比較小。降水能夠有效吸收、淋洗空氣中的污染物。因此這些地區(qū)的空氣的自我凈化能力較強。(4) 從地里位置分布規(guī)律看,空氣質(zhì)量不好的地方多數(shù)分布在華北地區(qū)和新疆的荒漠地區(qū)。這些地區(qū)的主要特點是降水少,氣候干燥。這些地區(qū)的氣候是溫帶季風(fēng)性氣候和溫帶大陸性氣候,降水少空氣干燥,風(fēng)沙比較多。因此這些地區(qū)的空氣自我凈化能力弱。由圖所見,空氣質(zhì)量差的密集區(qū)在黃河中下游地區(qū)。這部分地區(qū)在冬天的時候燃煤供暖,會產(chǎn)生有害氣體和粉塵,其次該地區(qū)是工業(yè)密集區(qū),石油,煤化,冶金工業(yè)發(fā)達,人類活動和工業(yè)生產(chǎn)對空氣質(zhì)量影響大。(5) 在首要污染物占比角度看,存在污染物的城市中,收到PM10影響的城市是最多的,其次是PM2.5,這兩種顆粒物加起來占污染物的90%以上,說明當(dāng)前要對空氣質(zhì)量的提高,仍需首要解決的還是顆粒物的問題。(6)通過聚類分析算法的結(jié)果看,分成的五個聚類中,有三個聚類的空氣質(zhì)量是偏差的,而且這些聚類的污染物排放規(guī)律也不一樣,可以通過聚類中存在的問題,對情況相似的城市進行污染物治理,增加治理的效率。6.2展望通過本文的研究,可以實現(xiàn)對我國城市的空氣質(zhì)量的數(shù)據(jù)獲取和數(shù)據(jù)可視化研究。對理解Python爬蟲、數(shù)據(jù)儲存數(shù)據(jù)庫、以及對數(shù)據(jù)處理方式的理解有了更為深刻的印象。Python作為一種腳本編程語言,在爬蟲、數(shù)據(jù)分析上的優(yōu)勢確實比其他編程語言要好一些,獲取數(shù)據(jù)的主要來源也是依靠于爬蟲。但由于一些原因,本課題的研究還有許多不足的地方,主要體現(xiàn)在以下的方面:因為空氣質(zhì)量是和季節(jié)有著比較大的關(guān)系的,所以本次數(shù)據(jù)分析的分布規(guī)律僅限于在這個季度的天氣當(dāng)中,到了夏天說不定規(guī)律就有一定的偏差性。因為考慮到爬蟲對服務(wù)器的影響,我并沒有提高任何線程,怕給服務(wù)器帶來壓力,在爬取全國的375個城市中,數(shù)據(jù)的處理需要幾分鐘到十幾分鐘的時間,這個是比較慢的。參考文獻[1] 周勇.空氣質(zhì)量監(jiān)測分析系統(tǒng)的設(shè)計與實現(xiàn)[J].電子世界,2019(18):164-165[2] 尹小妹,田國祥,王天一,耿輝,賀海蓉,張勇,呂軍.Python爬蟲獲取天氣數(shù)據(jù)與兒童肺部疾病門診就診率相關(guān)性分析[J].中國循證心血管醫(yī)學(xué)雜志,2019,11(09):1047-1049+1061.[3] 張濤.空氣質(zhì)量分析系統(tǒng)的設(shè)計與實現(xiàn)[D].河北科技大學(xué),2016
致謝 本論文能順利完成,首先應(yīng)感謝的是我的導(dǎo)師譚康裕老師,是他給予我很大的幫助,給我指導(dǎo)了分析數(shù)據(jù)的方向和思路,然后還有我的一些同學(xué),是他們在調(diào)試數(shù)據(jù)庫的時候給了我很大的幫助,讓我在錯誤中成功,對數(shù)據(jù)庫進行連接,也幫助我找到了pyechart與Python版本不兼容的問題。最后還要感謝我的父母,在這次論文中給了我很大的支持。 最后再次謝謝幫助我的所有人,因為你們,我的論文才能順利的完成!
附錄具體的代碼如下:爬取空氣質(zhì)量的信息importrequests
frombs4importBeautifulSoup
importcsv
importre
defget_city_aqi(city_list):
'''
獲取城市AQI
'''
url='http://pm25.in/'+city_list
r=requests.get(url,timeout=30)
soup=BeautifulSoup(r.text,'lxml')
div_list=soup.find_all('div',{'class':'span1'})
div_list2=soup.find('div',{'class':'primary_pollutant'}).text.strip()
pollutant=div_list2.replace('','')
p2=pollutant.replace('首要污染物:','')
p3=p2.strip("\n")
ifp3=='':
p3='無'
data=r"data:(.*?),\n"
dat=re.findall(data,r.text)
datas=dat[0]
datass=datas.split(",")
datass[0]=datass[0].replace('[','')
datass[-1]=datass[-1].replace(']','')
datas=[int(i)foriindatass]
he=sum(datas)/24
city_aqi=[p3]+[he]
foriinrange(8):
div_content=div_list[i]
caption=div_content.find('div',{'class':'caption'}).text.strip()
value=div_content.find('div',{'class':'value'}).text.strip()
city_aqi.append(value)
returncity_aqi
defget_all_cities():
'''
獲取所有城市的url
'''
url='http://pm25.in/'
city_list=[]
r=requests.get(url,timeout=30)
soup=BeautifulSoup(r.text,'lxml')
city_div=soup.find_all('div',{'class':'bottom'})[1]
city_link_list=city_div.find_all('a')
forcity_linkincity_link_list:
city_name=city_link.text
city_pinyin=city_link['href'][1:]
city_list.append((city_name,city_pinyin))
returncity_list
defmain():
city_list=get_all_cities()
header=['City','首要污染物','AQI/24h','AQI','PM2.5/1h','PM10/1h','C0/1h','NO2/1h','03/1h','03/8h','SO2/1h']
withopen('aqi327.csv','w',encoding='utf-8',newline='')asf:
writer=csv.writer(f)
writer.writerow(header)
fori,cityinenumerate(city_list):
try:
if(i+1)%10==0:
print('已處理{}條記錄.(共{}條記錄)'.format(i+1,len(city_list)))
city_name=city[0]
city_pinyin=city[1]
city_aqi=get_city_aqi(city_pinyin)
#print(city_name,city_aqi)
row=[city_name]+city_aqi
print(row)
writer.writerow(row)
except:
print()
if__name__=='__main__':
main()收集到的數(shù)據(jù)寫入數(shù)據(jù)庫:importtornadoastornado
fromsqlalchemyimportcreate_engine
fromsqlalchemy.ormimportsessionmaker
importpandasaspd
DB_CONNECT_STRING='mysql+pymysql://root:123456@localhost/mysql'
engine=create_engine(DB_CONNECT_STRING,echo=True)
DB_Session=sessionmaker(bind=engine)
print(engine)
df=pd.read_csv("aqi327.csv",sep=',')
df.to_sql('327day',engine,index=False)
print('成功!')對空氣質(zhì)量城市的前十五名展示:
fromsqlalchemyimportcreate_engine
fromsqlalchemy.ormimportsessionmaker
importpandasaspd
importmatplotlib.pyplotasplt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
DB_CONNECT_STRING='mysql+pymysql://root:123456@localhost/mysql'
engine=create_engine(DB_CONNECT_STRING,echo=True)
DB_Session=sessionmaker(bind=engine)
print(engine)
sql="select*from327day"
df=pd.read_sql_query(sql,engine)
clean_aqi_data=df[df['AQI/24h']>0]
top50_cities=clean_aqi_data.sort_values(by=['AQI/24h']).head(15)
print('空氣質(zhì)量最好的15個城市:')
print(top50_cities)
bad10_cities=clean_aqi_data.sort_values(by=['AQI/24h'],ascending=False).head(15)
print('空氣質(zhì)量最差的15個城市:')
print(bad10_cities)
top50_cities.plot(kind='bar',x='City',y='AQI/24h',title='空氣質(zhì)量最好的50個城市',figsize=(20,10))
plt.savefig('top50_aqi.png')
plt.show()對空氣質(zhì)量好的城市的地域分布:fromimpimportreload
fromsqlalchemyimportcreate_engine
fromsqlalchemy.ormimportsessionmaker
importpandasaspd
importmatplotlib.pyplotasplt
frompyechartsimportGeo
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
DB_CONNECT_STRING='mysql+pymysql://root:123456@localhost/mysql'
engine=create_engine(DB_CONNECT_STRING,echo=True)
DB_Session=sessionmaker(bind=engine)
sql="select*from327day"
df=pd.read_sql_query(sql,engine)
clean_aqi_data=df[df['AQI/24h']>0]
bad50_cities=clean_aqi_data.sort_values(by=['AQI/24h'],ascending=False).head(50)
city=bad50_cities["City"]
aqi=bad50_cities["AQI/24h"]
geo=Geo("空氣質(zhì)量",title_color="#fff",title_pos="center",width=800,height=600,background_color="#404a59")
geo.add(
"",
city,
aqi,
visua_range=[0,200],
visua_text_color="#fff",
symbol_size=15,
is_visualmap=True,
)
geo.show_config()
geo.render(path="b327.html")
餅圖:fromimpimportreload
fromsqlalchemyimportcreate_engine
fromsqlalchemy.ormimportsessionmaker
importpandasaspd
importmatplotlib.pyplotasplt
frompyechartsimportPie
DB_CONNECT_STRING='mysql+pymysql://root:123456@localhost/mysql'
engine=create_engine(DB_CONNECT_STRING,echo=True)
DB_Session=sessionmaker(bind=engine)
#print(engine)
#session=DB_Session()
sql="select*from517day"
df=pd.read_sql_query(sql,engine)
#print(df)
df1=df[df['首要污染物']!='無']
df=df1[df1['AQI/24h']>0]
p=df['首要污染物'].value_counts()
p_list=['顆粒物(PM10)','顆粒物(PM2.5)','臭氧8小時','顆粒物(PM2.5),顆粒物(PM10)']
#print(p)
#num=[p]
wu_list=[]
ci_list=[]
'''
city=df['City']
city_list=list(city.values)
#print(city_list)
aqi=df['AQI/24h']
aqi_list=list(aqi.values)
#print(aqi_list)
data=[]
foriinrange(len(aqi_list)):
data.append((city_list[i],aqi_list[i]))
#print(data)
data=pd.DataFrame(data)
data.columns=['city','aqi']
#print(data)
city=data['city']
aqi=data['aqi']
'''
z=[list(z)forzinzip(p.index,p)]
print(z)
foriinz:
wu=i[0]
ci=i[1]
wu_list.append(wu)
ci_list.append(ci)
pie=Pie("污染物占比可視化")
pie.add("",wu_list,ci_list,is_label_show=True)
pie.render('pie1.html')聚類分析:fromsklearnimportpreprocessing
fromsqlalchemyimportcreate_engine
fromsqlalchemy.ormimportsessionmaker
importpandasaspd
fromsklearn.clusterimportKMeans
DB_CONNECT_STRING='mysql+pymysql://root:123456@localhost/mysql'
engine=create_engine(DB_CONNECT_STRING,echo=True)
DB_Session=sessionmaker(bind=engine)
#print(engine)
#session=DB_Session()
sql="select*from516day"
data=pd.read_sql_query(sql,engine)
#設(shè)置最大顯示
#讀取數(shù)據(jù)
head=data.head(5)
print(head)#查看前五行
#選取要標(biāo)準(zhǔn)化的列
filtered_columns=["AQI/24h","AQI","PM2.5/1h","PM10/1h","C0/1h","NO2/1h","03/1h","03/8h","SO2/1h"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)裝作業(yè)知識試題含答案含穿護套操作及問題處理測試卷有答案
- 2025年單招面試奇葩試題及答案
- 氣象知識競賽試卷及答案
- 合理用藥知識試卷及答案
- 化學(xué)與環(huán)境(有機污染)聯(lián)系試題
- 化學(xué)批判性(評價實驗方案)思維測評試題
- 商業(yè)素養(yǎng)知識題庫及答案
- 2025年高考物理“選擇題專練”速度準(zhǔn)確率試題(二)
- 2025年高考文科綜合試卷及答案
- 工業(yè)設(shè)備考試題及答案
- 項目經(jīng)理年中會議匯報
- 小學(xué)生美容知識培訓(xùn)內(nèi)容課件
- 7-函數(shù)的連續(xù)性省公開課一等獎全國示范課微課金獎?wù)n件
- 2024年北控水務(wù)集團招聘筆試真題
- 2025年盤錦市總工會面向社會公開招聘工會社會工作者52人考試參考試題及答案解析
- 2025年具有良好的商業(yè)信譽和健全的財務(wù)會計制度承諾書范本
- 2025年秋人教版數(shù)學(xué)四年級上學(xué)期第一次月考測試卷【附答案】
- 2025年全國高校輔導(dǎo)員素質(zhì)能力大賽基礎(chǔ)知識測試卷及答案(共五套)
- 酒類釀造產(chǎn)品品質(zhì)追溯體系建設(shè)方案
- 電焊車間衛(wèi)生管理辦法
- 書店服務(wù)禮儀培訓(xùn)課件
評論
0/150
提交評論