2019-08-27

2019年世界大学排名数据爬取及处理分析

一、排名数据的爬取(运用requests库、BeautifulSoup库和正则表达式)

二、爬取数据的整合(运用pandas库和numpy库)

三、数据可视化(运用numpy库和matplotlib库)

四、数据的分析

一、排名数据的爬取
[最好大学网]http://www.zuihaodaxue.cn/worldrankings.html

最好大学2.PNG

最好大学代码.PNG
from bs4 import BeautifulSoup
import requests
import bs4

def gethtml(url):
    try:
        r=requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
        
def recorduniversity(ulist,html):
    soup=BeautifulSoup(html,"html.parser")
    for tr in soup.find('tbody').children:
        if isinstance(tr, bs4.element.Tag):
            tds = tr('td')
            ulist.append([tds[0].string, tds[1].string, tds[2].string,tds[3].string,tds[4].string,tds[5].string,tds[6].string,tds[7].string])
    pass

def printuniversity(ulist):
    print("{:^5}{:^6}{:^6}{:^6}{:^6}{:^6}{:^6}{:^6}".format('区域','前20名','前100名','前200名','前300名','前400名','前500名','501-1000'))
    for i in ulist:
        print("{:^5}\t{:^1}\t{:^1}\t{:^1}\t{:^1}\t{:^1}\t{:^1}\t{:^1}".format(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]))
        
def main():
    ulist=[]
    url='http://www.zuihaodaxue.cn/ARWU-Statistics-2019.html'
    html=gethtml(url)
    recorduniversity(ulist, html)
    printuniversity(ulist)
     
main()

注:此处使用的format函数处理字符串,将相关的字符串规则地传入到列表中。(:冒号是声明格式化,^ 表示中间对齐,^ 后的数字表示宽度)


工程图.PNG

二、排名数据的整合

import pandas as pd
university=pd.read_excel(r"C:\Users\lenovo\Desktop\universityRank.xlsx")
univer=university.replace("—",0)
print(univer)
University=univer.set_index('区域')
University.T
print(University.T)
a=University.T['美洲']
b=University.T['欧洲']
c=University.T['亚太']
d=University.T['非洲']

注:- 1. 此处使用到了replace函数将数据中的“-”替换为0(以便之后的作图)

    1. 运用set.index重设行索引,为下一步的转置做准备。
    1. 使用T转置,有助于之后作图的数据获取。
      具体看下图
      图3.PNG

三、数据可视化(作图)

import numpy as np
x=np.array([1,2,3,4,5,6,7])
import matplotlib.pyplot as plt
plt.subplot(1,1,1)
plt.rcParams['font.sans-serif']='SimHei'
plt.plot(x,a,color='y',linestyle='dashed',marker='o',markersize=3,label='美洲')
plt.plot(x,b,color='r',linestyle='dashdot',marker='o',markersize=3,label='欧洲')
plt.plot(x,c,color='b',linestyle='solid',marker='o',markersize=3,label='亚太')
plt.plot(x,d,color='k',linestyle='dotted',marker='o',markersize=3,label='非洲')
plt.legend()
for p,q in zip(x,a):
    plt.text(p,q,q,ha="center",va="bottom",color='y',fontsize=11)
for p,q in zip(x,b):
    plt.text(p,q,q,ha="center",va="bottom",color='r',fontsize=11)
for p,q in zip(x,c):
    plt.text(p,q,q,ha="center",va="bottom",color='b',fontsize=11)
for p,q in zip(x,d):  
    plt.text(p,q,q,ha="center",va="bottom",color='k',fontsize=11)
plt.title("2019年世界大学排名情况",loc="center",fontproperties="SimHei")
plt.xlabel("排名",fontproperties="SimHei")
plt.ylabel("个数",fontproperties="SimHei")
plt.xticks(np.arange(1,8,1),["前20名","前100名","前200名","前300名","前400名","前500名","第501-1000名"],fontproperties="SimHei")

注:1. rcParams解决了中文乱码的情况。

  1. zip函数将可迭代的对象作为参数,将对象中对应的元素打包,返回由这些组成的列表。
  2. 作图时注意设置color(折线颜色设置)和linestyle(折线的形状的设置),有利于我们区分和比较数据。
  3. 完善数据时,还需要关注plt.text的参数设置,字符串显示的位置(ha:水平方向,va:垂直方向)以及颜色大小。
  4. 作图时设置完label(图标名称)后要使用plt.legend()来显示在图中,一般默认显示一列。


    tu2.png

四、数据的分析

    1. 从折线图我们可以清楚的看出进入世界大学前1000名的非洲区域大学的数量为20,处于较低水平。
    1. 欧洲的排名居于4大区域的第一位,2019年进入世界大学前1000名的欧洲大学有763所,比非洲高出约97个百分点。
    1. 美洲地区的大学进入前20名的数量是最多的,有16所大学,是欧洲的大学的四倍,并整体处于较好水平。
    1. 亚太地区的大学位于第501~1000名的大学数量最多,有206所,占了该排名段数量的三分之一。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容