Python 分析在德的中国程序员,告别 996?(4)
5. 在德程序员常用开发语言和框架
下面这三个分析代码一致,这里只贴出数据结果。
5.1 在德程序员常用开发语言和框架
分析:
- 得益于大数据和AI的火热,Python当仁不让位居第一。
- Java、C和C++并驾齐驱。
- Java是德国传统企业里企业级应用系统开发语言首选,出于系统稳定和兼容性考虑
- C++和C在自动驾驶,医疗,机械,嵌入式系统领域是不可替代的
- 当然不能忘了.Net在工业界PLC系统里基本是霸主地位
- Angualr、React、Vue、jQuery、TypeScript在企业级应用前端开发里使用广泛
- 移动开发iOS和Android基本绝迹,原因之前也提了。
以上占比分布基本是符合德国六个行业开发语言占比率的,依次为软件开发,信息技术,电商,汽车,咨询,金融。稍微反常的是德国的中国程序员在工作使用PHP的不多,可是会PHP在德国也是很容易找工作的嘛。
5.2 程序猿和程序媛常用开发语言和框架对比
分析:
- 猿偏向后端开发,媛偏向前端开发
- 在Java、C++、C上,猿媛旗鼓相当
- 在数据库管理和SQL使用上,媛稍微多一点
总体来说,在德程序媛的能力并不比程序猿弱,技术栈相当广,德国不愧是培养理工女汉子的国度。
5.3 在职人员和学生常用开发语言和框架对比
分析:
加上这个对比,是因为之前担心一些热门语言是因为在读学生用得多,才占比高。不过从这个图看来,程序员们在工作中是确确实实使用到了这些技术栈,并不只停留在大学和科研领域。
在德中国程序员说什么:聊天数据分析
以上知道了在德中国程序员们做什么,那么来看看他们平时聊什么?
- 数据采集
- 开发需求
- 监听并记录群聊入库
开发分解
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格式文件:
相关推荐
susmote 2020-11-07
湾区人工智能 2020-11-20
diskingchuan 2020-10-23
amicablehj 2020-11-16
smartbaby 2020-11-11
teamvx 2020-11-11
啊兵 2020-11-10
ruancw 2020-11-10
Elyn 2020-11-08
lipin 2020-11-03
kinglomei 2020-10-27
bucai 2020-10-26
JAVA飘香 2020-10-26
重剑无锋 2020-10-25
adentheima 2020-10-25
zhaoyinghuan 2020-10-25
Elyn 2020-10-24
lipin 2020-10-22
feinifi 2020-10-14