Python 分析在德的中国程序员,告别 996?(4)

5. 在德程序员常用开发语言和框架

下面这三个分析代码一致,这里只贴出数据结果。

5.1 在德程序员常用开发语言和框架

Python 分析在德的中国程序员,告别 996?(4)

分析:

  • 得益于大数据和AI的火热,Python当仁不让位居第一。
  • Java、C和C++并驾齐驱。
  • Java是德国传统企业里企业级应用系统开发语言首选,出于系统稳定和兼容性考虑
  • C++和C在自动驾驶,医疗,机械,嵌入式系统领域是不可替代的
  • 当然不能忘了.Net在工业界PLC系统里基本是霸主地位
  • Angualr、React、Vue、jQuery、TypeScript在企业级应用前端开发里使用广泛
  • 移动开发iOS和Android基本绝迹,原因之前也提了。

以上占比分布基本是符合德国六个行业开发语言占比率的,依次为软件开发,信息技术,电商,汽车,咨询,金融。稍微反常的是德国的中国程序员在工作使用PHP的不多,可是会PHP在德国也是很容易找工作的嘛。

Python 分析在德的中国程序员,告别 996?(4)

5.2 程序猿和程序媛常用开发语言和框架对比

Python 分析在德的中国程序员,告别 996?(4)

分析:

  • 猿偏向后端开发,媛偏向前端开发
  • 在Java、C++、C上,猿媛旗鼓相当
  • 在数据库管理和SQL使用上,媛稍微多一点

总体来说,在德程序媛的能力并不比程序猿弱,技术栈相当广,德国不愧是培养理工女汉子的国度。

5.3 在职人员和学生常用开发语言和框架对比

Python 分析在德的中国程序员,告别 996?(4)

分析:

加上这个对比,是因为之前担心一些热门语言是因为在读学生用得多,才占比高。不过从这个图看来,程序员们在工作中是确确实实使用到了这些技术栈,并不只停留在大学和科研领域。

在德中国程序员说什么:聊天数据分析

以上知道了在德中国程序员们做什么,那么来看看他们平时聊什么?

  • 数据采集
  • 开发需求
  • 监听并记录群聊入库

开发分解

1. 首先建表

DROP TABLE IF EXISTS `wx_chat_history`;
CREATE TABLE `wx_chat_history` (
 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
 `group_id` int(9) UNSIGNED NOT NULL,
 `msg_type` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Text',
 `wx_puid` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `gp_user_name` VARCHAR(70) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `sender_name` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
 `receiver_name` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
 `msg` VARCHAR(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
 `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Create time',
 PRIMARY KEY `id` (`id`),
 INDEX `idx_group_id` (`group_id`),
 INDEX `idx_create_time` (`create_time`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_unicode_ci;

2. 数据持久化

通过监听群消息,将获取的消息录入数据库。

# 将puid,nickname,消息等相应数据存入数据库
def insert_chat_history(group_id, msg_type, wx_puid, gp_user_name, sender_name, receiver_name, msg):
 bot_db.execute("INSERT INTO wx_chat_history (`group_id`, `msg_type`, `wx_puid`, "
 "`gp_user_name`, `sender_name`, `receiver_name`, `msg`)"
 " VALUES (%s, %s, %s, %s, %s, %s, %s)",
 (group_id, msg_type, wx_puid, gp_user_name, sender_name, receiver_name, msg))
def save_message(msg, group_id):
 # create_time = msg.create_time.strftime('%Y-%m-%d %H:%M:%S')
 member_name = msg.member.name
 wx_puid = msg.member.puid
 gp_user_name = msg.member.user_name
 message = ''
 # 常规消息
 if msg.type == TEXT:
 message = msg.text
 # 分享链接
 elif msg.type == SHARING:
 art_list = msg.articles
 for item in art_list:
 print(item.url + ' ' + item.title + ' ' + item.summary)
 message = item.url + '||' + item.title + '||' + item.summary
 insert_chat_history(group_id, msg.type, wx_puid, gp_user_name, member_name, '', message)
# 监听群聊,包含自己发送的消息
@bot.register(group_1, except_self=False)
def reg_msg_for_group(msg):
 save_message(msg, group_id_1)
# keep login by block thread
bot.join()

数据清洗

定义函数,可以从数据库里提取指定时间段(如一个月)的数据,并生成csv以供下一步使用。

def save_chat_in_current_month(self, group_id):
 results = self.load_chat_history(group_id, self.fl_days[0], self.fl_days[1])
 path_csv_file = os.path.join(self.path_analyse,
 '%s_chat_%s_%s.csv' % (self.group_id, self.fl_days[0], self.fl_days[1]))
 with open(path_csv_file, mode='w', encoding='utf-8') as csv_file:
 fieldnames = ['id', 'create_time', 'msg_type', 'wx_puid', 'sender_name', 'msg']
 csv_writer = csv.writer(csv_file, delimiter='	', quotechar='"', quoting=csv.QUOTE_MINIMAL)
 csv_writer.writerow(fieldnames)
 for row in results:
 row_id = row[0]
 msg_type = row[1]
 wx_puid = row[2]
 sender_name = row[3]
 msg = row[4]
 create_time = row[5]
 msg = self.format_message(msg)
 csv_writer.writerow([row_id, create_time, msg_type, wx_puid, sender_name, msg])
 csv_file.close()
 return path_csv_file

最终生成的CSV格式文件:

Python 分析在德的中国程序员,告别 996?(4)

相关推荐