jieba分析mysql_从Mysql中取出数据并用jieba统计词频

本文介绍了如何使用pymysql连接MySQL数据库获取数据,并结合jieba库进行分词,统计词频。通过Python代码展示了一个简单的数据库查询及jieba词频分析的过程,展示了从数据库中取出数据并进行文本分析的方法。
摘要由CSDN通过智能技术生成

1、导入pymysql库和jieba库

这里使用的是中科大的镜像,很快。

安装jieba库同理。

2、编写代码

# -*- coding: utf-8 -*-

# @Time: 2020/8/25 19:24

# @Author: fanlumaster

# @File: douban.py

# @Software: PyCharm

import pymysql

import jieba

# 连接数据库

db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='douban', charset='utf8')

cursor = db.cursor()

# 测试,打印一下mysql版本

cursor.execute("select version()")

data = cursor.fetchone()

print("Database Version:%s" %data)

# 执行查询语句

sql = 'select * from posts'

cursor.execute(sql)

result = cursor.fetchall()

# 开始打印

print("开始打印")

i = 1

str = ""

for res in result:

print(i)

# print(res[5])

str += res[5]

i = i + 1

# print(res)

print(str)

cursor.close()

# 开始用jieba统计词频

words = jieba.lcut(str)

counts = {}

for word in words:

if len(word) == 1: # 排除单个字符的分词结果

continue

else:

counts[word] = counts.get(word, 0) + 1 # 这里的0表示如果word这个键不在字典中,就添加这个键,并且默认为0,如果加上后面的1,就合理了

items = list(counts.items())

items.sort(key=lambda x:x[1], reverse=True) # 以出现的次数为标准,从大到小

for i in range(100):

word, count = items[i]

print("{0:<10}{1:>5}".format(word, count))

mysql的数据库是之前用Java从豆瓣的小组爬取下来的一个小组的帖子,这里只是去除了主帖的数据。

有一说一,数据有14000多条,大概十几mb的样子,所以jieba执行起来还怪慢的。

运行结果:

642821e1eb6520cf2c442382e1123b6d.png

数据库:

873e903d6179b4e6c15cf11951bc02ca.png

标签:jieba,word,res,pymysql,cursor,词频,Mysql,print

来源: https://www.cnblogs.com/fanlumaster/p/13569110.html

解释代码 #加载数据 path_absolute_log = r"F:\数据处理比赛\BDC2023\处理数据log" paths_log_file = os.listdir(path_absolute_log) #获取绝对路径 def make_paths_absolute(paths_file): path_absolute = path_absolute_log paths_absolute_file = os.path.join(path_absolute,paths_file) return paths_absolute_file paths_absolute_log_file = list(map(make_paths_absolute,paths_log_file)) #对表格处理 path_absolute_log_file = r"F:\数据处理比赛\BDC2023\处理数据log\4ff8b802-0d87-11ee-af51-525400d4ffe4_log.csv" def form_data(path_absolute_log_file): data_log = pd.read_csv(path_absolute_log_file) data_log.insert(data_log.shape[1], 'id_score', np.nan) data_log.insert(data_log.shape[1], 'id', os.path.basename(path_absolute_log_file)[:-8]) data_log_message = data_log['message'] def jieba_data(data): data_log_jieba_message = [] data_log_jieba_message.append(','.join(jieba.cut_for_search(data))) print(data_log_jieba_message) return data_log_jieba_message data_log_jieba_message = data_log_message.map(jieba_data) def form_work(data): feature_words = ['bug','ERROR','WARNING','error','WARN','empty','错误','失败','未登录'] set_data = set(str(data)[2:-2].split(',')) set_feature_words = set(feature_words) set_mysql = set('mysql') score = [] if set_data.intersection(set_feature_words): score.append() if set_mysql.intersection(set_feature_words): score.append('LTE4MDK5Mzk2NjU1NiM1ODIONDC=') score = str(score)[2:-2] print(score) return score data_log['id_score'] = data_log_jieba_message.map(form_work) return data_log data_log = form_data(path_absolute_log_file)
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值