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格式文件:

相关推荐
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
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