利用Python实现岗位的分析报告是一个基于数据分析的任务,需要按照以下步骤进行:
1. 收集数据
收集数据是实现报告的第一步,需要从合适的渠道获取所需的数据。其中,常用的数据源包括:
- 爬虫:可以通过scrapy等爬虫框架获取数据源,如boss直聘等招聘网站的招聘信息等。
- API:若所需数据源具有开放API接口,我们可以根据接口文档和调用方式,利用requests等库通过API获取。
- 数据库:如果数据已经存在于数据库中,我们可以使用ORM框架例如sqlalchemy,进行数据查询和导出。
2. 数据清洗
数据清洗是每一个数据分析项目的必要工作。可以使用pandas等数据框架来进行数据的清洗和预处理。具体需要进行的工作包括:
- 数据去重:判断数据是否有重复项,若有则删除。
- 缺失值填充:判断数据是否有缺失值,若有则进行填充,可选择填充平均值、中位数等。
- 数据类型转换:将字符型数据转化为数值型数据。
3. 数据分析
数据清洗完后,就能进行数据分析。数据分析可使用pandas等数据框架进行。常用的数据分析方式有:
- 统计数量:计算薪水最高/最低/平均值,公司数量等数量上的统计分析。
- 可视化分析:使用matplotlib、seaborn等可视化库,将数据绘制成条形图、折线图、热力图等各式各样的图表,以便于进行更直观的数据分析。
4. 结论与报告
在完成数据分析后,我们可以根据数据的分析结果,得出相关结论,并根据需要转换为报告。报告可以以图表、表格等形式展示,也可以进行文本描述,更可选择使用markdown等文件格式来展示分析过程中的代码及结果。
示例1
以下是一个实例:我们从boss直聘中获取了python工程师的招聘信息。我们可以使用pandas对数据进行清洗和分析,并使用matplotlib进行可视化。
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('boss_python.csv')
# 数据清洗
df.drop_duplicates(inplace=True)
df.dropna(inplace=True)
df['salary_min'] = df['salary'].apply(lambda x: int(x.split('-')[0]))
df['salary_max'] = df['salary'].apply(lambda x: int(x.split('-')[1][:-1]))
df['salry_mean'] = (df['salary_min'] + df['salary_max']) / 2
df = df[['company_name', 'work_name', 'work_year', 'education', 'city', 'salary_min', 'salary_max', 'salry_mean', 'welfare', 'work_addr']]
# 数据统计分析
city_df = pd.DataFrame(df['city'].value_counts())
salary_min_df = df.groupby(['city'])['salary_min'].mean()
salary_max_df = df.groupby(['city'])['salary_max'].mean()
salry_mean_df = df.groupby(['city'])['salry_mean'].mean()
# 可视化分析
city_df.plot(kind='bar')
plt.title('Python工程师岗位城市分布')
plt.show()
salary_min_df.plot(kind='bar')
plt.title('Python工程师岗位最低工资')
plt.show()
salary_max_df.plot(kind='bar')
plt.title('Python工程师岗位最高工资')
plt.show()
salry_mean_df.plot(kind='bar')
plt.title('Python工程师岗位平均工资')
plt.show()
示例2
以下是另一个实例,我们借助爬虫工具和pandas,从智联招聘中获取大数据工程师的招聘信息,对其进行统计分析。
import requests
from lxml import etree
import pandas as pd
import matplotlib.pyplot as plt
url = 'https://fe-api.zhaopin.com/c/i/sou'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Safari/537.36'
}
# 爬虫获取数据
def get_data(page):
params = {
'pageSize': '90',
'cityId': '538',
'workExperience': '-1',
'education': '-1',
'companyType': '-1',
'employmentType': '-1',
'jobWelfareTag': '-1',
'kw': '大数据工程师',
'kt': '3',
'lastUrlQuery': '{"p":' + str(page) + ',"pageSize":"90","jl":"538"}',
'showId': 'af3484d9e633491ea862abf2bd618ddb',
'page': page
}
res = requests.get(url, headers=headers, params=params)
data = res.json()
return data['data']['results']
df = pd.DataFrame()
for page in range(1, 6):
data = get_data(page)
page_df = pd.DataFrame(data)
df = pd.concat([df, page_df])
df.to_csv('zhilian_bigdata.csv')
# 数据清洗
df.drop_duplicates(inplace=True)
df.dropna(inplace=True)
df['salary_min'] = df['salary'].apply(lambda x: int(x.split('-')[0]))
df['salary_max'] = df['salary'].apply(lambda x: int(x.split('-')[1][:-4]))
df['salry_mean'] = (df['salary_min'] + df['salary_max']) / 2
df = df[['company', 'jobName', 'workingExp', 'eduLevel', 'city', 'salary_min', 'salary_max', 'salry_mean', 'welfare', 'emplType']]
# 数据统计分析
city_df = pd.DataFrame(df['city'].value_counts())
salary_min_df = df.groupby(['city'])['salary_min'].mean()
salary_max_df = df.groupby(['city'])['salary_max'].mean()
salry_mean_df = df.groupby(['city'])['salry_mean'].mean()
# 可视化分析
city_df.plot(kind='bar')
plt.title('大数据工程师岗位城市分布')
plt.show()
salary_min_df.plot(kind='bar')
plt.title('大数据工程师岗位最低工资')
plt.show()
salary_max_df.plot(kind='bar')
plt.title('大数据工程师岗位最高工资')
plt.show()
salry_mean_df.plot(kind='bar')
plt.title('大数据工程师岗位平均工资')
plt.show()
以上两个实例,分别从boss直聘和智联招聘中获取工程师岗位数据,并通过pandas、matplotlib等工具进行数据处理和分析,并使用可视化图表展示分析结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Python实现岗位的分析报告 - Python技术站