【数据可视化】大作业

意向考研高校的数据可视化

  • 前言
  • 一、数据介绍
    • 1.1 基本信息
    • 1.2 考研信息
    • 1.3 导师信息
  • 二、预处理及分析
    • 2.1 数据预处理
    • 2.2 数据分析
  • 三、可视化方法及结果
    • 3.1 可视化方法
    • 3.2 可视化结果展示
      • 3.2.1 基本信息
      • 3.2.2 考研信息
      • 3.2.3 导师信息
  • 四、总结
  • 五、附录


前言

  • 将该高校的地理位置以地图的形式展示。
  • 将该高校近几年计算机相关专业的考研(或高考)录取成绩、人数信息,专业师资队伍,考试科目及内容等等以合适的柱状图、折线图、饼图等方式表示出来,图表能够清晰得呈现不同数据的变化,使得观察图表的人能够迅速得获取信息。
    • 录取成绩、人数信息、专业师资队伍
    • 柱状图、折线图、饼图
  • 对个人感兴趣的导师、研究方向等多属性、多维度、多关系数据选用关系、词云等可视化方法,使数据清晰有效地表达。
    • 研究方向
    • 关系、词云
  • 其它自由发挥部分

一、数据介绍

1.1 基本信息

  • 学校名称:山东理工大学
  • 地理位置:山东省淄博市,北纬36.810315,东经117.999601
  • 院校:计算机科学与技术学院

1.2 考研信息

  • 手工处理

1.3 导师信息

  • 获取信息:姓名、职位、主要学习工作简历、主要研究方向、社会兼职及荣誉称号、主讲课程及主要教学奖励、主要科研成果及奖励
  • 爬取代码:
import time
import requests
from lxml import etree
import pandas as pd

def scrape_website(url, dataframe):
    # 发起HTTP请求获取网页内容
    response = requests.get(url)

    # 检查请求是否成功
    if response.status_code == 200:
        # 使用lxml库解析网页内容
        html = response.text
        tree = etree.HTML(html)

        # 创建字典来存储爬取的数据
        data = {}

        # 基本信息
        item1 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[1]/div[2]/h2//text()')
        item2 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[1]/div[2]/h3//text()')
        data['Item 1'] = item1
        data['Item 2'] = item2

        # 主要学习工作简历
        data1 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[2]/div/p//text()')
        data['Main Education and Work Experience'] = data1

        # 主要研究方向
        data2 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[3]/div/p//text()')
        data['Main Research Areas'] = data2

        # 社会兼职及荣誉称号
        data3 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[4]/div/p//text()')
        data['Social Positions and Honors'] = data3

        # 主讲课程及主要教学奖励
        data4 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[5]/div/p//text()')
        data['Main Courses and Teaching Awards'] = data4

        # 主要科研成果及奖励
        data5 = tree.xpath('/html/body/div[4]/div/div[2]/div/div[6]/div/p//text()')
        data['Main Research Achievements and Awards'] = data5

        # 将数据转换为DataFrame并添加到现有DataFrame中
        new_dataframe = pd.DataFrame([data])
        dataframe = pd.concat([dataframe, new_dataframe], ignore_index=True)

        return dataframe

    else:
        print("请求失败")

def scrape_url(url):
    # 发起HTTP请求获取网页内容
    response = requests.get(url)

    # 检查请求是否成功
    if response.status_code == 200:
        # 使用lxml库解析网页内容
        html = response.text
        tree = etree.HTML(html)
        # 提取所有链接
        links = tree.xpath('//*[@id="wp_content_w3_0"]//@href')
        for link in links:
            print("链接:", link)
        return links
    else:
        print("请求失败")

# 创建空的DataFrame来存储导师信息
df = pd.DataFrame()

# 调用爬虫函数
links = scrape_url("https://jsjxy.sdut.edu.cn/7534/list.htm")
for link in links:
    print(link)
    df = scrape_website(link, df)
    time.sleep(1)

# 删除JSON格式的数据
df = df.applymap(lambda x: ', '.join(x) if isinstance(x, list) else x)

# 将整理好的数据保存到Excel文件
df.to_excel("导师信息.xlsx", index=False)

print('########################### Over  ###########################')
  • 数据展示:

二、预处理及分析

2.1 数据预处理

  • 导师信息预处理
import pandas as pd
import re

# 读取Excel文件
file_path = '/Users/liuhao/MyProject/PycharmProject/DataVisualization/Project1/导师信息.xlsx'
df = pd.read_excel(file_path)

# 删除空数据
df = df.dropna(how='all')

# 处理重复数据
df = df.drop_duplicates()

# 创建新的Excel文件
output_file = '/Users/liuhao/MyProject/PycharmProject/DataVisualization/Project1/导师信息处理后.xlsx'
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')

# 处理每个导师的信息
for index, row in df.iterrows():
    # 获取导师名称
    teacher_name = row['Item 1']

    # 创建以导师名称命名的工作表
    teacher_sheet = writer.book.add_worksheet(teacher_name)

    # 添加表头信息
    headers = ['姓名', '职位', '主要学习工作简历', '主要研究方向', '社会兼职及荣誉称号', '主讲课程及主要教学奖励',
               '主要科研成果及奖励']
    for col_index, header in enumerate(headers):
        teacher_sheet.write(0, col_index, header)

    # 将每一列的数据按照“,”“、”“;”进行切分,并保存到新的工作表中
    for col_index, value in enumerate(row):
        if pd.notnull(value):
            data_list = [x.strip() for x in re.split('[,、;]', str(value))]
            for i, data in enumerate(data_list):
                teacher_sheet.write(i + 1, col_index, data)

# 保存并关闭Excel文件
writer._save()

2.2 数据分析

三、可视化方法及结果

3.1 可视化方法

3.2 可视化结果展示

3.2.1 基本信息

  • 地理位置
from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType


def test_geo():
    g = Geo()
    # 选择要显示的地图
    g.add_schema(maptype="山东")
    # 使用add_coordinate(name, lng, lat)添加坐标点和坐标名称
    g.add_coordinate('山东理工大学', 117.999601, 36.810315)
    # 给上面的坐标点添加数据,
    data_pair = [('山东理工大学', 10)]
    # 将数据添加到定义的地图上
    g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=5)
    # 设置样式
    g.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    return g


g = test_geo()
# 渲染成html,保存在代码文件的相同目录下
g.render('坐标标注.html')

3.2.2 考研信息

3.2.3 导师信息

四、总结

五、附录

你可能感兴趣的:(【数据科学与大数据技术】,信息可视化,课程设计)