# pandas数据分析基础 **Repository Path**: LITONGTONG/data_analysis_basis_of_pandas ## Basic Information - **Project Name**: pandas数据分析基础 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2020-04-27 - **Last Updated**: 2025-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pandas期末项目(可视化高考志愿填报参考指南) #### 查看ipynb电子讲义麻烦下载仓库中的期末项目文件夹 ## MVP价值主张宣言 该项目主要是为2020年高考毕业生(主要是高考分数处于本科一批录取批次的湖南考生)提供一份包括历年高考分数线以及2020年全国大学排名数据的数据可视化图表集,帮助考生在填报志愿时能更清晰直观地了解到全国各地历年文理科本科一批最低录取分数在空间及时间维度上的差异与变化,全国各地区排名200强的地区分布情况和50强各大高校的各项得分情况,以及近十年各行业平均工资变化对比(看各行业就业前景),给予考生填报志愿一定程度上的参考意见。 ## 问题表述 * 用户画像:2020年高考毕业生(主要是高考分数处于本科一批录取批次的湖南考生) * 用户痛点:对于高考考生来说,高考分数决定了考生能够进入什么样的大学,但是填报志愿在某种意义上来说也与高考分数一样重要,每位考生都希望以最低的分数考入最好的大学,实现填报志愿的最优化。但在高考考生填报志愿阶段,面对厚厚的报考指南,许多考生都会手足无措,因为报考指南中大量的数据难以查找且无法直观地进行数据对比。 * 用户需求:一份展现报考指南数据可视化图表 * 用户使用场景:小明是今年湖南省的一名理科学生,在高考填报志愿期间,面对包含着海量数据的厚厚的一本报考指南,他难以找到想要查看的学校分数数据,并且当他想要将几个学校的分数进行对比时发现翻页十分麻烦,于是他想到网上寻找更能清晰直观展示数据的相关资料。 * 用户增长点/益点:通过查看此份可视化填报指南,考生能更清晰直观地了解到全国各地历年文理科本科一批最低录取分数在空间及时间维度上的差异与变化,全国各地区排名200强的地区分布情况和50强各大高校的各项得分情况,以及近十年各行业平均工资变化对比(看各行业就业前景),选择到更适合自己填报的学校及专业。 ## 解决方案表述 ### 数据分析目标 #### 关键数据来源及其对问题情境的相关性 本项目采用的数据源是2014-2019年中国各省高考分数线数据以及2020年全国大学排名数据,其中,2014-2019年中国各省高考分数线原始数据基本栏位包括:学校名称、平均分、年份、录取批次、招生地址、招生类型、最低分、省份、省控线、考生类别,主要涉及了历年来各个地区学校面向各个地区各类型考生的分数线情况; 2020年全国大学排名原始数据基本栏位包括:排名、学校名称、省市、学校类型、总分、办学层次得分、学科水平得分、办学资源得分、师资规模与结构得分、人才培养得分、科学研究得分、社会服务得分、高端人才得分、重大项目与成果得分、国际竞争得分,主要涉及了2002年全国各地区各大高校的排名情况以及其各方面得分情况。 城镇单位就业人员平均工资&国有单位就业人员平均工资原始数据包括:行业、年份,主要涉及了城镇单位及国有单位近十年的平均工资情况。 #### 目标数据介绍 * [2014-2019年中国各省高考分数线数据](https://www.kesci.com/home/dataset/5efe9f4463975d002c989058): 分别筛选出全国各地区学校面向湖南考生的本科一批文科最低录取分数以及本科一批理科最低录取分数,再进行两表合并,可看出2014-2019全国各地本科一批文理科高考最低录取分情况 * [2020年全国大学排名数据](https://www.kesci.com/home/dataset/5ef44a1663975d002c8f5dff): 1. 筛选出2020全国大学排名200强,利用可视化图可看出这200强学校在各个地区的分布情况,查看各地区教育资源及教育氛围情况 2. 筛选出2020全国大学排名50强以及其学科水平得分、师资规模与结构得分、人才培养得分、国际竞争力得分,利用可视化看50强学校各方面得分情况,方便考生填报志愿时进行对比考量 * [城镇单位就业人员平均工资&国有单位就业人员平均工资数据](http://data.stats.gov.cn/easyquery.htm?cn=C01) 直接读取数据 ### 数据整理、清洗、重塑的数据流程介绍 #### 2014-2019年中国各省高考分数线数据: * 数据整理:导入模块——读取数据 * 数据清洗:处理缺失值和异常值——转换某些列数据类型——筛选招生地址列中的“湖南”——筛选录取批次中的“本科一批”——分别筛选考生类别中的“文科”和“理科”/删除学校名称中的重复值 * 数据表格分进合击:分别groupby及计算每一年各个地区的文科本科一批录取最低分及每一年各个地区的理科本科一批录取最低分/groupby及计算各个地区的学校数量 #### 2020年全国大学排名数据: * 数据整理:导入模块——读取数据 * 数据清洗:1.筛选排名中的前200 2.筛选排名中的前50——筛选'学科水平得分'、'师资规模与结构得分'、'人才培养得分'、'国际竞争力得分' * 数据表格分进合击:1.groupby全国各个地区排名前200的大学数量 2.groupby排名前50大学的'学科水平得分'、'师资规模与结构得分'、'人才培养得分'、'国际竞争力得分'情况 ### 数据分析结果价值宣言 该项目的数据分析结果主要是面向湖南考生的2014-2019年全国各地区文理科高考录取最低分数、全国各地区排名200强大学数量分布情况以及全国排名50强大学的各项得分情况,涉及到了地图热力可视化图表、时空交互可视化图表、时空交互地图可视化图表、地图热点可视化图表、时间轴柱状图;该数据分析结果能在一定程度上给予2020届处于本科一批录取批次的湖南考生填报志愿的参考意见,让考生能够通过这些可视化图表了解到全国各地历年文理科本科一批最低录取分数在空间维度以及时间维度上的差异与变化,全国各地区排名200强的地区分布情况和50强各大高校的各项得分情况,以及近十年各行业平均工资变化对比(看各行业就业前景),选择填报到更加适合自身的学校。 ### 数据可视化成果 * 2014-2019全国各地本科一批文理科高考最低录取分 ![2014-2019全国各地本科一批文理科高考最低录取分](https://images.gitee.com/uploads/images/2020/0719/073603_2b1cc58d_2230727.png "2014-2019全国各地本科一批文理科高考最低录取分.png") * 2014-2019全国各地本科一批理科高考最低录取分 ![](https://images.gitee.com/uploads/images/2020/0719/091304_822bcb0b_2230727.png "2014-2019全国各地本科一批理科高考最低录取分.png") * 2014-2019全国各地本科一批文科高考最低录取分 ![](https://images.gitee.com/uploads/images/2020/0719/091336_922b682b_2230727.png "2014-2019全国各地本科一批文科高考最低录取分.png") * 2019年全国各地区理科本科一批高考录取最低分 ![2019年全国各地区理科本科一批高考录取最低分](https://images.gitee.com/uploads/images/2020/0719/073652_56d96ea6_2230727.png "2019年全国各地区理科本科一批高考录取最低分.png") * 2019年全国各地区文科本科一批高考录取最低分 ![2019年全国各地区文科本科一批高考录取最低分](https://images.gitee.com/uploads/images/2020/0719/073715_4673bb99_2230727.png "2019年全国各地区文科本科一批高考录取最低分.png") * 全国各地区大学数量(玫瑰图) ![](https://images.gitee.com/uploads/images/2020/0724/213617_2d018c5e_2230727.png "全国各地区大学数量.png") * 2020全国排名200强大学各地区分布数量 ![2020全国排名200强大学各地区分布数量](https://images.gitee.com/uploads/images/2020/0719/073754_48b9e23b_2230727.png "2020全国排名200强大学各地区分布数量.png") * 2020全国大学排名50强各方面得分情况 ![2020全国大学排名50强各方面得分情况](https://images.gitee.com/uploads/images/2020/0719/073818_66d0f9f7_2230727.png "2020全国大学排名50强各方面得分情况.png") * 2010-2018年城镇单位各行业就业人员平均工资 ![](https://images.gitee.com/uploads/images/2020/0725/001542_95092116_2230727.png "城镇平均工资.png") * 2010-2018年国有单位各行业就业人员平均工资 ![](https://images.gitee.com/uploads/images/2020/0725/001612_af97becb_2230727.png "国有平均工资.png") ### IDEO三要素 * Viability商业可行性:有利于考生从图表可视化数据中发现关联、规律和特征,获得一定洞察和价值,实现让数据说话的目的 * Feasibility技术可行性:pandas数据整理、清晰、重塑能力+数据分析思维能力 * Desirability用户可欲性:高考考生对于海量报考相关数据无从下手,希望能获得更为清晰直观的数据呈现 ### 数据分析结果价值宣言 该项目的数据分析结果主要是面向湖南考生的2014-2019年全国各地区文理科高考录取最低分数、全国各地区排名200强大学数量分布情况以及全国排名50强大学的各项得分情况,涉及到了地图热力可视化图表、时空交互可视化图表、时空交互地图可视化图表、地图热点可视化图表、时间轴柱状图;该数据分析结果能在一定程度上给予2020届处于本科一批录取批次的湖南考生填报志愿的参考意见,让考生能够通过这些可视化图表了解到全国各地历年文理科本科一批最低录取分数在空间维度以及时间维度上的差异与变化,以及全国各地区排名200强的地区分布情况和50强各大高校的各项得分情况,选择填报到更加适合自身的学校及专业。 ## 数据分析思路及方法 ![](https://images.gitee.com/uploads/images/2020/0725/003038_69d6e37a_2230727.jpeg "数据分析思路.jpg") * 历年高考分数线数据 1. 数据整理 ``` # 导入模块 import pandas as pd # 读取数据 df = pd.read_csv("高考分数线.csv", encoding="gbk", sep=',') df.head() ``` 2. 数据清洗 ``` # 利用fillna方法填充(暂无)处理[录取批次]和[招生地址]中的缺失值 df[['录取批次']]=df[['录取批次']].fillna('暂无') df[['招生地址']]=df[['招生地址']].fillna('暂无') # 先用isin选出[最低分]中带有'-'和'字段6'的行,因无意义~反选删去 df=df[~df['最低分'].isin(['-'])] df=df[~df['最低分'].isin(['字段6'])] # 利用isin的反选方法处理[考生类别]中的'蒙授理科'和'蒙授文科',因无需该数据删去 df=df[~df['考生类别'].isin(['蒙授理科','蒙授文科'])] ``` ``` # 删除学校名称中的重复值 df = df.drop_duplicates(['学校名称']) df ``` 3.筛选数据 ``` # 利用==筛选出[录取批次]列中所有包括(本科一批)的行 df_本科一批 = df[df['录取批次']=='本科一批'] # 筛选面向湖南的招生数据 df_湖南_本科一批 = df_本科一批[df_本科一批['招生地址']=='湖南'] df_湖南_本科一批理科 = df_湖南_本科一批[df_湖南_本科一批['考生类别']=='理科'] df_湖南_本科一批文科 = df_湖南_本科一批[df_湖南_本科一批['考生类别']=='文科'] ``` 4. 分进合击出报表 ``` # 2019年全国各地区高校理科本科一批高考录取最低分(面向湖南考生) # 利用gruopby函数设置[年份][省份](每一年对应的每个省份)作为索引,并通过min计算出其对应的最低分中的最低分 # 通过rename重命名最低分为理科最低分 df_理科最低分 = df_湖南_本科一批理科.groupby(by= ["年份","省份"]) \ .agg({"最低分":"min"}) \ .rename(columns={"最低分":"理科最低分"}) # 2019年全国各地区高校文科本科一批高考录取最低分(面向湖南考生) # 同样计算出每一年对应的各个地区的文科本科一批录取最低分 df_文科最低分 = df_湖南_本科一批文科.groupby(by= ["年份","省份"]) \ .agg({"最低分":"min"}) \ .rename(columns={"最低分":"文科最低分"}) # 2014-2019年全国各地本科文理科高考最低录取分(面向湖南考生) # 用merge方法合并“df_理科最低分”和“df_文科最低分”两个表格,how='outer'表示取两个表格的并集,on=['年份','省份']表示将这两列作为索引 df_文理科=pd.merge(df_理科最低分,df_文科最低分,how='outer',on=['省份','年份']) df_文理科 ``` ``` # 计算各地区高校数量 df_高校数量 = df.groupby(by= ["省份"]) \ .agg({"学校名称":"count"}) \ .rename(columns={"学校名称":"学校数量"}) df_高校数量 ``` * 2020中国大学排名数据 1. 数据整理 ``` # 导入所需模块 import pandas as pd import pandas as pd import plotly as py import cufflinks as cf # 读取数据 df1 = pd.read_csv("2020年中国大学排名.csv", encoding="utf-8", sep=',') df1.head() ``` 2. 筛选数据 ``` # 筛选2020全国大学排名200强 df1_200 = df1.head(200) # 筛选2020全国大学排名50强 df1_50=df1.head(50) # 筛选所需的列 df1_50 = df1_50.loc[:,['学校名称','学科水平得分','师资规模与结构得分','人才培养得分','国际竞争力得分']] ``` 3. 分进合击出报表 ``` # 筛选全国排名200强大学在各地区的数量 df1_200 = df1_200.groupby(by= ["省市"]) \ .agg({"学校名称":"count"}) \ .rename(columns={"学校名称":"学校数量"}) ``` ## 数据分析流程及成果 ![](https://images.gitee.com/uploads/images/2020/0725/112419_24b85672_2230727.jpeg "数据流程及结果.jpg") * 历年高考分数线数据 首先,在进行数据分析之前,需要明确我们的最终需要获得的数据。在历年高考分数线这一数据中,我想要获得的是2014-2019年面对湖南考生招生的全国各个地区高校的本科一批文理科最低录取分数(方便考生查看往年数据,了解大致情况),那么整个分析的大概流程就是先筛选各项信息:面对湖南考生——筛选【招生地址】中的【湖南】、本科一批——筛选【录取批次】中的【本科一批】、文科/理科——筛选【考生类别】中的【文科】/【理科】;然后再将其重新按新设置的索引【年份】——【省份】计算每年对应的各个地区的【文科最低分】/【理科最低分】获得新的表格;最后,将文科/理科两张表格合并在一起形成新的表格,即2014-2019全国各地本科一批文理科高考最低录取分。 而想要将全国各地区高校数量可视化,就需要先将表格中学校名称重复的值删去,只留下独一无二的各个学校名称,然后再将其进行计算各地区数量,最后获得一份各个地区的大学数量表格。 在2020全国大学排名这一数据中,我想要获得的数据是全国200强高校在各个地区的分布数量以及全国50强高校的各项评分情况(方便考生查看各个地区教育资源如何以及各高校各项评分如何以进行挑选),步骤即:第一步,分别筛选200强和50强的高校信息;第二步,对200强高校按各地区计算学校数量。 ## 学习/实践心得总结及感谢 通过本项目的实践,我切身了解到关于数据思维以及逻辑性的重要性,对于数据分析来说,不仅需要一定的技术能力,更为重要的还是数据思维方法。并且通过数据分析,我们可以做到让数据说话,说服力强的同时也清晰直观展现出数据之间的比较、变化趋势等时间空间维度方面的信息。 最后,感谢和鲸社区的数据来源支持[2014-2019年中国各省高考分数线数据](https://www.kesci.com/home/dataset/5efe9f4463975d002c989058)/[2020年全国大学排名数据](https://www.kesci.com/home/dataset/5ef44a1663975d002c8f5dff),以及老师的指导和帮助。设计思维及数据思维的融合的“混合心智模型”在很大程度上锻炼了我的逻辑思维能力,并且需要结合其他课程所学知识进行项目构思、综合运用,对我来说既是挑战也是收获。 ## 学习参考链接 * [Python数据可视化之Plotly使用](https://mathpretty.com/11919.html) * [Choropleth Maps in Python](https://plotly.com/python/choropleth-maps/) * [Plotly R Open Source Graphing Library](https://plotly.com/r/) * [【Pyecharts教程1】让你的图表动起来~](https://www.kesci.com/home/project/5e4bd73f80da780037be6b61) * [Sliders in Python](https://plotly.com/python/sliders/) * [【pyecharts教程】应该是全网最全的教程了~](https://www.kesci.com/home/project/5eb7958f366f4d002d783d4a) * [【Pyecharts】奥运会数据集可视化分析~](https://www.kesci.com/home/project/5e7c458298d4a8002d2dae15) * [[python][科学计算][pandas]简要使用教程(汇总)](https://www.jianshu.com/p/e0fc57e4fbbf) * [Python数据分析实战基础 | 清洗常用4板斧](https://mp.weixin.qq.com/s?__biz=MzU5Mjg2OTQ1MA==&mid=2247484160&idx=1&sn=c1ed435f441c2b53751fec3558e7edee&chksm=fe186225c96feb330e129a47ff979301f6dcdc042ce24fa7b23f61e21d6c13a30e25d00f469d&scene=21#wechat_redirect) * [Python数据分析实战基础 | 灵活的Pandas索引](https://mp.weixin.qq.com/s?__biz=MzU5Mjg2OTQ1MA==&mid=2247484131&idx=1&sn=137286d36c707e10bbc761681a666654&chksm=fe1863c6c96fead0e7b2ab9af2db28f0c26df2b878eb66930e69f23bdc611b7f34cadb0b7d50&scene=21#wechat_redirect) * [Pandas之超好用的Groupby用法详解](https://zhuanlan.zhihu.com/p/101284491) * [10分钟了解Pandas基础知识](https://segmentfault.com/a/1190000018281039?utm_source=tag-newest) * [Pandas-筛选数据](https://www.jianshu.com/p/a592bc65c9ce) * [Python Pandas教程推荐,全网最佳,没有之一](https://zhuanlan.zhihu.com/p/151739804) * [Pandas数据分析教程——超好用的Groupby用法详解](https://www.jianshu.com/p/b50941b6d229) * [Built-in Continuous Color Scales in Python](https://plotly.com/python/builtin-colorscales/) * [使用Python轻松应对一维表与二维表相互转换](https://www.jianshu.com/p/5a09b4aa5fb2)