学习哪种技能性价比更高(待完成)

需要统计一份数据,但是不会数据统计分析。从 CHAT 上获取了一些代码,很多需要自己改,而自己又都不懂,先这样吧,只统计一个问题。

哪些技能标签是最受客户欢迎的,给的代码实际统计的是持有哪种标签的人数更多,结果:
在这里插入图片描述

from pymongo import MongoClient
import pandas as pd
import numpy as np


# 连接MongoDB
client = MongoClient('localhost', 27017)
db = client['task_platform']
member_collection = db['Member']
task_collection = db['Task']
mark_collection = db['Mark']

# 查询数据 member_cursor = member_collection.find()
task_cursor = task_collection.find()
mark_cursor = mark_collection.find()

# 将数据存储到DataFrame中 member_df = pd.DataFrame(list(member_cursor))
task_df = pd.DataFrame(list(task_cursor))
mark_df = pd.DataFrame(list(mark_cursor))

# 数据预处理 # 将ability、bond、earn_90d、earn_service、earn_task、feedback、product_sold、tasks_90d_fail、tasks_90d_pend、tasks_90d_success、tasks_90d_total、tasks_total列转换为数值型 member_df[['ability', 'bond', 'earn_90d', 'earn_service', 'earn_task', 'feedback', 'product_sold', 'tasks_90d_fail', 'tasks_90d_pend', 'tasks_90d_success', 'tasks_90d_total', 'tasks_total']] = member_df[['ability', 'bond', 'earn_90d', 'earn_service', 'earn_task', 'feedback', 'product_sold', 'tasks_90d_fail', 'tasks_90d_pend', 'tasks_90d_success', 'tasks_90d_total', 'tasks_total']].apply(pd.to_numeric)

# member_df = member_df[member_df['skills'] != '暂无']
# 将skills列按"|||"分割为多列
member_df['skills'] = member_df['skills'].str.replace(",", "|").replace(",", "|").replace(" ", "|")
skills_df = member_df['skills'].str.split('|', expand=True)
skills_df.columns = ['skill_' + str(col) for col in skills_df.columns]
member_df = pd.concat([member_df, skills_df], axis=1)

# 计算每个用户的完成任务数、完成任务成功数、完成任务失败数、未完成任务数 # member_df['tasks_finished'] = member_df['tasks_total'] - member_df['tasks_90d_pend'] - member_df['tasks_90d_fail'] # member_df['tasks_finished_success'] = member_df['tasks_90d_success'] # member_df['tasks_finished_fail'] = member_df['tasks_90d_fail'] # member_df['tasks_unfinished'] = member_df['tasks_90d_pend']   # 将标记数据中的任务ID为0的记录,即雇佣服务记录,过滤掉   service_df = mark_df[mark_df['task_id'] == '0']
mark_df = mark_df[mark_df['task_id'] != '0']

# 合并数据 merged_df = pd.merge(member_df, mark_df, on='user_id', how='left')
merged_df = pd.merge(merged_df, task_df, left_on='task_id', right_on='task_id', how='left')
# print(merged_df.columns)
# 计算用户的平均任务完成成功率
merged_df['success_rate'] = merged_df['tasks_finished_success'] / merged_df['tasks_finished']

merged_df['earnings'] = member_df['earn_service'] + member_df['earn_task']

# 分析问题 
# 问题1:哪些技能标签是最受客户欢迎的? 
skills_grouped_df = merged_df.groupby('skill_0').size().reset_index(name='count').sort_values(by='count', ascending=False)
# print(skills_grouped_df.iloc[0].values) print('受客户欢迎的技能标签前10名:')
print(skills_grouped_df.head(100))
# 输出结果到 CSV 文件
skills_grouped_df.head(100).to_csv("./test.csv", encoding="utf_8_sig")
问:我需要统计一些数据,并得出一些结论,我并不懂统计学,需要你来主导

答:
好的,我会尽力帮助你进行数据分析和得出结论。首先,你可以告诉我你的数据来源是什么,以及你想研究什么问题?然后我们可以一步步进行分析。

问:数据来源是一个类似fivver 或 upwork的网站,我有几张数据表,稍后提供简要信息给你。需要研究:1.哪种技能更容易接到订单;2.哪种技能能赚到更多钱;3.哪种技能接到的订单平均单价更高;4.学哪种技能最好;5.订单分类;6.哪种类型订单最多;7.哪种类型订单完成成功率更高;8.哪种类型订单完成失败率更高;9.技能竞争情况;10.哪些技能更稀缺。

答:
1.  哪种技能更容易接到订单
    *   可以先看每个技能的订单量,计算出每个技能接单的数量占总订单数的比例,比例越高,说明该技能更容易接到订单。
2.  哪种技能能赚到更多钱
    *   可以计算每个技能的平均订单金额,比较不同技能的平均值,可以得出哪种技能赚到的钱更多。
3.  哪种技能接到的订单平均单价更高
    *   可以计算每种技能接到的订单金额总和,并将其除以该技能接到的订单总数,得到该技能接到的订单平均单价。
4.  学哪种技能最好
    *   可以根据上述前三个问题的结果,选择接单量高、赚钱多、订单平均单价高的技能作为学习方向。
5.  订单分类
    *   首先需要确定订单的分类方式,可以按照技能类别、服务类型、订单金额等分类,然后统计每种分类的订单数量和金额。
6.  哪种类型订单最多
    *   统计每种订单分类的订单数量,比较数量大小,可以得到哪种类型的订单最多。
7.  哪种类型订单完成成功率更高
    *   统计每种订单分类的完成成功数量和未完成数量,计算完成成功率,比较各种分类的完成成功率大小,可以得到哪种类型的订单完成成功率更高。
8.  哪种类型订单完成失败率更高
    *   统计每种订单分类的完成成功数量和未完成数量,计算未完成的订单占总订单数的比例,比例越高,说明该类型订单的失败率越高。
9.  技能竞争情况
    *   可以计算每个技能的竞争率,即技能被投标的次数与技能接到的订单数的比例,比例越高,说明该技能的竞争越激烈。
10.  哪些技能更稀缺
    *   可以统计每个技能的接单量和投标量,计算出每个技能的接单率和竞争率,接单率高、竞争率低的技能,说明更为稀缺。

问:接单率如何得出
答:
接单率可以通过已接订单数除以总订单数来计算得出。具体计算方法如下:

接单率 = 已接订单数 / 总订单数

其中,已接订单数指的是该技能已经接到的订单数量,总订单数指的是所有技能的订单总数量。

例如,如果某个技能已经接到了100个订单,而所有技能的订单总数是1000个,那么这个技能的接单率为10%。

问:我将提供三张数据表说明,和每张表中的数条数据,请帮我分析
表一:Member
表说明:所有用户数据,包括客户和投标者
包含字段:
ability: 能力值,和赚到的钱的金额成正比,
bond: 保证金,交给平台保管的金额,
description: 个人描述,
earn_90d: 最近90天赚到的金额,
earn_service: 通过出售服务赚到的总金额,
earn_task: 通过任务接单赚到的总金额,
feedback: 客户反馈,正向评价比例,
product_sold: 出售服务次数,
skills: 技能标签列表,
tasks_90d_fail: 最近90天完成失败任务(包括服务)个数,
tasks_90d_pend: 最近90天正在进行任务(包括服务)个数,
tasks_90d_success: 最近90天完成成功任务(包括服务)个数,
tasks_90d_total: 最近90天共接到任务(包括服务)个数,
tasks_total: 任务中标总次数,
user_id: 用户ID,
user_name: 用户名

表二:Task
表说明:客户发布任务详情
包含字段:
task_id: 任务ID,
task_info: 任务描述,
task_price: 任务价格金额,
task_proposal: 投标数,
task_status: 任务状态,0为已完成,1为未完成,
task_title: 任务标题,
task_view: 任务页面被浏览次数,
user_id: 客户ID

表三:Mark
表说明:已成功完成任务反馈
包含字段:
mark_content: 客户对中标者的评价内容,
task_id: 任务ID,0为雇佣服务,其他为发布任务ID,
task_time: 评价时间,可作为任务发布时间参考,
task_title: 任务标题,
user_id: 中标者ID,
user_id_customer: 客户ID

答:
感谢提供表格和数据,下面是我对这些表格和数据的初步分析:
1.  Member表

该表包含所有用户的信息,包括客户和投标者。其中,能力值、保证金、个人描述、客户反馈等字段可以反映用户的能力和表现。通过这些字段,我们可以对用户的能力和表现进行评估。另外,该表中的赚到的金额字段和任务中标总次数字段也很重要,可以用来分析哪些技能更容易赚到更多的钱,以及哪些技能更容易中标。

1.  Task表

该表包含客户发布任务的详情信息。任务状态、任务价格、任务投标数等字段可以反映任务的热度、难度和需求程度。通过这些字段,我们可以分析哪些类型的任务更容易得到客户青睐,哪些任务更容易投标,以及哪些任务更容易完成。

1.  Mark表

该表包含已成功完成任务的反馈信息。客户对中标者的评价内容和时间可以反映中标者的表现和客户的满意度。通过这些字段,我们可以分析哪些类型的技能更容易得到客户的好评,以及哪些中标者更容易得到客户的好评。

基于以上分析,我建议您先对数据进行清洗和处理,然后再进行具体的统计和分析,以得出更有意义的结论。

(举例数据略..)
(给出代码..)

猜你喜欢

转载自blog.csdn.net/SmileBasic/article/details/129990991