Python統計單字出現的次數_python
最近經理交給我一項任務,統計一個檔案中每個單字出現的次數,列出出現頻率最多的5個字。本文為大家帶來了python 統計單字次數的想法解析,需要的朋友參考下吧
#題目:
統計中每個單字出現的次數,列出出現頻率最多的5個字。
前言:
這題在實際應用場景中使用比較廣泛,例如統計歷年來四、六級考試中出現的高頻詞彙,記得李笑來就利用他的程式設計技能出版過一本背單字的暢銷書,就是根據詞頻來記單詞,深受學生喜歡。這就是一個把程式設計技能用來解決實際問題的典型場景。另外,在資料分析時,那些詞雲效果本質上都是基於詞頻統計來調整字體的大小,如果你能熟練運用Python中的知識來解決問題的話,說明你真的入門Python了。
分析
本題主要檢視以下幾個面向的知識點:
1、如何正確讀取寫檔案
在python中讀寫檔案可以使用內建函數open(),而open 函數在python2 和python3 有一定的區別,例如Python 中可以指定讀寫檔案的編碼格式,而Python 則不可以,為了同時相容2和3,我們通常會使用io模組下面的open 函數,大家可以查文檔搞清楚它們之間的區別,培養主動學習能力和查資料的習慣。
另外一點是讀寫檔案完成之後是需要關閉檔案描述子的,除了可以使用try...except...finally的語法之後,我們還可以使用更優雅的with … as 的語法來自動關閉文件。
2、如何對資料進行排序
sorted函數是一個使用頻率很高的內建函數,它的用法也很強大,因為它可以透過指定參數key 來進行自訂排序,也意味著你不僅可以對數字排序、對字母排序、還可以對列表、字典、自訂的物件進行排序,你只需要要告訴sorted 函數的排序規則是什麼,例如一個people對象,我既可以根據年齡排序也可以根據身高體重來排序,所以這個函數時非常靈活的,另外,對於列表對像有自帶的sort 方法,如果能區分清楚list.sort 與sorted 之間區別那表示你已經能靈活運用了。
3、字典資料類型的運用
做詞頻統計,用字典無疑是最合適的資料類型,單字作為字典的key, 單字出現的次數作為字典的value,很方便地就記錄了每個單字的頻率,字典很像我們的電話本,每個名字關聯一個電話號碼。另外,字典最大的特色就是它的查詢速度會非常快。理想情況下時間複雜度為O(1),我是說理想情況,如果你想深入了解字典的話,建議看看這篇文章https://www.laurentluce.com/posts/python-dictionary-implementation/
4、正規表示式的運用
對文字、字串處理,正規表示式簡直是神器,無論是做資料爬蟲或資料清洗使用非常廣泛,當然,正規表示式並不是Python特有的東西,所有程式語言都支持,我們要做的除了學習正規表示式還有他的API,只有熟悉了API我們才能運用到實際場景中去。關於正規表示式推薦一篇文章:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html ,另外我還發現有同學引進了jieba分詞庫,這個庫在做中文分詞非常有用,有興趣的可以去了解一下。
實作
分析完後,我們實作起來其實是非常快的。所以我們在拿到一個需求的時候,首先肯定是把需求弄清楚,想想大概可以用哪些技術來實現,隨後才是動手寫程式碼,其實我們在工作上,真正寫程式碼的時間還不到一半。
# -*- coding:utf-8 -*- import io import re class Counter: def __init__(self, path): """ :param path: 文件路径 """ self.mapping = dict() with io.open(path, encoding="utf-8") as f: data = f.read() words = [s.lower() for s in re.findall("\w+", data)] for word in words: self.mapping[word] = self.mapping.get(word, 0) + 1 def most_common(self, n): assert n > 0, "n should be large than 0" return sorted(self.mapping.items(), key=lambda item: item[1], reverse=True)[:n] if __name__ == '__main__': most_common_5 = Counter("importthis.txt").most_common(5) for item in most_common_5: print(item)
列印結果:
#('is', 10)
('better', 8)
('than', 8)
('the', 6)
('to', 5)
總結
我在看大家程式碼的時候,很多程式碼依然存在著命名不規範(建議讀PEP8),程式碼的排版混亂(閱讀起來很困難,建議用Pycharm進行格式化)。還有不少程式碼的實作方式看起來很複雜(往往越複雜的程式碼Bug越多)。當然,實作方法不是唯一。
例如Python模組本身就提供了一個collections.Counter的類,它繼承自dict類,就是用於做統計的,我發現有部分同學使用的就是這個類來實現的,細心的你可能發現了,我實現的這個Counter和collections下面那個Counter很像,其實這就是造輪子,造輪子可以鍛鍊我們的程式思維,當然在工作上有現成的東西就沒必要自己造輪子了,除非你有信心去做得更好。你也可以思考思考,如果Python沒有提供Counter這個工具,該怎麼做。
另外,該模組還提供一個有序的字典物件 OrderedDict,使用它可以免去我們手動排序的操作。最後建議大家學習總結上面我提到的所有內容。如果你能堅持100天,相信你對Python的掌握程度是游刃有餘的。
相關推薦:
#
以上是Python統計單字出現的次數_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

在 VS Code 中,可以通過以下步驟在終端運行程序:準備代碼和打開集成終端確保代碼目錄與終端工作目錄一致根據編程語言選擇運行命令(如 Python 的 python your_file_name.py)檢查是否成功運行並解決錯誤利用調試器提升調試效率

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。
