使用Python进行语言的单价数据收集和比较,真实可靠的数据

由于我一直想比较和汇总自由职业项目的语言单价,所以我进行了实际调查。

自由職業案件的信息是基于以下网站进行汇总的。由于各语言页面上有汇总信息,因此我们以此为基础。

乐采自由职业者
https://freelance.levtech.jp

这是截至2020年11月21日的数据。

云.csv创建时间,技能,数量,平均价格,最高价格,最低价格
20201121,OpenShift,5,62,65,60
20201121,Amazon VPC,1,70,70,70
20201121,谷歌云平台,55,80,105,53
20201121,Dynamics CRM,1,65,65,65
20201121,亚马逊S3,2,80,85,75
20201121,亚马逊EC2,2,74,85,64
20201121,AWS,1926,76,135,20
20201121,谷歌应用引擎,7,77,95,60
20201121,亚马逊SimpleDB,1,80,80,80
20201121,Force.com,2,70,70,70
20201121,Office 365,9,56,65,40
20201121,微软Azure,141,67,90,50
20201121,OpenStack,21,64,80,45
20201121,Heroku,29,75,102,55

DB.csv 数据
创建日期, 技能, 数量, 平均价格, 最高价格, 最低价格
20201121, 京都台数据库, 1, 75, 75, 75
20201121, SQLite, 20, 72, 90, 55
20201121, MySQL, 1465, 75, 125, 35
20201121, Symfoware Server, 4, 60, 65, 55
20201121, Cassandra, 14, 62, 80, 45
20201121, PostgreSQL, 487, 71, 135, 35
20201121, Riak, 5, 63, 100, 45
20201121, Bigtable, 3, 86, 95, 80
20201121, SQL Server, 375, 65, 95, 35
20201121, Redis, 296, 78, 105, 39
20201121, Hbase, 5, 68, 75, 60
20201121, Oracle, 971, 66, 115, 25
20201121, Sybase, 6, 75, 85, 65
20201121, IMS, 3, 58, 64, 55
20201121, Access, 88, 60, 145, 40
20201121, DB2, 79, 64, 95, 35
框架CSV文件创建时间,技能,数量,平均价格,最高价格,最低价格
20201121,Pyramid,12,77,105,65
20201121,Rails,237,81,115,45
20201121,MyBatis,61,71,85,55
20201121,Node.js,256,77,125,45
20201121,Backbone.js,77,76,115,39
20201121,Knockout.js,4,72,90,55
20201121,AngularJS,152,74,105,47
20201121,Laravel,343,73,125,40
20201121,JUnit,80,73,125,50
20201121,Wicket,3,82,95,70
20201121,Django,89,83,115,55
20201121,Padrino,2,82,85,80
20201121,iBATIS,14,67,80,55
20201121,Silex,4,76,80,75
20201121,FuelPHP,101,76,115,50
20201121,MVC,69,68,95,37
20201121,CodeIgniter,39,74,105,45
20201121,Liferay,1,70,70,70
20201121,React,378,77,115,40
20201121,Spark,19,82,95,55
20201121,PhoneGap,3,86,95,80
20201121,JSF,18,64,75,55
20201121,jQuery,354,71,95,35
20201121,Seasar2,32,70,95,49
20201121,Spring,362,71,115,45
20201121,Bottle,1,75,75,75
20201121,Catalyst,26,64,72,55
20201121,intra-mart,14,70,135,50
20201121,SAStruts,16,71,95,57
20201121,Flask,25,82,125,65
20201121,Sinatra,6,78,85,75
20201121,Struts,129,67,95,45
20201121,Symfony,55,74,95,55
20201121,CakePHP,149,71,95,50

语言.csv创建时间,技能,数量,平均价格,最高价格,最低价格
20201121,PHP,1560,72,145,35
20201121,CSS,650,70,125,35
20201121,C语言,269,68,115,35
20201121,UML,7,70,85,50
20201121,C++,374,72,125,45
20201121,C#.NET,147,62,80,32
20201121,Transact-SQL,6,65,75,55
20201121,Kotlin,270,83,125,45
20201121,VB,83,62,85,40
20201121,HTML5,305,72,115,35
20201121,VC,8,61,66,50
20201121,C#,706,68,115,35
20201121,Apex,49,79,135,55
20201121,VBA,165,60,145,30
20201121,ASP.NET,161,65,95,48
20201121,Go,361,81,125,39
20201121,PL/SQL,146,63,85,45
20201121,COBOL,81,61,95,37
20201121,LESS,9,74,115,55
20201121,Swift,407,81,125,50
20201121,VC++,30,65,90,52
20201121,HTML,674,69,125,35
20201121,CSS3,209,75,115,35
20201121,Java,2484,70,145,25
20201121,JSP,54,68,105,55
20201121,Sass,55,71,115,45
20201121,SQL,881,65,145,33
20201121,VBScript,44,62,75,45
20201121,Objective-C,247,76,115,40
20201121,CoffeeScript,16,81,95,65
20201121,JavaScript,1749,72,125,20
20201121,Lua,6,73,80,65
20201121,R语言,19,78,95,65
20201121,Smalltalk,2,75,80,70
20201121,Scala,117,83,115,55
20201121,Perl,108,73,110,50
20201121,Shell,193,64,95,45
20201121,SAS,12,61,75,50
20201121,Ruby,652,80,125,39
20201121,ABAP,12,67,80,55
20201121,Python,669,78,145,32
20201121,VB.NET,284,62,85,40

操作系统.csv创建时间,技能,数量,平均价格,最高价格,最低价格
20201121,Windows,998,63,135,25
20201121,红帽,92,66,95,40
20201121,Solaris,37,61,80,40
20201121,AIX,77,63,90,52
20201121,Ubuntu,39,75,90,45
20201121,Unix,236,69,100,40
20201121,AS/400,1,65,65,65
20201121,FreeBSD,3,70,75,62
20201121,HP-UX,21,62,75,55
20201121,Windows Server,387,62,100,33
20201121,Android,563,78,125,35
20201121,Linux,2266,69,135,30

这里是图形输出源代码。

打印图形.pyimport datetime
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

“””
通用变量和常数设置
“””
DATA_PATH = ‘data’
now = datetime.datetime.today()
CATEGORIES = {
‘Language’,
‘FrameWork’,
‘DB’,
‘OS’,
‘Cloud’
}

“””
主要处理
“””
def main() -> None:

make_date = now.strftime(“%Y%m%d”)

# 创建目录
os.makedirs(DATA_PATH + ‘/graphs/’ + make_date, exist_ok=True)

单价图表(make_date)
数量图表(make_date)
混合图表(make_date)

“””
单价图表创建
“””
def 单价图表(make_date: str) -> None:

for category_key in CATEGORIES:
df = pd.read_csv(DATA_PATH + ‘/levtech/’ + category_key + ‘.csv’)
df = df.sort_values(by=[‘avg_price’], ascending=False)
labels = df[‘skill’].str.replace(‘[ぁ-んァ-ン一-龥]+’, ”, regex=True) # 删除日语
y_list1 = df[‘avg_price’]

fig = plt.figure(figsize=(14, 7))

ax1 = fig.add_subplot(1, 1, 1)
ax1.bar(labels, y_list1, color=’tab:blue’)
ax1.set_ylabel(‘价格’)
ax1.set_title(category_key)

# 将X轴垂直显示
ax1.set_xticklabels(labels, rotation=90)

# 在柱状图中添加数值
for x, y in zip(labels, y_list1):
ax1.text(x, y, y, ha=’center’, va=’bottom’)

# plt.show()
fig.savefig(DATA_PATH + ‘/graphs/’ + make_date + ‘/levtech-‘ + category_key + ‘-price.png’, bbox_inches=’tight’, format=’png’, dpi=300)

“””
数量图表创建
“””
def 数量图表(make_date: str) -> None:

for category_key in CATEGORIES:
df = pd.read_csv(DATA_PATH + ‘/levtech/’ + category_key + ‘.csv’)
df = df.sort_values(by=[‘count’], ascending=False)
labels = df[‘skill’].str.replace(‘[ぁ-んァ-ン一-龥]+’, ”, regex=True) # 删除日语
y_list1 = df[‘count’]

fig = plt.figure(figsize=(14, 7))

ax1 = fig.add_subplot(1, 1, 1)
ax1.bar(labels, y_list1, color=’tab:orange’)
ax1.set_ylabel(‘数量’)
ax1.set_title(category_key)

# 将X轴垂直显示
ax1.set_xticklabels(labels, rotation=90)

# 在柱状图中添加数值
for x, y in zip(labels, y_list1):
ax1.text(x, y, y, ha=’center’, va=’bottom’, fontsize=’small’)

# plt.show()
fig.savefig(DATA_PATH + ‘/graphs/’ + make_date + ‘/levtech-‘ + category_key + ‘-count.png’, bbox_inches=’tight’, format=’png’, dpi=300)

“””
单价和数量图表创建
“””
def 混合图表(make_date: str) -> None:

for category_key in CATEGORIES:
df = pd.read_csv(DATA_PATH + ‘/levtech/’ + category_key + ‘.csv’)
df = df.sort_values(by=[‘avg_price’], ascending=False)

labels = df[‘skill’].str.replace(‘[ぁ-んァ-ン一-龥]+’, ”, regex=True) # 删除日语
y_list1 = df[‘avg_price’]
y_list2 = df[‘count’]

fig = plt.figure(figsize=(14, 7))

left = np.arange(len(labels))
width = 0.3

ax1 = fig.add_subplot(1, 1, 1)
ax1.bar(labels, y_list1, width=width, color=’tab:blue’, label=’价格’)
ax1.set_ylabel(‘价格’)
ax1.set_title(category_key)

ax2 = ax1.twinx()
ax2.bar(left + width, y_list2, width=width, color=’tab:orange’, label=’数量’)
ax2.set_ylabel(‘数量’)

# 将X轴垂直显示
ax1.set_xticklabels(labels, rotation=90)

# 在柱状图中添加数值
for x, y in zip(labels, y_list1):
ax1.text(x, y, y, ha=’center’, va=’bottom’)

for x, y in zip(left + width, y_list2):
ax2.text(x, y, y, ha=’center’, va=’bottom’, fontsize=’small’)

# 输出图例
handler1, label1 = ax1.get_legend_handles_labels()
handler2, label2 = ax2.get_legend_handles_labels()
ax1.legend(handler1 + handler2, label1 + label2)

# plt.show()
fig.savefig(DATA_PATH + ‘/graphs/’ + make_date + ‘/levtech-‘ + category_key + ‘-mix.png’, bbox_inches=’tight’, format=’png’, dpi=300)

if __name__ == ‘__main__’:
main()

实际图表

    • priceが平均単価(万円)

 

    • countが案件数です

 

    単価と案件数が混ざったグラフは、単価が高い順です

语言

按照单价分类

levtech-Language-price.png

案例分类

levtech-Language-count.png

单价和案件数量的组合

levtech-Language-mix.png

目前最热门的是Kotlin吧。我听说Android工程师现在供不应求,所以可以理解。
如果是网页开发的话,从项目数量和单价来看,Ruby、Python、Go都显得很划算呢。
之前我一直以为Java的单价比较高,没想到PHP的更高,这真是出乎意料… 需求量是不是太大了?

下一步是框架。

按照单位价格分类

levtech-FrameWork-price.png

请将下列案件分类整理

levtech-FrameWork-count.png

混合了单位价格和项目数量

levtech-FrameWork-mix.png

PhoneGap是顶尖的选择。虽然我是第一次听说,但据说是由Nitobi开发和发布的跨平台移动应用程序开发框架。
对于Web开发来说,Django和Rails似乎也很实惠。React用于Web和应用程序开发,案件数量和价格也相对不错。关于Vue方面,我找不到相关信息。

数据库

按单价排序

levtech-DB-price.png

案例的分类

levtech-DB-count.png

单价和项目数的组合

levtech-DB-mix.png

Bigtable是最顶级的选择。虽然听得多的是Bigquery,但是它与Bigquery相比,据说是一种更高速运行的大规模数据库。就数据库来说,MySQL是绝对没有错的选择。而Oracle和SQLServer则出人意料地价格较低。为什么呢、、、

按每个单价区分

levtech-Cloud-price.png

案件分类

levtech-Cloud-count.png

单价和案件数量混合

levtech-Cloud-mix.png

GCP的价格最高!案件数量上来说,AWS绝对压倒性!总之,至少要掌握一下AWS比较好。
由于需求过高,价格往往会降低,所以考虑未来的话,也许学习一下GCP会比较好?
Azure的案件数量和价格都不太好,有些微妙。

想法或感受

真棒的结果!如果要做Web开发的话,Python可能有很大的发展潜力。实际去尝试一下,环境搭建很方便,库很丰富。特别是将CSV转换为图表,简直让我感动得不得了!与其费力地使用HTML和JS库来一点一点地搞,不如在后端迅速地生成图像,这太好了呢~

这次只是对一个案件网站的调查结果,所以您可以将其作为参考!因为没有Vue、Graphql和Rust的信息,所以这些方面也让人很好奇啊~

bannerAds