吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2896|回复: 13
收起左侧

[Python 转载] 全球大学排名分析

[复制链接]
风浩 发表于 2020-12-20 11:08
Python初学者,大佬请轻喷

学校排名

学校排名

分布地区

分布地区

数据爬取代码
[Asm] 纯文本查看 复制代码
from lxml import etree 
import requests 
import pandas as pd
import time

for i in range(2015,2022): 
    urls = ["https://ranking.promisingedu.com/%d-qs-all-undergraduate"%i]

    session = requests.Session()

    for url  in urls:

        response = session.get(url,headers={
            'User-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400'
        })

        content = response.text

    html = etree.HTML(content)
    time.sleep(1)

    University = html.xpath('//table[@id="rk"]//td[2]//text()')[:200]

    Country = html.xpath('//table[@id="rk"]//td[3]//text()')[:200]

    Rank = html.xpath('//table[@id="rk"]//td[1]//text()')[:200]

    Overall_Score = html.xpath('//table[@id="rk"]//td[10]//text()')[:200]

    Year = str(i).split()*200

    Content = {"Rank":Rank,"University":University,"Country":Country,"Overall_Score":Overall_Score,"Year":Year}
    New = pd.DataFrame(Content)
    New.to_csv("世界大学排名_%d.csv"%i)
    print(New)

数据展示代码
[Asm] 纯文本查看 复制代码
import pandas as pd
from pyecharts.charts import Funnel,Pie,Timeline
from pyecharts import options as opts
import os

list = []
listfile = os.listdir(r"./data/")

t1 = Timeline()
for i in listfile:
    df = pd.read_csv(r'./data/'+i,encoding='utf-8',index_col=0)
    list.append(df)

    Score_Data = pd.concat([df["University"], df["Rank"]], axis=1)
    Rank = Score_Data.sort_values("Rank",ascending=True)[:10]
    funnel = (Funnel()
              .add("", [z for z in zip(Rank["University"].tolist(), Rank["Rank"].tolist())],
                   sort_='descending',
                   label_opts=opts.LabelOpts(position="inside"))
              .set_global_opts(title_opts=opts.TitleOpts(title="大学排名(日期:{})".format(i[-8:-4]), pos_bottom=True))
              )
    t1.add(funnel,"{}".format(i[-8:-4]))
t1.render("university.html")
t2 = Timeline()
for i in listfile:
    df = pd.read_csv(r'./data/'+i,encoding='utf-8',index_col=0)
    list.append(df)

    classfy_Country = df.groupby(df["Country"])
    group_Country = classfy_Country.size().sort_values(ascending=False)

    pie = (Pie()
             .add('', [z for z in zip(group_Country.keys(), group_Country.tolist())],
                  radius=["30%", "75%"],
                  rosetype="radius")
             .set_global_opts(title_opts=opts.TitleOpts(title="地区分布(日期:{})".format(i[-8:-4]), pos_bottom=True))
             .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
             )
    t2.add(pie, "{}".format(i[-8:-4]))
t2.render("region.html")

Gather = pd.concat(list,ignore_index=True)
Gather.to_csv("Gather.csv")

免费评分

参与人数 3吾爱币 +4 热心值 +1 收起 理由
老子就是拽 + 1 我很赞同!
Jack-yu + 1 + 1 我很赞同!
hacksz + 2 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

blannk 发表于 2021-1-8 07:54
老子就是拽 发表于 2020-12-23 14:46
兄弟,你嫩运行出来不?

https://ranking.promisingedu.com/%d-qs-all-undergraduate
我试了下它里面的这个排名的信息源网址进不去,就没去试了。
老子就是拽 发表于 2020-12-23 14:46
blannk 发表于 2020-12-23 10:00
牛逼啊,我也是初学者,但是你这个更加高级啊。能不能出个视频,在B站讲解下,这里面函数的意思吗?

兄弟,你嫩运行出来不?
hacksz 发表于 2020-12-20 12:56
syz17213 发表于 2020-12-20 13:54
弄得挺好的,学习下
清平道长 发表于 2020-12-20 14:38
为什么没有家里蹲大学
lvcaolhx 发表于 2020-12-20 14:40
数据展示代码真的不错
与时俱进 发表于 2020-12-20 21:50
功能强大,学习了
老子就是拽 发表于 2020-12-21 14:33
大佬,敢问咋运行不出来啊?
blannk 发表于 2020-12-23 10:00
牛逼啊,我也是初学者,但是你这个更加高级啊。能不能出个视频,在B站讲解下,这里面函数的意思吗?
blannk 发表于 2020-12-23 10:01
https://ranking.promisingedu.com/%d-qs-all-undergraduate
这个网页目前输入进去,提示:400错误。
是不是意味着目前的这个代码暂时无效了?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表