xlsx 的讀入 及 詞雲輸出

来源:http://www.cnblogs.com/eeshaxia/archive/2017/04/07/6677815.html
-Advertisement-
Play Games

#coding=utf-8 import sysreload(sys)sys.setdefaultencoding('utf-8') import xlrdimport jiebaimport codecsimport csvimport numpy as npfrom wordcloud impo ...


#coding=utf-8

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import xlrd
import jieba
import codecs
import csv
import numpy as np
from wordcloud import WordCloud
import jieba.posseg
import logging

def read_xlsx(filename):
workbook = xlrd.open_workbook(filename)
booksheet = workbook.sheet_by_name('Sheet1')
p = list()
count = 0
for row in range(booksheet.nrows):
count += 1
#if(count == 1000): break
row_data = []
for col in range(booksheet.ncols):
cel = booksheet.cell(row, col)
val = cel.value
try:
val = cel.value
val = re.sub(r'\s+', '', val)
except:
pass

if type(val) == float:
val = int(val)
else:
val = str( val )
row_data.append(val)
p.append(row_data)
print 'The size of p is ' + str(len(p))
return p


def seperate(p):
result = {}
count = 0
for i in p:
count += 1
if(count % 100 == 0): print 'Have seperate :# ' + str(count) + ' # words'
for j in i:
seg_list = jieba.posseg.cut(j)
try:
for k in seg_list:
if k.flag.startswith('n'):
v = 1
w = k.word
if result.has_key(w):
v = result[w]
v += 1
result[w] = v
except Exception,e:
print Exception,":",e
return result

def is_chinese(s):
rt = False
if s>= u"\u4e00" and s<= u"\u9fa6":
rt = True
return rt

def cutdict(p, top):
result = {}
biggerone = {}
vs = []
for (k,v) in p.items():
if(len(k) > 1 and is_chinese(k)):
vs.append(v)
biggerone[k] = v
vs.sort(reverse = True)
top_v = np.percentile(vs, top)
for (k,v) in biggerone.items():
if v >= top_v:
result[k] = v
return result

def initfile(filename):
csvfile = open(filename, 'wb')
csvfile.write(codecs.BOM_UTF8)
writer = csv.writer(csvfile)
writer.writerow(['詞','詞頻'])
return csvfile, writer

def ci2file(csvfile, writer, result):
for (k,v) in result.items():
if(len(k) > 1):
row = []
row.append(k)
row.append(v)
writer.writerow(row)
csvfile.flush()
csvfile.close()

p = read_xlsx('user_tweets_2.xlsx')
logging.info('Done read tweets')
result = seperate(p)
csvfile, writer = initfile('user_tweets_2.csv')
ci2file(csvfile, writer, result)
result = cutdict(result, 90)
logging.info('Done Cut result')
print 'The size of final result is ' + str(len(result))
# Generate a word cloud image 此處原為 text 方法,我們改用 frequencies
#wordcloud = WordCloud().generate(text

import random

# 形成獨特的灰黑色調
def grey_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
return "hsl(0, 0%%, %d%%)" % random.randint(60, 100)

from PIL import Image
import matplotlib.pyplot as plt
mask = np.array(Image.open('timg2.png'))
logging.info('Done Read image')

wordcloud = WordCloud(max_words = 1000, mask = mask,
margin = 10,font_path='/Library/Fonts/華文仿宋.ttf')


wordcloud.fit_words(result)

default_colors = wordcloud.to_array()
plt.title("Custom colors")
plt.imshow(wordcloud.recolor(color_func=grey_color_func, random_state=3))
wordcloud.to_file("a_new_hope.png")
plt.axis("off")
plt.figure()
plt.title("Default colors")
plt.imshow(default_colors)
plt.axis("off")
plt.show()
# Display the generated image:
# the matplotlib way:

#plt.imshow(wordcloud)
#plt.axis("off")
#plt.show()

#from operator import itemgetter
#item1 = itemgetter(1)
#frequencies = sorted(result.items(), key=item1, reverse=True)

print 'done'


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • NET Core 第二部分: centos7 helloworld 站點 在開發機器上(我是在台式機),用Visual Studio 2017 發佈NET Core mvc ,上傳到Centos伺服器,客戶端開發機器可以訪問Helloworl站點 開發環境:windows7+Visual Studi ...
  • MyBatis是一個“半自動化”的ORM框架,ORM即Object/Relation Mapping,對象關係映射,是面向對象編程語言跟關係型資料庫的橋梁,將編程語言對Java實體類的操作映射到資料庫中。 下麵以向資料庫中添加一條圖書信息為例,說明MyBatis的入門操作 MyEclipse中新建個 ...
  • 圖中的綠色的虛線代表實現,綠色實線代表介面之間的繼承,藍色實線代表類之間的繼承。 1)AbstractCollection:提供了大量的Collectin實現 兩個抽象方法: public abstract Iterator<E> iterator(); public abstract int si ...
  • MyBatis攔截器原理探究 http://www.cnblogs.com/fangjian0423/p/mybatis-interceptor.html 【myBatis】Mybatis中的攔截器 http://blog.csdn.net/moshenglv/article/details/526 ...
  • 數組:鍵值對組成的語言結構, 根據維數可分為:一維數組、多維數組 根據Key可分為:索引數組、關聯數組 PHP數組 創立數組的方式: $ar_1 = array();//空數組 $ar_2 = array(0,1,2)//初始化數組,有3個值 $ar_3[0] = 1; $ar_3['name'] ...
  • 題目:將一個正整數分解質因數。例如:輸入90,列印輸出90=2*3*3*5。 ...
  • 設計思想: 1.使用正則表達式判斷版本號格式是否正確 2.將字元串用”.”分隔成數組 3.比較數組長度,將長度短的數組用“0”補齊成相等長度數組 4.逐個遍曆數組元素,比較大小 測試用例: 1.版本號為空 2.版本號含非數字 3.版本號長度不一致 4.版本號以點為分隔,逐位比較 ...
  • 本文章轉自: http://blog.csdn.net/cclovett/article/details/12448843 結論:Pattern與Matcher一起合作.Matcher類提供了對正則表達式的分組支持,以及對正則表達式的多次匹配支持. 單獨用Pattern只能使用Pattern.mat ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...