首页 > 其他分享 >中国大学排名数据分析与可视化

中国大学排名数据分析与可视化

时间:2024-05-29 22:33:48浏览次数:24  
标签:数据分析 count plt rank 可视化 year print 中国大学 select

【题目描述】以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:

(1)按照排名先后顺序输出不同年份的前10位大学信息,并要求对输出结果的排版进行优化;

(2)结合matplotlib库,对2015-2019年间前10位大学的排名信息进行可视化展示。

(3附加)编写一个查询程序,根据从键盘输入的大学名称和年份,输出该大学相应的排名信息。如果所爬取的数据中不包含该大学或该年份信息,则输出相应的提示信息,并让用户选择重新输入还是结束查询;

【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

 

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
from matplotlib import pyplot as plt


def get_rank(url):
    count = 0
    rank = []
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 Edg/101.0.1210.3"
    }
    resp = requests.get(url, headers=headers).content.decode()
    soup = bs(resp, "lxml")
    univname = soup.find_all('a', class_="name-cn")
    for i in univname:
        if count != 10:
            university = i.text.replace(" ", "")
            score = soup.select("#content-box > div.rk-table-box > table > tbody > tr:nth-child({}) > td:nth-child(5)"
                                .format(count + 1))[0].text.strip()
            rank.append([university, score])
        else:
            break
        count += 1
    return rank


total = []
u_year = 2015
for i in range(15, 20):
    url = "https://www.shanghairanking.cn/rankings/bcur/20{}11".format(i)
    print(url)
    title = ['学校名称', '总分']
    df = pd.DataFrame(get_rank(url), columns=title)
    total.append(df)
for i in total:
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    x = list(i["学校名称"])[::-1]
    y = list(i["总分"])[::-1]
    # 1.创建画布
    plt.figure(figsize=(20, 8), dpi=100)
    # 2.绘制图像
    plt.plot(x, y, label="大学排名")
    # 2.2 添加网格显示
    plt.grid(True, linestyle="--", alpha=0.5)
    # 2.3 添加描述信息
    plt.xlabel("大学名称")
    plt.ylabel("总分")
    plt.title(str(u_year) + "年软科中国最好大学排名Top10", fontsize=20)
    # 2.5 添加图例
    plt.legend(loc="best")
    # 3.图像显示
    plt.savefig(str(u_year)+".png")
    plt.show()

    u_year += 1

while True:
    info = input("请输入要查询的大学名称和年份:")
    count = 0
    university, year = info.split()
    year = int(year)
    judge = 2019 - year
    tmp = total[::-1]
    if 4 >= judge >= 0:
        name = list(total[judge - 1]["学校名称"])
        for j in name:
            if university == j:
                print(university + "在{0}年排名第{1}".format(year, count + 1))
                break
            count += 1
        if count ==10:
            print("很抱歉,没有该学校的排名记录!!!")
            print("请选择以下选项:")
            print("   1.继续查询")
            print("   2.结束查询")
            select = int(input(""))

            if select == 1:
                continue
            elif select == 2:
                break
        else:
            break
    else:
        print("很抱歉,没有该年份的排名记录!!!")
        print("请选择以下选项:")
        print("   1.继续查询")
        print("   2.结束查询")
        select = int(input(""))

        if select == 1:
            continue
        elif select == 2:
            break

 

标签:数据分析,count,plt,rank,可视化,year,print,中国大学,select
From: https://www.cnblogs.com/litianyu1969/p/18221260

相关文章

  • 共享单车数据可视化分析|附代码数据
    全文下载链接 http://tecdat.cn/?p=1951最近我们被客户要求撰写关于共享单车的研究报告,包括一些图形和统计输出。随着智能手机的普及和手机用户的激增,共享单车作为城市交通系统的一个重要组成部分,以绿色环保、便捷高效、经济环保为特征蓬勃发展作为城市共享交通系统的一个重要......
  • NumPy 泊松分布模拟与 Seaborn 可视化技巧
    泊松分布简介泊松分布是一种离散概率分布,用于描述在给定时间间隔内随机事件发生的次数。它常用于模拟诸如客户到达商店、电话呼叫接入中心等事件。参数泊松分布用一个参数来定义:λ:事件发生的平均速率,表示在单位时间内事件发生的平均次数。公式泊松分布的概率质量函数(PMF)......
  • 博客增长与数据分析:不可不知的 6 大策略
    CSDN的朋友你们好,我是何未来,一个热爱编程和写作的计算机本科生,今天给大家带来专栏【程序员博主教程(完全指南)】的第11篇文章“分析和追踪博客表现”。本篇文章为你揭示了如何通过数据洞察来优化你的技术博客,从基础指标到高级分析技巧,从流量来源到用户行为,每一步都是提升......
  • R可视化:可发表的prism点图
    介绍可发表的prism点图加载R包knitr::opts_chunk$set(echo=TRUE,message=FALSE,warning=FALSE)library(tidyverse)library(ggpubr)library(ggprism)rm(list=ls())options(stringsAsFactors=F)导入数据data("iris")head(iris)处理数据plotdata......
  • R可视化:生存分析森林图
    生存分析森林图生存分析森林图介绍ggplot2绘制生存分析森林图加载R包knitr::opts_chunk$set(message=FALSE,warning=FALSE)library(tidyverse)library(survival)library(survminer)library(tableone)library(forestplot)#rm(list=ls())options(stri......
  • 数据可视化为何能在企业当中广泛应用?
    数据可视化为何能在企业当中广泛应用?这是一个值得探讨的话题。在当今信息爆炸的时代,企业每天都会产生和处理大量的数据,这些数据蕴含着丰富的信息和潜在的商业价值。然而,面对海量数据,如何高效地分析、理解和利用它们,成为了企业管理者们亟需解决的问题。数据可视化技术以其独特的优......
  • AI大模型探索之路-实战篇10:数据预处理的艺术:构建Agent智能数据分析平台的基础
    系列篇章......
  • Python数据分析与挖掘实战(6章)
    非原创,仅个人关于《Python数据分析与挖掘实战》的学习笔记窃漏电数据分析导入相关库importwarningsimportmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdimportxlrd#解决中文乱码plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axe......
  • Blocs for mac(优秀的可视化代码编辑器)v5.2.4版
    BlocsMac版是一款优秀的的可视化Web开发工具,专为追求高效、直观且无需深厚编程知识就能创建现代化静态网站的用户设计。这款软件以其强大的可视化编辑界面和简易的操作流程,让用户无需深入了解复杂的代码编写,也能轻松构建出高质量、现代化的静态网站。Blocs不仅加速了网站开发......
  • 校园新视界:可视化技术如何重塑我们的学习环境
    随着科技的飞速发展,我们的生活方式正在经历一场前所未有的变革。而在这场变革中,学校作为培养未来人才的重要基地,也在不断地探索与创新。 一、什么是校园可视化?校园可视化,就是通过先进的信息技术,将学校的各个角落、各种资源、各种数据以图形、图像、动画等形式直观地展示给师生......