机器学习入门(1)---程序员薪资数据分析可视化

话不多说上代码,爬取一些数据进行可视化和机器学习演练

#数据分析库
import pandas as pd
#科学计算库
import numpy as np 
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号


data_all = pd.read_excel("alldata.xlsx")
#这里如果使用read—_csv会产生报错,因为d.read.csv默认分隔符是“,”,倘若文档中存在该字符,则会自动分割
#解决办法:改变默认的分隔符
'''
在pd.read_csv中加入参数sep设置为None或者别的字符如\t
如:
data = pd.read_csv(“E:/test/datas/new/11-new.txt”,encoding=“utf-8”,header=None,sep = None)
'''
print(data_all.head(5))#查看前五行
print(data_all.info())#查看 基本信息
#可以看到,数据共1305条,数据类型,以及数据并无缺失,这里省略数据空值处理的过程
'''公司代号与其他关系不大,暂且忽略'''
#接下来划分数据集
print('简单做图')
#首先我们来看特征的基本情况
x = data_all['城市']
y =data_all['薪水']
q = data_all['职位名称']
#value_counts()pandas 的value_counts()函数可以对Series里面的每个值进行计数并且排序。
x.value_counts().plot.pie(labeldistance = 1.1,autopct = '%1.2f%%',
                                               shadow = False,startangle = 90,pctdistance = 0.6,figsize=(10,10),fontsize =20)
plt.show()
#labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
#autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
#shadow,饼是否有阴影
#startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
#pctdistance,百分比的text离圆心的距离
#patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本
#figsize,图片的尺寸
#可以看到北上广深占比最大,其次为成都,杭州,武汉等新一线城市



在这里插入图片描述

#可以看到北上广深占比最大,其次为成都,杭州,武汉等新一线城市
y.value_counts().plot.pie(labeldistance = 1.1,autopct = '%1.2f%%',
                                               shadow = False,startangle = 90,pctdistance = 0.6,figsize=(10,10),fontsize =20)
#可以看到薪资的绝大多数在15k-30k
plt.show()

在这里插入图片描述
接下来按照职位名称来可视化,但是其实并没有什么意义,因为数据集原本就是按照数据分析师,python工程师和前端工程师爬取下来的

q.value_counts().plot.pie(labeldistance = 1.1,autopct = '%1.2f%%',
                     shadow = False,startangle = 90,pctdistance = 0.6,figsize=(10,10),fontsize =20)

在这里插入图片描述
接下来大概看一下城市与薪资,薪资与工作年限等等的关系

print('数据集划分')
from sklearn.utils import shuffle
df = shuffle(data_all,random_state = 25)#使用sklearn打乱数据集
train= df[0:900]
test= df[901:1305]
print('接下来看一下特征之间的基本关系')
print(train.groupby(['城市','薪水'])['薪水'].count())

在这里插入图片描述

print(train.groupby(['工作年限','薪水'])['薪水'].count())

在这里插入图片描述

print('接下来看一下特征之间的基本关系')
print(train.groupby(['城市','最小值'])['最小值'].count())
print(train.groupby(['城市','最大值'])['最大值'].count())

在这里插入图片描述

#绘图
train[['最小值','最大值']].groupby(train['城市']).mean().plot.bar(figsize=(10,10))
plt.show()

这里绘图查看一下各个城市中程序员薪资的最大值与最小值情况
在这里插入图片描述
可以看出来什么也不太清楚,但是显然一线城市的薪资最高值与最低值比二三线城市要高出许多,这也符合我们的日常认知。
接下来我们来看一下工作年限与薪资的关系

train[['最小值','最大值']].groupby(train['工作年限']).mean().plot.bar(figsize=(10,10))

在这里插入图片描述
结果基本符合我们的日常认知,值得注意的是一年以下的工作年限薪资水平普遍低于应届毕业生,随后随着工作年限的增加而升高。
接下来查看一下公司规模

train[['最小值','最大值']].groupby(train['公司规模']).mean().plot.bar(figsize=(10,10))

在这里插入图片描述
接下来看一下薪资最小值、最大值分布

facet = sns.FacetGrid(train,hue="城市")
facet.map(sns.kdeplot,'最小值',shade=True)
facet.set(xlim=(0,train['最小值'].max()))
facet.add_legend()
 
plt.show()

在这里插入图片描述
在这里插入图片描述
可以看出城市的最低薪资最多在1w左右,最高薪资集中在1.8w左右

接下来 看一下不同的方向分类

train[['最小值','最大值']].groupby(train['职位名称']).mean().plot.bar(figsize=(10,10))

在这里插入图片描述
最后再给大家安利一个一行代码生成数据报告的强大工具
pandas_profiling
同样的pip install pandas_profiling 即可

import pandas_profiling
data_all = pd.read_excel("alldata.xlsx")
pfr = pandas_profiling.ProfileReport(data_all)
pfr.to_file("example.html")

即可生成网页版数据报告,上图
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
功能性可以说是十分强悍了!
(激动地搓手手)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值