【数据可视化】自由职业者收入和工作趋势数据集可视化分析

122 阅读8分钟

🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。

目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。


一、引言

在当今零工经济蓬勃发展的背景下,自由职业者收入和工作趋势的数据分析显得尤为重要。本文将利用自由职业者收入和工作趋势数据集,从多个维度进行可视化分析,深入探讨影响自由职业者收入和工作机会的关键因素。该数据集涵盖了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=(126))
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=(106))
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=(86))
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=(126))
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=(106))
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=(106))
plt.hist(df['Hourly_Rate'].dropna(), bins=20color='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=(106))
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([012], df['Experience_Level'].unique())
plt.ylabel('Hourly Rate (USD)')
plt.grid(True)
plt.show()

4.2 工作类别与小时薪酬关系

plt.figure(figsize=(126))
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=(126))
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=(106))
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=(1610))
experiences = df['Experience_Level'].unique()
job_categories = df['Job_Category'].unique()
for i, experience in enumerate(experiences):
    plt.subplot(22, 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=(1610))
client_regions = df['Client_Region'].unique()
job_categories = df['Job_Category'].unique()
for i, region in enumerate(client_regions):
    plt.subplot(22, 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=(126))
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=(106))
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([012], df['Experience_Level'].unique())
plt.ylabel('Job Duration (Days)')
plt.grid(True)
plt.show()

4.16 客户地区与工作持续时间关系

plt.figure(figsize=(126))
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+份相关数据集,有想要的可以领取部分数据:



如果您在人工智能领域遇到技术难题,或是需要专业支持,无论是技术咨询、项目开发还是个性化解决方案,我都可以为您提供专业服务,如有需要可站内私信或添加下方VX名片(ID:xf982831907)

期待与您一起交流,共同探索AI的更多可能!

<--微信名片-->