🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【数据可视化-49】基于matplotlib的自由职业者收入和工作趋势数据集可视化分析
一、引言
在当今零工经济蓬勃发展的背景下,自由职业者收入和工作趋势的数据分析显得尤为重要。本文将利用自由职业者收入和工作趋势数据集,从多个维度进行可视化分析,深入探讨影响自由职业者收入和工作机会的关键因素。该数据集涵盖了15个特征,包括工作类别、平台、经验水平等,为自由职业者和研究人员提供了宝贵的数据支持。以下分析将使用Matplotlib库实现,提供完整的代码示例,以供读者参考和复现。
二、数据探索
2.1 数据集介绍
自由职业者收入和工作趋势数据集包含以下变量:
2.2 数据清洗探索
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 加载数据
df = pd.read_csv('freelancer_data.csv') # 请替换为实际文件路径
# 查看数据维度
df.shape
# 查看数据基本信息
print(df.info())
# 查看空值情况
print(df.isna().sum())
从数据基本信息可发现:
- 数据共15个维度,包含字符串和数值类型。
- 一个有1950条数据,而且数据中无缺失值。
三、单维度特征可视化
3.1 工作类别分布
plt.figure(figsize=(12, 6))
job_category_counts = df['Job_Category'].value_counts()
plt.bar(job_category_counts.index, job_category_counts.values, color='skyblue')
plt.title('Job Category Distribution')
plt.xlabel('Job Category')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.grid(axis='y')
plt.show()
3.2 平台分布
plt.figure(figsize=(10, 6))
platform_counts = df['Platform'].value_counts()
plt.pie(platform_counts, labels=platform_counts.index, autopct='%1.1f%%', startangle=90)
plt.title('Platform Distribution')
plt.show()
3.3 经验水平分布
plt.figure(figsize=(8, 6))
experience_counts = df['Experience_Level'].value_counts()
plt.bar(experience_counts.index, experience_counts.values, color='lightgreen')
plt.title('Experience Level Distribution')
plt.xlabel('Experience Level')
plt.ylabel('Count')
plt.grid(axis='y')
plt.show()
3.4 客户地区分布
plt.figure(figsize=(12, 6))
client_region_counts = df['Client_Region'].value_counts()
plt.bar(client_region_counts.index, client_region_counts.values, color='lightcoral')
plt.title('Client Region Distribution')
plt.xlabel('Client Region')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.grid(axis='y')
plt.show()
3.5 支付方式分布
plt.figure(figsize=(10, 6))
payment_method_counts = df['Payment_Method'].value_counts()
plt.pie(payment_method_counts, labels=payment_method_counts.index, autopct='%1.1f%%', startangle=90)
plt.title('Payment Method Distribution')
plt.show()
3.6 小时薪酬分布
plt.figure(figsize=(10, 6))
plt.hist(df['Hourly_Rate'].dropna(), bins=20, color='gold', edgecolor='black')
plt.title('Hourly Rate Distribution')
plt.xlabel('Hourly Rate (USD)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
四、各个特征与收入关系的可视化
4.1 经验水平与小时薪酬关系
plt.figure(figsize=(10, 6))
for experience in df['Experience_Level'].unique():
subset = df[df['Experience_Level'] == experience]
plt.boxplot(subset['Hourly_Rate'].dropna(), positions=[list(df['Experience_Level'].unique()).index(experience)])
plt.title('Hourly Rate by Experience Level')
plt.xlabel('Experience Level')
plt.xticks([0, 1, 2], df['Experience_Level'].unique())
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.show()
4.2 工作类别与小时薪酬关系
plt.figure(figsize=(12, 6))
job_categories = df['Job_Category'].unique()
for i, category in enumerate(job_categories):
subset = df[df['Job_Category'] == category]
plt.boxplot(subset['Hourly_Rate'].dropna(), positions=[i])
plt.title('Hourly Rate by Job Category')
plt.xlabel('Job Category')
plt.xticks(range(len(job_categories)), job_categories, rotation=45)
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.show()
4.3 客户地区与小时薪酬关系
plt.figure(figsize=(12, 6))
client_regions = df['Client_Region'].unique()
for i, region in enumerate(client_regions):
subset = df[df['Client_Region'] == region]
plt.boxplot(subset['Hourly_Rate'].dropna(), positions=[i])
plt.title('Hourly Rate by Client Region')
plt.xlabel('Client Region')
plt.xticks(range(len(client_regions)), client_regions, rotation=45)
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.show()
4.4 平台与小时薪酬关系
plt.figure(figsize=(10, 6))
platforms = df['Platform'].unique()
for i, platform in enumerate(platforms):
subset = df[df['Platform'] == platform]
plt.boxplot(subset['Hourly_Rate'].dropna(), positions=[i])
plt.title('Hourly Rate by Platform')
plt.xlabel('Platform')
plt.xticks(range(len(platforms)), platforms)
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.show()
4.5 多维度组合分析(经验水平、工作类别与小时薪酬)
plt.figure(figsize=(16, 10))
experiences = df['Experience_Level'].unique()
job_categories = df['Job_Category'].unique()
for i, experience in enumerate(experiences):
plt.subplot(2, 2, i + 1)
subset = df[df['Experience_Level'] == experience]
for j, category in enumerate(job_categories):
subsubset = subset[subset['Job_Category'] == category]
plt.boxplot(subsubset['Hourly_Rate'].dropna(), positions=[j])
plt.title(f'Hourly Rate by Job Category for {experience}')
plt.xlabel('Job Category')
plt.xticks(range(len(job_categories)), job_categories, rotation=45)
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.tight_layout()
plt.show()
4.6 多维度组合分析(客户地区、工作类别与小时薪酬)
plt.figure(figsize=(16, 10))
client_regions = df['Client_Region'].unique()
job_categories = df['Job_Category'].unique()
for i, region in enumerate(client_regions):
plt.subplot(2, 2, i + 1)
subset = df[df['Client_Region'] == region]
for j, category in enumerate(job_categories):
subsubset = subset[subset['Job_Category'] == category]
plt.boxplot(subsubset['Hourly_Rate'].dropna(), positions=[j])
plt.title(f'Hourly Rate by Job Category for {region}')
plt.xlabel('Job Category')
plt.xticks(range(len(job_categories)), job_categories, rotation=45)
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.tight_layout()
plt.show()
4.7 工作成功率与小时薪酬关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Job_Success_Rate'], df['Hourly_Rate'], c=df['Experience_Level'].astype('category').cat.codes, cmap='viridis', alpha=0.6)
plt.title('Hourly Rate vs Job Success Rate')
plt.xlabel('Job Success Rate (%)')
plt.ylabel('Hourly Rate (USD)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.8 客户评分与小时薪酬关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Client_Rating'], df['Hourly_Rate'], c=df['Experience_Level'].astype('category').cat.codes, cmap='plasma', alpha=0.6)
plt.title('Hourly Rate vs Client Rating')
plt.xlabel('Client Rating')
plt.ylabel('Hourly Rate (USD)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.9 工作持续时间与小时薪酬关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Job_Duration_Days'], df['Hourly_Rate'], c=df['Experience_Level'].astype('category').cat.codes, cmap='cividis', alpha=0.6)
plt.title('Hourly Rate vs Job Duration')
plt.xlabel('Job Duration (Days)')
plt.ylabel('Hourly Rate (USD)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.10 营销支出与收入关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Marketing_Spend'], df['Earnings_USD'], c=df['Experience_Level'].astype('category').cat.codes, cmap='magma', alpha=0.6)
plt.title('Earnings vs Marketing Spend')
plt.xlabel('Marketing Spend (USD)')
plt.ylabel('Earnings (USD)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.11 再次雇佣率与工作成功率关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Rehire_Rate'], df['Job_Success_Rate'], c=df['Experience_Level'].astype('category').cat.codes, cmap='coolwarm', alpha=0.6)
plt.title('Rehire Rate vs Job Success Rate')
plt.xlabel('Rehire Rate (%)')
plt.ylabel('Job Success Rate (%)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.12 项目类型与收入关系
plt.figure(figsize=(12, 6))
project_types = df['Project_Type'].unique()
project_type_earnings = df.groupby('Project_Type')['Earnings_USD'].mean().reset_index()
plt.bar(project_type_earnings['Project_Type'], project_type_earnings['Earnings_USD'], color='skyblue')
plt.title('Average Earnings by Project Type')
plt.xlabel('Project Type')
plt.ylabel('Average Earnings (USD)')
plt.grid(axis='y')
plt.show()
4.13 营销支出与工作成功率关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Marketing_Spend'], df['Job_Success_Rate'], c=df['Experience_Level'].astype('category').cat.codes, cmap='Set1', alpha=0.6)
plt.title('Job Success Rate vs Marketing Spend')
plt.xlabel('Marketing Spend (USD)')
plt.ylabel('Job Success Rate (%)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.14 工作持续时间与工作成功率关系
plt.figure(figsize=(10, 6))
plt.scatter(df['Job_Duration_Days'], df['Job_Success_Rate'], c=df['Experience_Level'].astype('category').cat.codes, cmap='Set2', alpha=0.6)
plt.title('Job Success Rate vs Job Duration')
plt.xlabel('Job Duration (Days)')
plt.ylabel('Job Success Rate (%)')
plt.colorbar(label='Experience Level')
plt.grid(True)
plt.show()
4.15 经验水平与工作持续时间关系
plt.figure(figsize=(10, 6))
for experience in df['Experience_Level'].unique():
subset = df[df['Experience_Level'] == experience]
plt.boxplot(subset['Job_Duration_Days'].dropna(), positions=[list(df['Experience_Level'].unique()).index(experience)])
plt.title('Job Duration by Experience Level')
plt.xlabel('Experience Level')
plt.xticks([0, 1, 2], df['Experience_Level'].unique())
plt.ylabel('Job Duration (Days)')
plt.grid(True)
plt.show()
4.16 客户地区与工作持续时间关系
plt.figure(figsize=(12, 6))
client_regions = df['Client_Region'].unique()
for i, region in enumerate(client_regions):
subset = df[df['Client_Region'] == region]
plt.boxplot(subset['Job_Duration_Days'].dropna(), positions=[i])
plt.title('Job Duration by Client Region')
plt.xlabel('Client Region')
plt.xticks(range(len(client_regions)), client_regions, rotation=45)
plt.ylabel('Job Duration (Days)')
plt.grid(True)
plt.show()
从以上可视化分析可以看出:
- 工作类别分布:Web开发和数据录入等类别较为常见。
- 平台分布:不同平台占据不同市场份额,Upwork和Fiverr较为流行。
- 经验水平分布:中级和专家级别的自由职业者较为常见。
- 客户地区分布:客户主要集中在亚洲、欧洲和美国。
- 支付方式分布:PayPal和银行转账是最常用的支付方式。
- 小时薪酬分布:薪酬呈现多样化,部分高技能工作薪酬较高。
- 经验水平与小时薪酬关系:经验越丰富的自由职业者通常获得更高的小时薪酬。
- 工作类别与小时薪酬关系:技术类工作通常获得较高的小时薪酬。
- 客户地区与小时薪酬关系:欧美地区的客户通常支付更高的薪酬。
- 平台与小时薪酬关系:不同平台的薪酬水平差异显著。
- 工作成功率与小时薪酬关系:工作成功率较高的自由职业者通常获得更高的薪酬。
- 客户评分与小时薪酬关系:客户评分较高的自由职业者通常获得更高的薪酬。
- 工作持续时间与小时薪酬关系:工作持续时间较长的项目通常提供较高的薪酬。
- 营销支出与收入关系:营销支出较高的自由职业者通常获得更高的收入。
- 再次雇佣率与工作成功率关系:工作成功率较高的自由职业者通常具有较高的再次雇佣率。
- 项目类型与收入关系:不同类型的项目对收入的贡献差异显著。
- 营销支出与工作成功率关系:营销支出较高的自由职业者通常具有较高的工作成功率。
- 工作持续时间与工作成功率关系:工作持续时间较长的项目通常具有较高的成功率。
- 经验水平与工作持续时间关系:经验越丰富的自由职业者通常承接的工作持续时间较长。
- 客户地区与工作持续时间关系:不同地区的客户提供的工作持续时间差异显著。
以上分析为自由职业者和研究人员提供了多维度视角,揭示了零工经济中的收入模式和工作机会,为职业决策和市场研究提供了数据支持。通过这些深入的可视化分析,自由职业者可以更好地了解市场需求,优化个人技能和营销策略,从而在竞争激烈的零工经济中获得更大的成功。
**注:**博主目前收集了6900+份相关数据集,有想要的可以领取部分数据: