如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
本文通过最近三年 “中国大学生计算机设计大赛” 的获奖数据(2021结果尚未揭晓),分析挖掘一下该比赛深层的一些内容,主要有以下几点:
- 各年各奖项的比例分布
- 各年得奖最多的学校 Top10
- 哪些学校多次进入得奖最多 Top10
- 各学校三年中参赛次数统计
- 各级别奖项中学校层次划分
- 参赛人数与奖项之间的关系
- 获奖作品名称热词
文中各部分中如果代码量较多的,为了阅读体验,就不进行展示,如需代码及相关文件可以私信我。
数据读取及描述
数据集是大赛官方提供的数据,2018、2019 年数据为.xlsx文件,2020 年数据为.pdf文件。先读取 2018 、2019 年数据,并观察一下数据集信息。
import pandas as pd
df_2018 = pd.read_excel('2018年决赛正式结果.xlsx', sheet_name='123等奖')
df_2019 = pd.read_excel('2019年大赛获奖作品名单公示20190907.xlsx')
df_2019.info()
通过上图中的信息可以看到,2018 年与 2019 年的数据集格式有挺大的差异,这些在之后合并时需要统一。
由于 2020 年的数据是 .pdf 文件,我们单独定义一个函数来读取。对于读取时的一些细节问题,都已在代码中以注释的形式标出。
import pdfplumber
def read\_pdf\_2020(read_path):
pdf_2020 = pdfplumber.open(read_path)
result_df = pd.DataFrame()
for page in pdf_2020.pages:
table = page.extract_table()
df_detail = pd.DataFrame(table[1:], columns=table[0])
# 合并每页的数据集
result_df = pd.concat([df_detail, result_df], ignore_index=True)
# 删除值全部是 NaN 的列
result_df.dropna(axis=1, how='all', inplace=True)
# 重置列名
result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']
return result_df
df_2020 = read_pdf_2020('2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf')
观察 2020 年的数据,相比于前两年的数据,它的各列都没有缺失值,但2020年的获奖信息中并没有包含作品类别这一列,所以我们处理数据集时要将前两年的类别列进行删除。这样,我们可以按照 2020 数据集的格式作为模板,将前两年的数据集转换为相同的格式,再进行合并。
数据预处理
各年数据集格式化
按照 2020 年格式,将 2018 年与 2019 年数据集中部分列进行合并,并更换列名,删除多余的列。并添加 “年份” 这一列。
下面是处理后的 2018 年与 2019 年数据。
对于 2020 年数据集的处理要注意,数据读取时是基于每页数据来读取的,如果在一页的最后一行数据较多,需要换行的话,那么下一页首行数据就会缺失,如下所示。
这种情况就需要先筛选出这些作品编号为空的行,在将数据添加到上一行中。
# 2020年数据集处理
clean_df_2020 = df_2020.copy()
# 部分信息过长导致在分页处被分割,分别出现在两页上,下面将奖项为空的数据添加到上一条数据的信息中。
clean_df_2020.iloc[609]['参赛学校'] += '医大学'
clean_df_2020.iloc[1330]['作品名称'] += '丹霞'
clean_df_2020.iloc[2121]['作品名称'] += '现'
clean_df_2020.iloc[2997]['作品名称'] += '云平台'
del_index = clean_df_2020.loc[clean_df_2020['奖项'] == ''].index
clean_df_2020.drop(del_index, inplace=True)
clean_df_2020.reset_index(drop=True, inplace=True)
clean_df_2020['年份'] = [2020 for _ in range(len(clean_df_2020))]
数据合并
现在合并三年的数据。合并后数据集如下。
数据清洗
现在我们要对合并后的数据集进行一些处理,以便更好地分析及可视化。由于之后我们要用到全国高校的一些基本信息,如学校层次(985 211等),所以需要导入 college_info.csv
,该数据是博主在 6月15日 爬取的,部分高职高专可能并未收录,对于这部分高校就将对应标签赋值为 “暂无数据” 。清除参赛学校和作品名称中的换行符“\n”,之后添加 参赛人数列 来记录 各作品作者人数 ,指导老师人数列 记录 该作品指导老师人数。
college_info = pd.read_csv('college\_info.csv')
college_name = college_info['学校名称'].values.tolist()
college_level = []
for college in all_df['参赛学校']:
if college not in college_name:
college_level.append('暂无数据')
else:
college_level.append(college_info['学校层次'][college_name.index(college)])
all_df['学校层次'] = college_level
all_df['参赛学校'] = all_df['参赛学校'].str.replace('\n|\r', '')
all_df['作品名称'] = all_df['作品名称'].str.replace('\n|\r', '')
# 删除作者为空的列
all_df.dropna(subset=['作者'], axis=0, inplace=True)
# 添加 参数人数 列来记录各作品作者人数
all_df['参赛人数'] = all_df['作者'].apply(lambda x: len(x.split('、')))
count_list = []
for index, row in all_df.iterrows():
try:
count_list.append(len(row['指导老师'].split('、')))
except:
count_list.append(0)
all_df['指导老师人数'] = count_list
all_df.to_csv('all\_df.csv', index=False)
all_df
处理后的数据集如下。
数据分析及可视化
各年奖项数量分布
统计三年中一等奖、二等奖、三等奖的占比,绘制层叠条形图。
'''
数据统计省略
'''
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
c = Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
c.add_xaxis([2018, 2019, 2020])
c.add_yaxis("三等奖", list1, stack="stack1", category_gap="70%")
c.add_yaxis("二等奖", list2, stack="stack1", category_gap="70%")
c.add_yaxis("一等奖", list3, stack="stack1", category_gap="70%")
c.set_series_opts(label_opts=opts.LabelOpts(
position="right",
formatter=JsCode(
"function(x){return Number(x.data.percent \* 100).toFixed() + '%';}"
),
)
)
c.render("./images/各年奖项数量分布堆叠条形图.html")
c.render_notebook()
从上图中观察发现,随着时间的推移,一等奖、二等奖的比例开始减少,三等奖比例增加,在 2020 年三等奖比例达到68%,不难看出赛方想要增加一等奖的含金量。
各年得奖最多的学校Top10
统计各年得奖最多的前 10 名学校的各项奖的数目,绘制图形。
从上图中大致可以看到很多大学不止一次出现在 Top10 当中,在这些学校中,一部分可能是因为学校比较重视该比赛。
下面使用韦恩图详细看一下,哪些学校多次进入得奖最多 Top10。
沈阳师范大学、沈阳工学院、辽宁工业大学在三年中都进入 Top10,还有一些其他两次进入 Top10 的学校, 其中东北部的大学明显较多。
各学校参加次数统计
现在统计各个学校的参赛次数,并计算各次数的学校数量。
from collections import Counter
all_school = []
for year in [2018, 2019, 2020]:
school_set = set(all_df.loc[all_df['年份'] == year, '参赛学校'].values.tolist())
all_school += list(school_set)
value_count = Counter(all_school)
count_list = ['参赛' + str(n) + '次' for n in value_count.values()]
counter = Counter(count_list)
from pyecharts.charts import Pie
c = Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
c.add("", [list(z) for z in zip(counter.keys(), counter.values())])
c.set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
c.render("./images/各学校参加次数统计饼图.html")
c.render_notebook()
在这三年的参赛学校中,三次参赛的占了一半左右,参赛一次和参赛两次的各占 25% 左右,这么说,参加比赛的学校还是愿意继续下一届继续去参加,说明该比赛是有吸引学校的地方。
各年参赛学校层次划分
统计各年参赛学校的层次,观察参加比赛学校的层次分布。
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!