從Mysql中取出數據並用jieba統計詞頻


1、導入pymysql庫和jieba庫

pymysql庫的安裝:控制台命令行:pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple pymsql

這里使用的是中科大的鏡像,很快。

安裝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執行起來還怪慢的。

運行結果:

數據庫:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM