国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】python天氣數(shù)據(jù)抓取與數(shù)據(jù)分析(源碼+論文)【獨一無二】

這篇具有很好參考價值的文章主要介紹了【Python】python天氣數(shù)據(jù)抓取與數(shù)據(jù)分析(源碼+論文)【獨一無二】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言


??博__主??:米碼收割機
??技__能??:C++/Python語言
??公眾號??:測試開發(fā)自動化【獲取源碼+商業(yè)合作】
??榮__譽??:阿里云博客專家博主、51CTO技術博主
??專__注??:專注主流機器人、人工智能等相關領域的開發(fā)、測試技術。


python天氣數(shù)據(jù)抓取與數(shù)據(jù)分析(源碼+論文)【獨一無二】



一、項目概述

本項目包括四個核心部分:數(shù)據(jù)爬取、數(shù)據(jù)存儲、數(shù)據(jù)分析和數(shù)據(jù)可視化。首先,利用Python編寫的網(wǎng)絡爬蟲從專業(yè)的歷史天氣網(wǎng)站上爬取大連市從2011年至2023年的天氣數(shù)據(jù),包括日期、最高氣溫、最低氣溫和天氣狀況等信息。爬取過程中應用了requests庫來模擬瀏覽器請求和lxml庫來解析HTML文檔,確保了數(shù)據(jù)的準確性和完整性。接著,將爬取到的數(shù)據(jù)存儲在兩個CSV文件中,并利用pymysql庫將數(shù)據(jù)導入MySQL數(shù)據(jù)庫,便于后續(xù)的數(shù)據(jù)處理和分析。在數(shù)據(jù)分析階段,使用pandas庫對CSV中的數(shù)據(jù)進行讀取和處理,計算出如每年的平均氣溫、最高氣溫的日期等關鍵統(tǒng)計信息。最后,利用pyecharts庫將分析結果以圖表的形式進行可視化展示,生成了五種圖表:各類天氣所占比例的餅圖、每年最高氣溫的日期折線圖、每年平均氣溫的柱狀圖、最高氣溫與最低氣溫的散點圖和最高氣溫分布的箱線圖。


二、項目環(huán)境需求

  • 開發(fā)環(huán)境:Python3.7
  • 運行系統(tǒng):Windows
  • 軟件:Pycharm

三、數(shù)據(jù)庫設計

1)數(shù)據(jù)庫設計概述

本項目的數(shù)據(jù)庫設計關鍵在于有效地組織和存儲從網(wǎng)上爬取的大連市歷史天氣數(shù)據(jù)。為了實現(xiàn)這一目標,設計了兩個主要的數(shù)據(jù)表:weather_summary和daily_weather,以及相應的字段來存儲和索引數(shù)據(jù)。這些設計考慮到了數(shù)據(jù)的完整性、查詢效率和易于理解性。

weather_summary 表:
此表用于存儲每個月的天氣摘要信息,包括城市名、年份、月份以及對應的網(wǎng)頁URL。
字段設計:

  • city (VARCHAR(255)):城市名稱,存儲城市名,如“大連”。
  • year (INT):年份,存儲數(shù)據(jù)所屬的年份。
  • month (INT):月份,存儲數(shù)據(jù)所屬的月份。
  • url (VARCHAR(255)):URL地址,存儲爬取該月數(shù)據(jù)的網(wǎng)頁鏈接。

這個表有助于快速定位某個特定時間段的天氣數(shù)據(jù)來源和基本信息。

daily_weather 表:
此表更加詳細,用于存儲每天的天氣數(shù)據(jù),包括城市、日期、最高氣溫、最低氣溫和天氣狀況。
字段設計:

  • city (VARCHAR(255)):城市名稱。
  • date_time (DATE):日期,存儲每條記錄對應的具體日期。
  • high (INT):最高氣溫,存儲當天的最高氣溫值。
  • low (INT):最低氣溫,存儲當天的最低氣溫值。
  • weather (VARCHAR(255)):天氣,存儲當天的天氣情況描述。
    該表的設計允許進行詳細的日常天氣數(shù)據(jù)分析,如溫度變化、極端天氣事件等。

關注公眾號,回復 “天氣數(shù)據(jù)抓取” 獲取源碼

2)邏輯結構設計(E-R圖)

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

3)物理結構設計數(shù)據(jù)表

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言


四、數(shù)據(jù)獲取實現(xiàn)

4.1 網(wǎng)絡請求

使用requests庫發(fā)起HTTP GET請求到目標網(wǎng)站。這里的目標網(wǎng)站是以https://lishi.xxx.com/xxx/YYYYMM.html格式的URL,其中YYYY和MM分別代表年份和月份。
為了避免被網(wǎng)站服務器識別為爬蟲,代碼中設置了請求頭headers,其中包含一個User-Agent,模仿常見瀏覽器的身份。

4.2 數(shù)據(jù)解析

使用lxml庫對響應的HTML內容進行解析。lxml是一個強大的庫,可以處理HTML和XML文檔,支持XPath查詢語言,用于提取HTML文檔中的數(shù)據(jù)。
代碼中利用etree.HTML(resp.text)將獲取的HTML文本轉換成了lxml的HTML對象,方便后續(xù)使用XPath進行數(shù)據(jù)提取。

4.3 提取具體數(shù)據(jù)

通過XPath定位HTML文檔中存儲天氣數(shù)據(jù)的部分,具體是尋找類名為thrui的ul元素下的所有l(wèi)i元素。對于每個li元素,代碼進一步提取了日期(date_time)、最高氣溫(high)、最低氣溫(low)和天氣狀況(weather)。
數(shù)據(jù)清洗:提取的氣溫數(shù)據(jù)中包含了攝氏度符號(℃),代碼中通過字符串操作去除這個符號,只保留溫度的數(shù)值部分。
主要代碼如下:

   weather_info = []   # 新建一個列表,將爬取的每月數(shù)據(jù)放進去
   # 請求頭信息:瀏覽器版本型號,接收數(shù)據(jù)的編碼格式
   headers = {
       # 必填,不填拿不到數(shù)據(jù)
       'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
   }
   # 請求 接收到了響應數(shù)據(jù)
   resp = requests.get(url, headers=headers)
   # 數(shù)據(jù)預處理
   resp_html = etree.HTML(resp.text)
   # xpath提取所有數(shù)據(jù)
   resp_list = resp_html.xpath("http://ul[@class='thrui']/li")
   # for循環(huán)迭代遍歷

五、數(shù)據(jù)存儲

5.1. CSV文件存儲

在項目中,CSV文件存儲是數(shù)據(jù)管理的重要環(huán)節(jié),利用Python的標準庫csv實現(xiàn)。這一過程首先通過open()函數(shù)打開或創(chuàng)建一個CSV文件,如dalian_weather.csv,以便寫入數(shù)據(jù)。這種文件格式的普遍兼容性使其成為數(shù)據(jù)共享和輕量級存儲的理想選擇。在寫入數(shù)據(jù)之前,通過csv.writer()函數(shù)創(chuàng)建一個寫入器對象,它是后續(xù)所有CSV操作的核心。

?????? 關注公眾號,回復 “天氣數(shù)據(jù)抓取” 獲取源碼??????文章來源地址http://www.zghlxwxcb.cn/news/detail-755230.html

weathers = []
message = []
for year in ['2023', '2022', '2021', '2020', '2019', '2018', '2017', '2016', '2015', '2014', '2013', '2012', '2011']:
   # for循環(huán)生成有順序的1-12
   for month in range(1, 13):
       try:
           # ... 忽略 ...
           urls = {
               f'https://xxx.xxx.com/xxx/{weather_time}.html': '大連'
           }
           for url, city in urls.items():
               # 爬蟲獲取這個月的天氣信息
               weather = getWeather(city, url)
               # 存到列表中
               weathers.append(weather)
               message.append([city, year, month, url])
       except Exception as e:
           continue
   print(weathers)
   print(message)


# 數(shù)據(jù)寫入(一次性寫入)
with open("dalian_weather.csv", "w", newline='') as csvfile:
   writer = csv.writer(csvfile)
   # 先寫入列名:columns_name 日期 最高氣溫 最低氣溫  天氣
   writer.writerow(["城市", "日期", "最高氣溫", "最低氣溫", '天氣'])
   # 一次寫入多行用writerows(寫入的數(shù)據(jù)類型是列表,一個列表對應一行)
   writer.writerows([list(day_weather_dict.values()) for month_weather in weathers for day_weather_dict in month_weather])


# 數(shù)據(jù)寫入(一次性寫入)
with open("dalian_weather_message.csv", "w", newline='') as csvfile:
   writer = csv.writer(csvfile)
   # 先寫入列名:columns_name 日期 最高氣溫 最低氣溫  天氣
   writer.writerow(["城市", "年份", "月份", "url"])
   # 一次寫入多行用writerows(寫入的數(shù)據(jù)類型是列表,一個列表對應一行)
   writer.writerows(message)

5.2 SQL數(shù)據(jù)庫存儲

SQL數(shù)據(jù)庫存儲部分是項目中處理和維護大規(guī)模數(shù)據(jù)集的關鍵。使用pymysql庫與MySQL數(shù)據(jù)庫建立連接,此過程涉及數(shù)據(jù)庫的基本操作,如創(chuàng)建表格、插入數(shù)據(jù)和事務管理。在數(shù)據(jù)存儲的初始階段,代碼通過執(zhí)行SQL語句創(chuàng)建weather_summary和daily_weather兩個數(shù)據(jù)表,這些表格的設計旨在準確地反映天氣數(shù)據(jù)的結構和關系。其中,weather_summary表存儲每個月的天氣摘要。

   # 第一組數(shù)據(jù)插入 weather_summary 表
   with conn.cursor() as cursor:
       sql = "INSERT INTO weather_summary (city, year, month, url) VALUES (%s, %s, %s, %s)"
       cursor.executemany(sql, message)

   # 第二組數(shù)據(jù)插入 daily_weather 表
   data2 = []
   for month_data in weathers:
       for day_data in month_data:
           record = (day_data['city'], day_data['date_time'], day_data['high'], day_data['low'], day_data['weather'])

6. 數(shù)據(jù)呈現(xiàn)

關注公眾號,回復 “天氣數(shù)據(jù)抓取”

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言
python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言


7. 數(shù)據(jù)分析

(1)統(tǒng)計各類天氣所占比例

首先,使用pandas庫中的value_counts()方法來統(tǒng)計df[‘天氣’]列中各個唯一天氣類型的出現(xiàn)次數(shù)。這個方法返回一個新的Series對象,其索引是唯一的天氣類型,值是每種天氣類型的出現(xiàn)次數(shù)。接下來,使用pyecharts庫中的Pie類創(chuàng)建一個餅圖對象。Pie類是一個專門用于生成餅圖的類,能夠輕松地實現(xiàn)數(shù)據(jù)的可視化。

關注公眾號,回復 “天氣數(shù)據(jù)抓取” 獲取源碼

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

(2)統(tǒng)計每年中氣溫最高的日期

首先,代碼通過pd.to_datetime(df[‘日期’])將df中的’日期’列轉換為pandas的DateTime對象。這種轉換對于后續(xù)的日期處理和分析至關重要,因為它允許使用豐富的日期時間函數(shù)。利用DateTime對象的dt屬性,代碼提取了每條記錄的年份信息,并將其存儲在新的列’年份’中。這樣做便于按年份對數(shù)據(jù)進行分組和分析。使用groupby(‘年份’)對數(shù)據(jù)按年份進行分組,然后對每個分組應用idxmax()函數(shù)來找出最高氣溫出現(xiàn)的索引(即日期)。idxmax()函數(shù)返回的是最高氣溫值所在行的索引。

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

(3)統(tǒng)計每年氣溫的平均值

使用groupby(‘年份’)對df中的數(shù)據(jù)按照’年份’列進行分組。這意味著數(shù)據(jù)將根據(jù)年份被組織起來,每個組包含該年份的所有數(shù)據(jù)記錄。接著,應用agg函數(shù)對分組后的數(shù)據(jù)進行聚合計算。在這里,針對每個年份組,分別計算’最高氣溫’和’最低氣溫’的平均值(mean)。這一步驟提供了每年的平均最高氣溫和平均最低氣溫的關鍵數(shù)據(jù)。

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

(4)最高氣溫與最低氣溫的散點圖

通過繪制一個散點圖來探索最高氣溫和最低氣溫之間的關系。以下是對這部分代碼的詳細分析,使用pyecharts庫中的Scatter類來創(chuàng)建一個散點圖對象。散點圖是用于展示兩個變量之間關系的理想圖表,特別適合于揭示變量之間的相關性或模式。通過Scatter()構造函數(shù)初始化了一個散點圖實例。
設置X軸和Y軸數(shù)據(jù)使用add_xaxis()方法設置X軸數(shù)據(jù),這里選擇了df[‘最高氣溫’]作為X軸數(shù)據(jù),它代表數(shù)據(jù)集中記錄的每天的最高氣溫。

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

(5) 統(tǒng)計最高氣溫分布的箱線圖

創(chuàng)建溫度區(qū)間,利用pandas的cut函數(shù),代碼首先定義了一系列溫度區(qū)間(temp_bins),這些區(qū)間用于對最高氣溫數(shù)據(jù)進行分類。這些區(qū)間從-10℃開始,每個區(qū)間的跨度不同,直到超過數(shù)據(jù)集中的最高氣溫。pd.cut函數(shù)將df[‘最高氣溫’]中的每個值分配到這些預定義的區(qū)間中。結果存儲在新的列’溫度區(qū)間’中,為每個最高氣溫值標記了對應的溫度區(qū)間。

python天氣數(shù)據(jù)分析論文,python,數(shù)據(jù)分析,開發(fā)語言

?????? 關注公眾號,回復 “天氣數(shù)據(jù)抓取” 獲取源碼??????

到了這里,關于【Python】python天氣數(shù)據(jù)抓取與數(shù)據(jù)分析(源碼+論文)【獨一無二】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python--爬取天氣網(wǎng)站天氣數(shù)據(jù)并進行數(shù)據(jù)分析

    Python--爬取天氣網(wǎng)站天氣數(shù)據(jù)并進行數(shù)據(jù)分析

    ?目的:從天氣網(wǎng)站中爬取數(shù)據(jù),生成excel表格,里面存儲南昌市近十一年的天氣情況,并對爬取產(chǎn)生的數(shù)據(jù)進行數(shù)據(jù)分析。 ? 第一步:編寫代碼進行數(shù)據(jù)爬取 首先,導入 requests 模塊,并調用函數(shù) requests.get(),從天氣的網(wǎng)站上面獲 取該函數(shù)所需要的各種參數(shù),然后對里面的參

    2024年02月04日
    瀏覽(21)
  • python天氣數(shù)據(jù)可視化分析

    python天氣數(shù)據(jù)可視化分析

    網(wǎng):tianqihoubao 對深圳近幾月的天氣進行分析可視化 ? ?get函數(shù) 用于get網(wǎng)頁數(shù)據(jù)并進行分析講需要的天氣數(shù)據(jù)進行導出 ?數(shù)據(jù)都在tr便簽里所以只提取tr標簽里的數(shù)據(jù) ?調用? 提取深圳近三個月的數(shù)據(jù),并用pandas庫中的concat將三個get完的數(shù)據(jù)進行整合 表格展示 導出的表格數(shù)據(jù)

    2024年02月11日
    瀏覽(26)
  • Python爬取180天的天氣信息及數(shù)據(jù)分析

    Python爬取180天的天氣信息及數(shù)據(jù)分析

    這篇文章記錄以下兩點: 1.獲取天氣信息的方法和步驟以及遇到的問題和改進方法 2.獲取到天氣信息后進行數(shù)據(jù)清洗和可視化展示 總的來說,就是將網(wǎng)站中的天氣信息通過爬蟲技術保存在文件中,再通過對文件中的文本數(shù)據(jù)進行處理后用圖表方式展現(xiàn)出來。 1.選定網(wǎng)址 (1)

    2024年02月08日
    瀏覽(25)
  • Python爬取天氣數(shù)據(jù)并進行分析與預測

    Python爬取天氣數(shù)據(jù)并進行分析與預測

    隨著全球氣候的不斷變化,對于天氣數(shù)據(jù)的獲取、分析和預測顯得越來越重要。本文將介紹如何使用Python編寫一個簡單而強大的天氣數(shù)據(jù)爬蟲,并結合相關庫實現(xiàn)對歷史和當前天氣數(shù)據(jù)進行分析以及未來趨勢預測。 1 、數(shù)據(jù)源選擇 選擇可靠豐富的公開API或網(wǎng)站作為我們所需的

    2024年02月09日
    瀏覽(26)
  • python爬取天氣數(shù)據(jù)并做可視化分析

    python爬取天氣數(shù)據(jù)并做可視化分析

    歷史天氣數(shù)據(jù)schema { ‘當日信息’:\\\'2023-01-01 星期日\\\', \\\'最高氣溫\\\': 8℃\\\'\\\', \\\'最低氣溫\\\': \\\'5℃\\\', ‘天氣’: \\\'多云\\\', \\\'風向信息\\\':\\\'北風 3級\\\' } 1.導入庫 2.對程序進行偽裝 3.抓取天氣數(shù)據(jù) 在數(shù)據(jù)存儲前,對數(shù)據(jù)進行處理,便于后期的數(shù)據(jù)分析。將上面的“當天信息”字段拆分為“日期”

    2024年02月04日
    瀏覽(24)
  • 簡單的用Python抓取動態(tài)網(wǎng)頁數(shù)據(jù),實現(xiàn)可視化數(shù)據(jù)分析

    簡單的用Python抓取動態(tài)網(wǎng)頁數(shù)據(jù),實現(xiàn)可視化數(shù)據(jù)分析

    一眨眼明天就周末了,一周過的真快! 今天咱們用Python來實現(xiàn)一下動態(tài)網(wǎng)頁數(shù)據(jù)的抓取 最近不是有消息說世界首富馬上要變成中國人了嗎,這要真成了,可就是歷史上首位中國世界首富了! 那我們就以富豪排行榜為例,爬取一下2023年國內富豪五百強,最后實現(xiàn)一下可視化分

    2024年02月05日
    瀏覽(24)
  • 基于Python的網(wǎng)絡爬蟲爬取天氣數(shù)據(jù)可視化分析

    基于Python的網(wǎng)絡爬蟲爬取天氣數(shù)據(jù)可視化分析

    目錄 摘 要 1 一、 設計目的 2 二、 設計任務內容 3 三、 常用爬蟲框架比較 3 四、網(wǎng)絡爬蟲程序總體設計 3 四、 網(wǎng)絡爬蟲程序詳細設計 4 4.1設計環(huán)境和目標分析 4 4.2爬蟲運行流程分析 5 爬蟲基本流程 5 發(fā)起請求 5 獲取響應內容 5 解析數(shù)據(jù) 5 保存數(shù)據(jù) 5 Request和Response 5 Request 5

    2024年02月08日
    瀏覽(26)
  • 【Python】實現(xiàn)爬蟲(完整版),爬取天氣數(shù)據(jù)并進行可視化分析

    【Python】實現(xiàn)爬蟲(完整版),爬取天氣數(shù)據(jù)并進行可視化分析

    ??????大家好呀,你們的作業(yè)俠又轟轟轟的出現(xiàn)了,這次給大家?guī)淼氖莗ython爬蟲,實現(xiàn)的是爬取某城市的天氣信息并使用matplotlib進行圖形化分析?????? 要源碼可私聊我。 大家的關注就是我作業(yè)俠源源不斷的動力,大家喜歡的話,期待三連呀?????? 往期源碼

    2024年02月05日
    瀏覽(28)
  • 基于python天氣數(shù)據(jù)的預測分析及可視化系統(tǒng) 畢業(yè)設計開題報告

    ?博主介紹 :《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、PPT、論文模版

    2024年02月04日
    瀏覽(28)
  • 最近臺風肆虐,讓我們用Python獲取天氣數(shù)據(jù),分析一下臺風到底要去哪!

    最近臺風肆虐,讓我們用Python獲取天氣數(shù)據(jù),分析一下臺風到底要去哪!

    最近臺風肆虐,已進入我國24小時警戒線!臺風“卡努”到底要去哪兒? 作為一個Python程序員,雖然我?guī)筒簧厦?,但是時時關注一下還是可以的,順便祈禱一下臺風往東邊某個小日子過得不錯的小島吹。 于是我花了一分鐘,用Python寫了一個獲取天氣數(shù)據(jù)的代碼,然后進行數(shù)據(jù)

    2024年02月14日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包