# python数据分析_Flask_期末 **Repository Path**: yangguojuan/python_Flask_final ## Basic Information - **Project Name**: python数据分析_Flask_期末 - **Description**: 这是python数据分析_Flask_的期末项目。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2021-07-03 - **Last Updated**: 2025-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # python数据分析_Flask_期末 >- 项目任务:python数据分析_Flask网站 >- 撰写人:杨国娟 >- 撰写日期:2021年7月1日 >>- 最近更新:2021年7月6日 ## 一、项目要求 - 数据源:raw_data 基本栏位的概述 - 数据分析目标:在数据分析项目中,主要分析的目标数据介绍,相关数据整理、清洗、重塑的数据流程介绍。(建议用数据流的方式进行描述) - 数据分析结果价值宣言:数据分析的最终目标带来的分析价值、加值,作为数据结果展示和数据故事描述的基础 - 数据分析结果可视化:用到的可视化模块介绍,可视化模块的具体API使用介绍,预计可视化展示的结果以及数据故事的阐述 ## 二、数据源 ### 1、数据来源 > 数据源:raw_data 基本栏位的概述 - 从[中国教育在线](https://gkcx.eol.cn/)抓取了高校数据、专业数据_专科(高职)、专业数据_本科数据; - 数据的格式为csv数据格式; - 数据规格: 【高校数据】university.shape ——> (2857, 15) 【专业数据_专科(高职)】junior.shape ——> (779, 26) 【专业数据_本科】regular.shape ——> (740, 26) 可以看出数据规格足够庞大,能够得到有效的数据分析结果。 ### 2、信息爬取部分 #### 高校信息抓取 ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E9%AB%98%E6%A0%A1%E4%BF%A1%E6%81%AF1.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E9%AB%98%E6%A0%A1%E4%BF%A1%E6%81%AF2.png) 抓取高校信息代码部分 ``` def get_university_info(size, page_size=20): page_cnt = int(size/page_size) if size%page_size==0 else int(size/page_size)+1 print('一共{0}页数据,即将开始爬取...'.format(page_cnt)) #创建HTML会话对象 session2 = HTMLSession() df_result = pd.DataFrame() for index in range(1, page_cnt+1): print('正在爬取第 {0}/{1} 页数据'.format(index, page_cnt)) url = 'https://api.eol.cn/gkcx/api/?access_token=&admissions=¢ral=&department=&dual_class=&f211=&f985=&is_doublehigh=&is_dual_class=&keyword=&nature=&page={0}&province_id=&ranktype=&request_type=1&school_type=&signsafe=&size=20&sort=view_total&top_school_id=[2941]&type=&uri=apidata/api/gk/school/lists' \ .format(index) user_agent = UserAgent().random #创建随机请求头 header = {"User-Agent": user_agent} res = session2.post(url, headers=header) data = json.loads(res.text) if data["message"] == '成功': df_data = pd.DataFrame(data["data"]["item"]) df_result = df_result.append(df_data) time.sleep(random.randint(5, 7)) return df_result ``` #### 专业信息爬取 ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E4%B8%93%E4%B8%9A%E4%BF%A1%E6%81%AF1.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E4%B8%93%E4%B8%9A%E4%BF%A1%E6%81%AF2.png) 抓取专业信息代码部分(除请求地址和每页信息条数不同外,其他均一样) ``` def get_info(size, page_size=20): page_cnt = int(size/page_size) if size%page_size==0 else int(size/page_size)+1 print('一共{0}页数据,即将开始爬取...'.format(page_cnt)) session = HTMLSession() # 创建HTML会话对象 df_result = pd.DataFrame() for index in range(1, page_cnt+1): print('正在爬取第 {0}/{1} 页数据'.format(index, page_cnt)) # 不完整地址 url = 'https://api.eol.cn/gkcx/api/'.format(index) user_agent = UserAgent().random # 创建随机请求头 header = {"User-Agent": user_agent} res = session.post(url, headers=header) data = json.loads(res.text) if data["message"] == '成功': df_data = pd.DataFrame(data["data"]["item"]) df_result = df_result.append(df_data) time.sleep(random.randint(5, 7)) return df_result ``` ## 2、数据分析目标 > 数据分析目标:在你的数据分析项目中,主要分析的目标数据介绍,相关数据整理、清洗、重塑的数据流程介绍。(建议用数据流的方式进行描述) - **主要分析的目标数据**: 指标是“高校数据”“专业数据”“访问量”等,主要分析了热门高校的相关数据,以及热门专业,为高考生和家长提供了一些参考。 - **数据分析流程图** ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%95%B0%E6%8D%AE%E6%B5%81%E7%A8%8B%E5%9B%BE.jpg) - **相关数据整理、清洗、重塑的数据流程**: 1. 首先是高校数据、专业数据_专科(高职)、专业数据_本科数据的准备 ```python # 读取数据 # 可以用university.shape、junior.shape、regular.shape查看数据规格 university = pd.read_csv('./高校数据.csv',encoding='gbk') junior = pd.read_csv('./专业数据_专科(高职).csv',encoding='gbk') regular = pd.read_csv('./专业数据_本科.csv',encoding='gbk') ``` 2. 数据基本处理 ```python university = university.loc[:,['name','nature_name','province_name','address','belong', 'city_name', 'dual_class_name','f211','f985','level_name' , 'type_name','view_month_number','view_total_number', 'view_week_number','rank']] c_name = ['大学名称','办学性质','省份','地址','隶属','城市','高校层次', '211院校','985院校','级别','类型','月访问量','总访问量','周访问量','排名'] university.columns = c_name e_name = ['name','limit_year','level1_name','level2_name','level3_name', 'degree', 'salaryavg','girl_rate','view_week','view_month','view_total'] regular = regular.loc[:,e_name] c_name2 = ['专业名称','学制','一级名称','二级名称','三级名称','学位', '平均薪资','女生比例','周访问量','月访问量','总访问量'] regular.columns = c_name2 junior = junior.loc[:,e_name] junior.columns = c_name2 ``` 3. 筛选各省份高校的数量,并排序 ```python university['高校总数'] = 1 university.fillna({'高校层次': '非双一流'},inplace=True) university_by_province = university.pivot_table(index=['省份','高校层次'], values='高校总数',aggfunc='count') university_by_province.reset_index(inplace=True) university_by_province.sort_values(by=['高校总数'],ascending=False,inplace=True) university_by_province ``` 4、筛选高校热度省份的前三名高校【筛选数据、转换数据类型、排序】 ```python df9 = university.loc[:,['省份','大学名称','总访问量']] df9['前三'] = df9.drop_duplicates()['总访问量'].groupby(by=df9['省份']).rank(method='first', ascending=False) # 筛选前三名 df_10 = df9[df9['前三'].map(lambda x: True if x < 4 else False)] # 转换数据类型 df_10['前三'] = df_10.前三.astype(int) df_pt = df_10.pivot_table(values='总访问量',index='省份',columns='前三') # 排序 df_pt_2 = df_pt.sort_values(by=1,ascending=False)[:10] ``` 5、对高校地理位置进行分析 ```python df_l = df.query("层级==2").loc[:,['全称','经度','纬度']] df_l = df_l.reset_index(drop=True).rename(columns={'全称':'城市'}) df7 = university.pivot_table('大学名称','城市',aggfunc='count') df7 = df7.merge(df_l,on='城市',how='left') df7.sort_values(by='大学名称',ascending=False) ``` **至此,对高校数据、专业数据_专科(高职)、专业数据_本科数据就进行了一些整理、清洗和重塑。** ## 3、数据分析结果价值宣言 > 数据分析结果价值宣言:数据分析的最终目标带来的分析价值、加值,作为数据结果展示和数据故事描述的基础 - 高考的重要性不言而喻,这是一场不同于平时的测试,在未来的人生里,高考扮演着举足轻重的角色。当然,高考也只是第一步,要想在人生路上占据先机,选合适的学校、合适的专业很重要。你知道时下哪些学校和专业最热门吗? 针对这样一个痛点,对时下热门的高校、专业进行一些分析,进行可视化的展示,让我们可以更加了解时下哪些学校和专业最热门,通过了解专业毕业后的平均薪资以及就业前景,让高考时在选择高校和专业的时,能够有所依据,且能够做出更正确的选择。 ### 商业可行性、技术可行性、用户可欲性 - Viability商业可行性:数据可以给高考生和家长在选择高校和专业时提供可靠的参考价值。 - Feasibility技术可行性:[中国教育在线](https://gkcx.eol.cn/)拥有足够丰富的和足够权威的数据。 - Desirability用户可欲性:高考生在选择高校和专业时,没有系统的数据可以看,也不知道从哪里开始看,可以避免踩坑。 ### 问题情境 - 使用情镜:每年高考后,高考生都要开始考虑选择高校和专业的问题,但是没有系统的数据和分析供他们查看,只能逐一查找,这样要花费很多的时间,且不直观,不方便分析。 - 这样可以让高考生和家长对于选择哪个高校和专业就读提供了具有价值的参考。 - 关键数据:[中国教育在线](https://gkcx.eol.cn/)中的有关高校、专业等信息数据。 - 数据类型:最终可以是地图、柱状图、环形图、折线图等,高考生和家长在寻求解决方案的时候可能会需要花点时间寻找、对比、统计,所以适当的数据交互将数据进行对比分析是有必要的。 ## 4、数据分析结果可视化 > 数据分析结果可视化:用到的可视化模块介绍,可视化模块的具体API使用介绍,预计可视化展示的结果以及数据故事的阐述。 ### ①、数据分析结果的基本的对比图 ![1](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E7%BB%93%E6%9E%9C%E5%AF%B9%E6%AF%94%E5%9B%BE.png) ![2](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E7%BB%93%E6%9E%9C%E5%AF%B9%E6%AF%94%E5%9B%BE2.png) ![3](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E7%BB%93%E6%9E%9C%E5%AF%B9%E6%AF%94%E5%9B%BE3.png) ![4](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E7%BB%93%E6%9E%9C%E5%AF%B9%E6%AF%94%E5%9B%BE4.png) ### ②、数据分析结果的时空交互 ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%85%A8%E5%9B%BD%E5%90%84%E7%9C%81%E9%AB%98%E6%A0%A1%E6%95%B0%E9%87%8F.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%85%A8%E5%9B%BD%E9%AB%98%E6%A0%A1%E5%9C%B0%E7%90%86%E5%88%86%E5%B8%83%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%85%A8%E5%9B%BD%E9%AB%98%E6%A0%A1%E7%83%AD%E5%BA%A6TOP15.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%85%A8%E5%9B%BD%E4%B8%93%E7%A7%91(%E9%AB%98%E8%81%8C)%E9%99%A2%E6%A0%A1%E7%83%AD%E5%BA%A6TOP15.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%85%A8%E5%9B%BD%E9%AB%98%E6%A0%A1%E7%83%AD%E5%BA%A6TOP10%E7%9C%81%E4%BB%BD%E7%9A%84%E5%89%8D%E4%B8%89%E5%90%8D.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%8C%97%E4%BA%AC%E9%AB%98%E6%A0%A1%E7%83%AD%E5%BA%A6TOP15.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%9C%AC%E7%A7%91%E5%AD%A6%E7%A7%91%E3%80%81%E5%B9%B3%E5%9D%87%E8%96%AA%E8%B5%84%E4%B8%8E%E6%80%BB%E8%AE%BF%E9%97%AE%E9%87%8F%E6%AF%94%E4%BE%8B%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%B7%A5%E5%AD%A6%E5%AD%A6%E7%A7%91%E3%80%81%E5%B9%B3%E5%9D%87%E8%96%AA%E8%B5%84%E4%B8%8E%E6%80%BB%E8%AE%BF%E9%97%AE%E9%87%8F%E6%AF%94%E4%BE%8B%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E7%90%86%E5%AD%A6%E5%AD%A6%E7%A7%91%E3%80%81%E5%B9%B3%E5%9D%87%E8%96%AA%E8%B5%84%E4%B8%8E%E6%80%BB%E8%AE%BF%E9%97%AE%E9%87%8F%E6%AF%94%E4%BE%8B%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E4%B8%93%E7%A7%91(%E9%AB%98%E8%81%8C)%E5%AD%A6%E7%A7%91%E3%80%81%E5%B9%B3%E5%9D%87%E8%96%AA%E8%B5%84%E4%B8%8E%E6%80%BB%E8%AE%BF%E9%97%AE%E9%87%8F%E6%AF%94%E4%BE%8B%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E4%BA%A4%E9%80%9A%E8%BF%90%E8%BE%93%E5%A4%A7%E7%B1%BB%E5%AD%A6%E7%A7%91%E3%80%81%E5%B9%B3%E5%9D%87%E8%96%AA%E8%B5%84%E4%B8%8E%E6%80%BB%E8%AE%BF%E9%97%AE%E9%87%8F%E6%AF%94%E4%BE%8B%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E5%8C%BB%E8%8D%AF%E5%8D%AB%E7%94%9F%E5%A4%A7%E7%B1%BB%E5%AD%A6%E7%A7%91%E3%80%81%E5%B9%B3%E5%9D%87%E8%96%AA%E8%B5%84%E4%B8%8E%E6%80%BB%E8%AE%BF%E9%97%AE%E9%87%8F%E6%AF%94%E4%BE%8B%E5%9B%BE.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E6%9C%AC%E7%A7%91%E7%83%AD%E9%97%A8%E4%B8%93%E4%B8%9ATOP20.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E4%B8%93%E7%A7%91(%E9%AB%98%E8%81%8C)%E7%83%AD%E9%97%A8%E4%B8%93%E4%B8%9ATOP20.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E3%80%90%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%BA%94%E7%94%A8%E6%95%B0%E5%AD%A6%E3%80%91%E5%B0%B1%E4%B8%9A%E8%A1%8C%E4%B8%9A%E5%88%86%E5%B8%83.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E3%80%90%E7%94%B5%E7%A3%81%E5%9C%BA%E4%B8%8E%E6%97%A0%E7%BA%BF%E6%8A%80%E6%9C%AF%E3%80%91%E5%B0%B1%E4%B8%9A%E5%B2%97%E4%BD%8D%E5%88%86%E5%B8%83.png) ![](https://gitee.com/yangguojuan/python_Flask_final/raw/master/images/%E3%80%90%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E4%B8%8E%E6%8A%80%E6%9C%AF%E3%80%91%E5%B0%B1%E4%B8%9A%E5%B2%97%E4%BD%8D%E5%88%86%E5%B8%83.png)