一、读取文件并转为csv
这里要注意,很多网站上直接下载的文件都不是utf-8编码的,在用
pd.read_csv()函数读取的时候会报错,因此解决方案如下
数据格式错误,如果要使用CSV文件,先将xls转为csv,
然后将csv用文本文档打开,另存为到需要的文件夹,(文件的扩展名还是csv不变)点开另存为最下面会有编码,将格式转为utf8(在最下面)然后再打开就好了
然后就可以使用pd.read_csv()方法读取了,我们在此以河北省公务员考试招考岗位为例
data_hb = pd.read_csv("河北.csv",encoding = "utf-8",header=0)
二、简单处理并筛选有用信息
因为这个表格有很多列中有空格,这样筛选的时候会报错,例如专业要求中有空格,应该代表的是不限专业,我们先将空格用字符替代
data_hb = pd.read_csv("河北.csv",encoding = "utf-8",header=0)
data_hb['其他要求'] = data_hb['其他要求'].fillna('不限')
data_hb['学位低限'] = data_hb['学位低限'].fillna('不限')
data_hb['专业要求'] = data_hb['专业要求'].fillna('不限')
筛选想要的数据
表格中有4k多条单位信息,我们需要将适合我们的岗位一一筛除,这就需要在某些有要求的列中选出符合我们条件的行,例如自己是本科,那在‘学历底线’这一列,就要本科,contains()方法可以做筛选,参数可以直接写筛选条件,也可以用列表写多个筛选条件然后再传入contains中。data_hb[~data_hb['其....这里的‘~’号是不包含含有这些字眼的行的意思.
因此,我们以专业名称含有‘文’和不限专业为例,(其实就是中文专业),考区我们选择了河北的四个城市,在其他要求中,我们舍去男性,年以上是‘n年以上工作经验的意思’(在相应位置的要求中出现这个字眼就可以匹配出来),相应的,也不选要证书的岗位,等等。
List1 = ['年以上','男性','证书','公安机关','基层','视力','年限']
data_hb=data_hb[~data_hb['其他要求'].str.contains('|'.join(List1))] #删除资格条件列含有2年工作经验的行等的
List2 = ['文','不限']
data_hb=data_hb[data_hb['专业要求'].str.contains('|'.join(List2))]
List3 = ['本科']
data_hb=data_hb[data_hb['学历低限'].str.contains('|'.join(List3))]
List4= ['石家庄','邢台','保定','雄安']
data_hb=data_hb[data_hb['考区'].str.contains('|'.join(List4))] #删除资格条件列含有2年工作经验的行等的
print(data_hb.shape)
筛选完想要的内容,可以打印看看有多行列
print(data_hb.shape)
最后可以将筛选出的内容保存起来
data_hb.to_csv('河北考公筛选.csv')
三、简单分析一下数据
筛选完了内容,那如果想看一下整体的招考情况呢?词云也许是一个好的选择
比如我们把这次河北招考的专业要求制作成词云图,看看那些专业在公考中广泛
# 读取csv
name=pd.read_csv('河北.csv')
name['专业要求'] = name['专业要求'].fillna('') #依旧要做空值处理
name_list=name['专业要求'].tolist()
# jieba分词
text=''.join(name_list)
txt=' '.join(jieba.cut(text))
# 设置词云参数
w = wordcloud.WordCloud(background_color="white",
font_path='./fonts/simhei.ttf',
width=1600,height=800,
max_words=2000).generate(txt)
#生成图片
plt.imshow(w)
w.to_file('wordcloud1234.png')
结果如下
可以看出文学专业在公考中的地位,另外法学和经济,计算机也很多。
我们再看看按照其他要求和单位制作的词云
可以看到应届生在公考中的优势很明显,这些也是公认的,只不过词云更加直观
关于招考单位,这次的单位看起来各个监管局提供了不少岗位
关于数据分析的学习还在继续,希望以后能把自己想要的信息更科学直观的分析出来,提升信息获取的效率和质量。