1、导入用于分析和可视化作图的库
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns #seaborn也很强大,可以小试一下
da=pd.read_csv('D:/datasource/mycrawldata/dataanylist.csv')
da.head()
da.columns
da.shape #查看数据的行列数,这里是(465, 7)
da.describe().T
da.dtypes #查看每列数据的类型
da.size #查看数据的总个数,这里是3255
da.info() #查看数据基本信息
da.count() #统计没列数字个数
da['benefit'].value_counts() #岗位福利这一列的分类数量统计
上述代码的后面几行代码是pandas常见的函数,用于查看数据源的基本信息,大家可以自行尝试使用。下面挑几个重要函数讲解。
da.head() 用来查看数据前前面几行数据,默认为5,同样tail()是末尾5行数据。
da.columns用于查看列名,类似SQL里的show columns from tablename;语句。
da.describe()查看数据简单统计描述,类似SQL里describe tablename;后面加T是转置,为了便于观看。实际应用时常配合groupby功能一起使用。
数据切片示例:
da['comanpy name'][3]
da['comanpy name'].size
#'中邮消费金融'
da['comanpy name'][3][:2]
#'中邮'
3、数据加工
数据加工包括去重,补缺等清洗和处理等工作,这里没有重复和缺失的内容。考虑到网站提供的薪资是一个范围,并且以K为单位。为了便于后面的统计分析,我们增加一列,把范围转化成确切的均值数字,如建信金科提供的薪资为 16k-30k,可以转化成18k。具体操作如下:
#把工资转化成均值
da['salaryavg']=list(map(lambda x:x.replace('k',''),da['salary'])) #首先出去"K"
da['finalsalaryavg']=list(map(lambda x: (int(x.split('-')[0])+int(x.split('-')[1]))/2,da['salaryavg'])) #然后用"-"做split处理,获得两个数字,求平均数作为最终平均薪资
da.describe() #由于平均薪资列为数字,用这个函数的效果就出来了,请见下图
da[da['finalsalaryavg']==3.5] #找出最低值
da.sort_values(by='finalsalaryavg',ascending=False,inplace=True) #按照工资排序
#bar柱状图
#注意Bin labels must be one fewer than the number of bin edges
labels=['{}-{}'.format(i,i+5) for i in range(0,50,5)]
da['salaryrange']=pd.cut(da['finalsalaryavg'],range(0,51,5),labels=labels) #用cut函数对工资做区间归类,
da['salaryrange'].value_counts().plot(kind='bar',rot=20,colormap='summer')
plt.xlabel('salary range');plt.ylabel('nof of jobs');plt.title('salary and number of jobs')
plt.show()
#饼图
da['salaryrange'].value_counts().plot(kind='pie',autopct='%1.2f%%',labeldistance=1)
```python
#直方图
s1=da['finalsalaryavg'].plot(kind='hist',bins=10,alpha=0.9,figsize=(10,5),grid=True,legend=True,title='Salary Distribution')
#密度分布图
da['finalsalaryavg'].plot.density()