數據科學與計算:爬蟲和數據分析案例筆記

案例 1:中國大學排名爬取與分析

一、任務描述

目標:爬取高三網中國大學排名一覽表,提取學校名稱、總分、全國排名、星級排名、辦學層級等數據,并保存為 CSV 文件。

網址:2021中國的大學排名一覽表_高三網

二、任務分析

數據來源:網頁中的表格數據,包含 “名次”“學校名稱”“總分”“全國排名”“星級排名”“辦學層次” 等字段。

網頁結構:數據嵌套在table > tbody > tr標簽中,需通過解析 HTML 提取表格行數據。

三、代碼實現

1. 核心庫導入

python

運行

import requests  # 發送HTTP請求
from bs4 import BeautifulSoup  # 解析HTML
import csv  # 處理CSV文件
2. 功能函數

獲取網頁內容(get_html)

python

運行

def get_html(url, time=3):try:r = requests.get(url, timeout=time)  # 發送GET請求r.encoding = r.apparent_encoding  # 自動識別編碼r.raise_for_status()  # 狀態碼非200時拋出異常return r.text  # 返回網頁文本except Exception as error:print(error)
  • 解析網頁數據(parser)

    python

    運行

    def parser(html):soup = BeautifulSoup(html, "lxml")  # 解析HTMLout_list = []for row in soup.select("table>tbody>tr"):  # 遍歷表格行td_html = row.select("td")  # 獲取單元格row_data = [td_html[1].text.strip(),  # 學校名稱td_html[2].text.strip(),  # 總分td_html[3].text.strip(),  # 全國排名td_html[4].text.strip(),  # 星級排名td_html[5].text.strip()   # 辦學層次]out_list.append(row_data)return out_list
    
  • 保存為 CSV 文件(save_csv)

    python

    運行

    def save_csv(item, path):with open(path, "wt", newline="", encoding="utf-8") as f:csv_write = csv.writer(f)csv_write.writerows(item)  # 寫入多行數據
    
3. 主程序

python

運行

if __name__ == "__main__":url = "http://www.bspider.top/gaosan/"html = get_html(url)  # 獲取網頁out_list = parser(html)  # 解析數據save_csv(out_list, "school.csv")  # 保存文件

四、數據預處理(處理缺失值)

針對 “總分” 列的空數據,使用 pandas 處理:

  1. 刪除含空字段的行

    python

    運行

    import pandas as pd
    df = pd.read_csv("school.csv")
    new_df = df.dropna()  # 刪除缺失值所在行
    print(new_df.to_string())
    
  2. 用指定內容替換空字段

    python

    運行

    df.fillna("暫無分數信息", inplace=True)  # 替換缺失值為指定文本
    
  3. 用均值替換空字段

    python

    運行

    x = df["總分"].mean()  # 計算均值
    df["總分"].fillna(x, inplace=True)  # 填充缺失值
    
  4. 用中位數替換空字段

    python

    運行

    x = df["總分"].median()  # 計算中位數
    df["總分"].fillna(x, inplace=True)  # 填充缺失值
    

五、數據分析與可視化

1. 數據概況

共 820 所學校,按星級分布:8 星(8 所)、7 星(16 所)、6 星(36 所)、5 星(59 所)、4 星(103 所)、3 星(190 所)、2 星(148 所)、1 星(260 所)。

2. 可視化圖表

柱形圖(橫向 / 縱向)

python

運行

import matplotlib.pyplot as plt
import numpy as npx = np.array(["8星","7星","6星","5星","4星","3星","2星","1星"])
y = np.array([8, 16, 36, 59, 103, 190, 148, 260])plt.title("不同星級的學校個數")
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 顯示中文
plt.bar(x, y)  # 縱向柱形圖
# plt.barh(x, y)  # 橫向柱形圖
plt.show()
  • 餅圖(占比分布)

    python

    運行

    y = np.array([1, 2, 4.5, 7.2, 12.5, 23.1, 18, 31.7])  # 各星級占比(%)
    plt.pie(y, labels=["8星","7星","6星","5星","4星","3星","2星","1星"])
    plt.title("不同星級的學校個數占比")
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.show()
    

六、總結

  1. 案例完整展示了 “爬蟲獲取數據→預處理清洗→可視化分析” 的流程。
  2. 核心技術:requests 爬蟲、BeautifulSoup 解析、pandas 數據處理、matplotlib 可視化。
  3. 應用場景:通過結構化數據提取與分析,直觀呈現大學排名的分布特征。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95592.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華測科技的3D GPR數據分析

很高興得到了張總的支持,獲得了他們雷達的數據,并寫了雷達數據讀取和轉換文件。1 背景搜索后發現華測實力很強,因為他們可達到100km/h的時速,以前我只知道中電眾益可以達到這個速度。2數據格式分析2.1 華測數據因為長時間不編程&a…

最長鏈(二叉樹直徑DFS)

題目描述現給出一棵N個結點二叉樹,問這棵二叉樹中最長鏈的長度為多少,保證了1號結點為二叉樹的根。輸入第1行為包含了一個正整數N,為這棵二叉樹的結點數,結點標號由1至N。 接下來N行,這N行中的第i行包含兩個正整數l[i]…

802.11 Wi-Fi 競爭機制深度分析:CSMA/CA 與 DCF

802.11 Wi-Fi 競爭機制深度分析:CSMA/CA 與 DCF 一、核心機制:CSMA/CA(載波偵聽多路訪問/沖突避免) 傳統以太網使用 CSMA/CD(沖突檢測),但無線環境中無法實現沖突檢測,因此802.11采用…

【Go語言-Day 36】構建專業命令行工具:`flag` 包入門與實戰

Langchain系列文章目錄 01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

C語言——深入理解指針(四)

C語言——深入理解指針(四) 數組名的意義sizeof(數組名),且數組名單獨放在sizeof內部,則這里的數組名表示整個數組,計算的是整個數組的大小&數組名,這里的數組名表示的是整個數組…

LeetCode 刷題【42. 接雨水】

42. 接雨水 自己做 解&#xff1a;雙指針左右分割容器 class Solution { public:int trap(vector<int>& height) {int res 0;int len height.size();if(len < 2) //構不成一個容器了&#xff0c;直接返回return res;int end len - 1; //右邊界int…

網絡的基本概念、通信原理以及網絡安全問題

目錄 1、 什么是網絡&#xff1f; &#xff08;1&#xff09;網絡的概念與本質 &#xff08;2&#xff09;電壓信號的合并與抵消 &#xff08;3&#xff09;電壓的本質 2、中轉設備 &#xff08;1&#xff09;背景 &#xff08;2&#xff09;中轉設備的處理能力與編程能…

Windows下使用WSL2創建Ubuntu子系統(更改安裝位置與啟動圖形桌面)

Windows下使用WSL2創建Ubuntu子系統&#xff08;更改安裝位置與啟動圖形桌面&#xff09; 本文介紹如何使用WSL2創建Ubuntu子系統&#xff0c;并更改安裝位置到其他磁盤&#xff0c;并啟動圖形桌面Xfce4。 WSL 版本: 2.5.7.0 系統版本: Windows11 23H2 相關工具&#xff1a;Mo…

時間泄漏 TemporalLeakage

時間泄漏 TemporalLeakage: 就是后續有事件發生&#xff0c;然后才有了這個結果&#xff0c;但是在該事件發生之前&#xff0c;不應該預測該結果。 Temporal Leakage 問題是往往導致縱向Planning不“果斷”。 解決方案&#xff1a;人工標注出時間發生的時刻 真值只監督時間發生…

獨立書店數字化轉型:絕版書修復檔案系統與讀者閱讀行為分析營銷平臺

在電商沖擊與閱讀習慣變遷的雙重壓力下&#xff0c;獨立書店正遭遇 “舊書修復難、新書賣不動” 的生存困境。傳統模式中&#xff0c;絕版書修復依賴老師傅經驗&#xff0c;單本修復周期長達 2 周&#xff0c;損耗率超 30%&#xff1b;營銷缺乏數據支撐&#xff0c;導致客流年均…

const修飾指針用法詳解

目錄 一、const修飾變量 繞過const限制的問題 二、const修飾指針變量 1、無const修飾的指針 2、const放在*左邊 3、const放在*右邊 4、*兩邊都有const 三、使用建議 四、記憶技巧 一、const修飾變量 在C語言中&#xff0c;變量默認是可修改的。如果我們希望某個變量不能…

pcl法線估計的踩坑

1&#xff0c;normalestimation對點云法線的評估&#xff0c;只輸出法線向量&#xff0c;并不輸出xyz值。如果輸出類型是pointnormal&#xff0c;那么這點云的法向量有值&#xff0c;xyz值都是02&#xff0c;添加點云xyz數據。可以使用 pcl::concatenatefields(*a,*b,*c)函數p…

利用Minicsv庫解析csv文件的c程序及讀入測試

上午的c程序寫入xlsx較快但不正確&#xff0c;python程序雖正確但過慢。所以找了一個全部源程序加起來不到4K字節的C語言csv解析庫Minicsv&#xff0c;來改寫&#xff0c;改寫結果如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h…

企微用戶部門同步HRS系統

企微用戶導入HR系統流程說明 概述 本文檔詳細說明了WechatUserImportServiceImpl.importWechatUsersToHrs()方法的業務流程和實現邏輯。該方法負責將企業微信用戶數據同步導入到HR管理系統中&#xff0c;包括員工信息、工作信息和任職記錄的創建與更新。 主要功能 數據同步…

告別傳統SEO!擁抱下一代流量密碼:生成式引擎優化(GEO)實戰指南

前言&#xff1a;為什么你的“最佳實踐”SEO正在失效&#xff1f;你是否發現&#xff0c;即使嚴格遵循了谷歌自2019年以來的所有“最佳實踐”&#xff0c;你的技術博客或產品文檔的流量依舊增長乏力&#xff0c;甚至不升反降&#xff1f;你不是一個人。問題在于&#xff0c;游戲…

week1-[一維數組]傳送

week1-[一維數組]傳送 題目描述 有 nnn 個傳送門&#xff0c;從第 iii 個傳送門進去后會被傳送到第 aia_iai? 個傳送門&#xff0c;進而被傳送到第 aaia_{a_i}aai?? 個傳送門&#xff0c;如此一直下去……小 A 想知道從第 kkk 個傳送門進去后&#xff0c;能不能回到第 kkk 個…

【18】目心智能——目心智能 嵌入式一面 ,校招,面試問答記錄

目心智能——目心智能 嵌入式一面 &#xff0c;校招&#xff0c;面試問答記錄 1 簡單自我介紹2 你做了這么多算法&#xff0c;為什么不找算法的&#xff1f;3 我們主要還是軟件開發&#xff0c;不做結構設計4 模電知識6 CSDN應該附鏈接在簡歷上&#xff0c;稍后發給我&#xff…

C++第二十課:快遞運費計算器 / 黑白配+石頭剪刀布小游戲

快遞運費計算器幫一家快遞站點開發一個快遞運費計算器&#xff0c;快遞站點人員只需要輸入包裹重量和地點編號即可計算出對應的運費。假設快遞費計算規則如下&#xff1a;首重&#xff1a;3公斤 3公斤以內&#xff1a;1.東三省/寧夏/青海/海南&#xff1a;12元&#xff0c;2.新…

網絡安全藍隊常用工具全景與實戰指南

摘要 在現代信息系統的安全防護中&#xff0c;藍隊承擔著防御、檢測、響應和持續改進的核心職責。要實現高效、可持續的防御能力&#xff0c;藍隊需要一整套成熟、可靠的工具集來進行威脅情報收集、日志分析、入侵檢測、漏洞評估、端點防護、網絡流量監控、事件響應與取證等工作…

基于 Flink 的淘寶實時數據管道設計:商品詳情流式處理與異構存儲

引言在電子商務領域&#xff0c;實時數據處理能力已成為企業核心競爭力的重要組成部分。淘寶作為中國領先的電商平臺&#xff0c;每天產生海量的商品數據&#xff0c;這些數據需要被實時處理、分析并分發到各種存儲系統中&#xff0c;以支持搜索、推薦、庫存管理等關鍵業務。本…