【数据可视化-49】基于matplotlib的自由职业者收入和工作趋势数据集可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、引言

  在当今零工经济蓬勃发展的背景下,自由职业者收入和工作趋势的数据分析显得尤为重要。本文将利用自由职业者收入和工作趋势数据集,从多个维度进行可视化分析,深入探讨影响自由职业者收入和工作机会的关键因素。该数据集涵盖了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+份相关数据集,有想要的可以领取部分数据:

在这里插入图片描述
在这里插入图片描述


### 使用 Python 爬虫数据可视化技能找到工作或项目机会 #### 寻找 Freelancer 平台上的项目机会 为了利用 Python 爬虫数据可视化技能寻找自由职业平台上的项目机会,可以从以下几个方面入手: - **选择合适的平台**:一些知名的自由职业者平台如 Upwork、Freelancer Fiverr 提供了大量的编程类工作任务。这些平台上经常会有客户发布与 Web 开发、自动化脚本编写以及数据分析有关的任务。 - **创建个人资料并展示作品集**:在注册成为会员之后,应该精心准备一份专业的简历个人简介,在其中突出自己掌握的技术栈特别是 Python 及其生态系统内的库(例如 Pandas、Matplotlib 或 Seaborn),并且附上之前做过的案例链接作为证明材料[^3]。 - **定期浏览新发布的职位列表**:大多数网站都允许求职者设置关键词提醒服务以便及时获取最新的招聘信息;也可以手动每天花一定时间查看是否有匹配度较高的需求出现。 #### 构建自己的网络存在感 除了直接申请已有的岗位之外,建立良好的在线形象同样重要: - **撰写技术博客文章**:分享关于如何构建高效稳定的爬虫程序的经验心得或者是探讨某些热门话题下的数据洞察力等内容能够吸引潜在雇主的关注。 - **参与开源社区贡献代码**:GitHub 是全球最大的同好聚集地之一,加入感兴趣的项目组不仅可以锻炼实际动手能力而且有助于积累人脉资源。对于那些正在寻觅合适人选的企业来说,活跃于此类场所的人往往更受青睐。 #### 利用社交媒体拓展人际关系网 最后但并非最不重要的一步就是善加运用社交媒介的力量扩大影响力范围: - **LinkedIn 上积极互动交流**:这里汇聚了许多专业人士,通过参加群聊讨论或是向行业领袖请教问题等方式均有可能促成合作意向达成。 - **Twitter/Facebook 群组推广自我品牌**:这两个平台拥有庞大的用户基数,适当宣传自己的专长领域或许能带来意想不到的效果。 ```python import requests from bs4 import BeautifulSoup as bs4 def fetch_freelance_jobs(): base_url = "https://www.upwork.com/jobs/" job_listings = [] for page_num in range(1, 5): # 假设只抓取前四页的内容 url = f"{base_url}?page={page_num}" response = requests.get(url) soup = bs4(response.content, 'html.parser') jobs = soup.find_all('div', class_='job-tile-title')[:10] # 每次仅提取每一页前十条记录 for job in jobs: title = job.a.string.strip() link = job.a['href'] job_info = { 'title': title, 'link': link } job_listings.append(job_info) return job_listings ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云天徽上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值