先来个最简单的:

  1. # 查找列表中出现次数最多的值
  2. ls = [1, 2, 3, 4, 5, 6, 1, 2, 1, 2, 1, 1]
  3. ls = ["呵呵", "呵呵", "呵呵", "哈哈", "哈哈", "拉拉"]
  4. y = max(set(ls), key=ls.count)
  5. print(y)

一、字频统计:  ( collections 库)  2017-10-27

这个库是python 自带的

http://www.cnblogs.com/George1994/p/7204880.html  Python collections模块总结

https://www.imooc.com/video/16366  counter的视频  2018-11-26

先练习一下方法的使用: collections.Counter  (这个库里只有Counter这个类比较好用)

  1. from collections import Counter
  2. cnt = Counter()
  3. for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
  4. cnt[word] += 1
  5. print(cnt.most_common()) #[('blue', 3), ('red', 2), ('green', 1)]
  6.  
  7. cnt = Counter()
  8. for char in 'hellllooeooo':
  9. cnt[char] += 1
  10. print(cnt.most_common()) #[('o', 5), ('l', 4), ('e', 2), ('h', 1)]
  11. #for key, val in cnt.most_common():
  12. # print(key, val)

1、随机生成100个英文字母,字频统计:

  1. # -*- coding: utf-8 -*-
  2. # coding=utf-8
  3.  
  4. import random
  5. import collections
  6. import string
  7.  
  8. #str1 = '赵钱孙李周吴郑王'
  9. str1 = string.ascii_uppercase # 大写 ABCDEFGHIJKLMNOPQRSTUVWXYZ
  10. #str1 = string.ascii_lowercase # 小写 abcdefghijklmnopqrstuvwxyz
  11. #str1 = string.ascii_letters # 大写和小写 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
  12. mylist = [random.choice(str1) for i in range(100)]
  13. mycount = collections.Counter(mylist)
  14. for key, val in mycount.most_common(10): # 有序
  15. print(key, val)

2、读取文本文件,字频统计:  (统计李白981首诗中,最常出现的10个字)

  1. # -*- coding: utf-8 -*-
  2. # coding=utf-8
  3.  
  4. import collections
  5.  
  6. # 读取文本文件,把所有的汉字拆成一个list
  7. f = open("jieba_text.txt", 'r', encoding='utf8') # 打开文件,并读取要处理的大段文字
  8. txt1 = f.read()
  9. txt1 = txt1.replace('\n', '') # 删掉换行符
  10. txt1 = txt1.replace(',', '') # 删掉逗号
  11. txt1 = txt1.replace('。', '') # 删掉句号
  12. mylist = list(txt1)
  13. mycount = collections.Counter(mylist)
  14. for key, val in mycount.most_common(10): # 有序(返回前10个)
  15. print(key, val)

一个小练习:扒取李白诗词981篇,进行词频统计:

前一阵不是有清华附小的小学生论文《大数据分析帮你进一步认识苏轼》么,其中有对苏轼的词频统计。

为了赶上小学生的水平,刚才做了个小练习,想统计一下李白的981首诗中的每个字的出现频率。代码就不放上来了。写的不太好,但效果差不多做出来了。

1、http://www.shicimingju.com/chaxun/zuozhe/1.html   这个页面有李白诗词,但是不完整,所以要进入诗词标题的链接的下一级页面,扒取完整诗词。以及翻页后的页面,再进行扒取,然后存于txt文件

2、用本页最上面的单字字频统计的代码,统计出李白诗词中,最常见的几个字的次序如下: 不人天云山风月白一何


二、字频统计:    这个没有用第三方库。  2017-10-17

  1. # -*- coding: utf-8 -*-
  2. # coding=utf-8
  3.  
  4. def histogram(s, old_d):
  5. d = old_d
  6. for c in s:
  7. d[c] = d.get(c, 0) + 1
  8. return d
  9.  
  10. # 读取文件,拆成行 list格式的
  11. f = open("jieba_text.txt", 'r', encoding='utf8') # 从文件中读取要处理的大段文字
  12. lines = []
  13. for line in f:
  14. rs = line.rstrip('\n') # 删掉换行符
  15. lines.append(rs)
  16. print(lines)
  17.  
  18. # 把行拆成单字,拆成dict格式的
  19. myWords = dict()
  20. for i in range(len(lines)):
  21. myWords = histogram(lines[i], myWords)
  22. print(myWords)
  23.  
  24. # myWords={'望': 3, '庐': 1, '山': 9, '瀑': 2, '布': 2, '日': 4, '照': 21, '香': 12, '炉': 1, '生': 2, '紫': 1, '烟': 3}
  25. a = sorted(myWords.items(), key=lambda item: item[1], reverse=True) # 按值排序
  26. print(dict(a)) # 转化为dict

http://www.cnblogs.com/whaben/p/6495702.html  python 列表排序方法sort、sorted技巧篇

http://www.cnblogs.com/dylan-wu/p/6041465.html  python的sorted函数对字典按key排序和按value排序

http://blog.csdn.net/u013679490/article/details/54426324  根据字典中K/V排序

http://blog.csdn.net/sxingming/article/details/51352807  python 如何反转序列


三、中文分词:    ( jieba 库 )   这个可以处理词汇

http://www.jianshu.com/p/22cdbbeeb778  jieba的教程

  1. # -*- coding: utf-8 -*-
  2. # coding=utf-8
  3.  
  4. import jieba
  5. import jieba.analyse
  6.  
  7. # text = "故宫的著名景点包括乾清宫、太和殿和午门等。其中乾清宫非常精美,午门是紫禁城的正门,午门居中向阳。"
  8. text = ''
  9. #jieba.load_userdict("jieba_dict.txt") # 用户自定义词典 (用户可以自己在这个文本文件中,写好自定制词汇)
  10. f = open('jieba_text.txt', 'r', encoding='utf8') # 要进行分词处理的文本文件 (统统按照utf8文件去处理,省得麻烦)
  11. lines = f.readlines()
  12. for line in lines:
  13. text += line
  14.  
  15. # seg_list = jieba.cut(text, cut_all=False) #精确模式(默认是精确模式)
  16. seg_list = jieba.cut(text) # 精确模式(默认是精确模式)
  17. print("[精确模式]: ", "/ ".join(seg_list))
  18.  
  19. # seg_list2 = jieba.cut(text, cut_all=True) #全模式
  20. # print("[全模式]: ", "/ ".join(seg_list2))
  21.  
  22. # seg_list3 = jieba.cut_for_search(text) #搜索引擎模式
  23. # print("[搜索引擎模式]: ","/ ".join(seg_list3))
  24.  
  25. tags = jieba.analyse.extract_tags(text, topK=5)
  26. print("关键词: ", " / ".join(tags))

四、词云:    ( WordCloud 库 ) 

在安装 这个库的时候不是很顺利。所以去这个网站下载.whl文件。下载后暂时保存在c:/Python3/Scripts/wordcloud‑1.3.2‑cp36‑cp36m‑win32.whl

http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

python pip.exe install wordcloud‑1.3.2‑cp36‑cp36m‑win32.whl

1、例子,最简单词云:

  1. # -*- coding: utf-8 -*-
  2. # coding=utf-8
  3.  
  4. import matplotlib.pyplot as plt
  5. from wordcloud import WordCloud
  6. import jieba
  7.  
  8. txt1 = open('word.txt', 'r', encoding='utf8').read() # word.txt,随便放点中文文章
  9. words_ls = jieba.cut(txt1, cut_all=True)
  10. words_split = " ".join(words_ls)
  11.  
  12. wc = WordCloud() # 字体这里有个坑,一定要设这个参数。否则会显示一堆小方框wc.font_path="simhei.ttf" # 黑体
  13. my_wordcloud = wc.generate(words_split)
  14. plt.imshow(my_wordcloud)
  15. plt.axis("off")
  16. plt.show()
  17.  
  18. wc.to_file('zzz.png') # 保存图片文件

2、例子,带遮罩的词云:

  1. # -*- coding: utf-8 -*-
  2. # coding=utf-8
  3.  
  4. import matplotlib.pyplot as plt
  5. import wordcloud
  6. import jieba
  7.  
  8. txt1 = open('word.txt', 'r', encoding='utf8').read()
  9. words_ls = jieba.cut(txt1, cut_all=True)
  10. words_split = " ".join(words_ls)
  11.  
  12. # 参数都可以注释掉,但必须设置font_path
  13. wc = wordcloud.WordCloud(
  14. width=800,
  15. height=600,
  16. background_color="#ffffff", # 设置背景颜色
  17. max_words=500, # 词的最大数(默认为200)
  18. max_font_size=60, # 最大字体尺寸
  19. min_font_size=10, # 最小字体尺寸(默认为4)
  20. colormap='bone', # string or matplotlib colormap, default="viridis"
  21. random_state=10, # 设置有多少种随机生成状态,即有多少种配色方案
  22. mask=plt.imread("mask2.gif"), # 读取遮罩图片!!
  23. font_path='simhei.ttf'
  24. )
  25. my_wordcloud = wc.generate(words_split)
  26.  
  27. plt.imshow(my_wordcloud)
  28. plt.axis("off")
  29. plt.show()
  30. wc.to_file('zzz.png') # 保存图片文件

(参数说明)

font_path:

msyh.ttf   微软雅黑
msyhbd.ttf   微软雅黑 粗体
simsun.ttc   宋体
simhei.ttf   黑体

colormap:

autumn  从红色平滑变化到橙色,然后到黄色。
bone  具有较高的蓝色成分的灰度色图。该色图用于对灰度图添加电子的视图。
cool  包含青绿色和品红色的阴影色。从青绿色平滑变化到品红色。
copper  从黑色平滑过渡到亮铜色。
flag  包含红、白、绿和黑色。
gray  返回线性灰度色图。
hot   从黑平滑过度到红、橙色和黄色的背景色,然后到白色。
hsv   从红,变化到黄、绿、青绿、品红,返回到红。
jet   从蓝到红,中间经过青绿、黄和橙色。它是hsv色图的一个变异。
line   产生由坐标轴的ColorOrder属性产生的颜色以及灰的背景色的色图。
pink   柔和的桃红色,它提供了灰度图的深褐色调着色。
prism   重复这六种颜色:红、橙、黄、绿、蓝和紫色。
spring   包含品红和黄的阴影颜色。
summer   包含绿和黄的阴影颜色。
white   全白的单色色图。
winter   包含蓝和绿的阴影色。

http://blog.csdn.net/doiido/article/details/43675465  Python open() 函数 文件处理  (讲的是 open('zz.txt',)   函数的使用)

...

py库: jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)的更多相关文章

  1. python爬虫——京东评论、jieba分词、wordcloud词云统计

    接上一章,动态页面抓取——抓取京东评论区内容. url=‘https://club.jd.com/comment/productPageComments.action?callback=fetchJS ...

  2. 数字、字符串、列表、字典,jieba库,wordcloud词云

    一.基本数据类型 什么是数据类型 变量:描述世间万物的事物的属性状态 为了描述世间万物的状态,所以有了数据类型,对数据分类 为什么要对数据分类 针对不同的状态需要不同的数据类型标识 数据类型的分类 二 ...

  3. jieba分词wordcloud词云

    1.jieba库的基本介绍 (1).jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需要额外安装 jieba库提供三种分词模式,最简单只需掌 ...

  4. 关于python pip安装第三方库 jieba 中文分词工具后提示"ImportError: cannot import name 'Random'"报错问题

    具体错误提示如下: >>> import jieba Traceback (most recent call last): File "<stdin>" ...

  5. python库--jieba(中文分词)

    import jieba 精确模式,试图将句子最精确地切开,适合文本分析:全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义:搜索引擎模式,在精确模式的基础上,对长词再次切 ...

  6. python jieba 库分词结合Wordcloud词云统计

    import jieba jieba.add_word("福军") jieba.add_word("少安") excludes={"一个", ...

  7. 利用python实现简单词频统计、构建词云

    1.利用jieba分词,排除停用词stopword之后,对文章中的词进行词频统计,并用matplotlib进行直方图展示 # coding: utf-8 import codecs import ma ...

  8. 用Python实现一个词频统计(词云+图)

    第一步:首先需要安装工具python 第二步:在电脑cmd后台下载安装如下工具: (有一些是安装好python电脑自带有哦) 有一些会出现一种情况就是安装不了词云展示库 有下面解决方法,需看请复制链接 ...

  9. [python] 基于词云的关键词提取:wordcloud的使用、源码分析、中文词云生成和代码重写

    1. 词云简介 词云,又称文字云.标签云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思.常见于博客.微博 ...

随机推荐

  1. django 初始化 介绍 生命周期

    安装好django,配置模板,静态文件 # 创建Django工程 django-admin startproject [工程名称] mysite - mysite # 对整个程序进行配置 - init ...

  2. 基于selector的socket并发

    server: #!_*_coding:utf-8_*_ #__author__:"Alex huang" import selectors #selector模块集成了selec ...

  3. spring boot编译项目打jar包

    <build> <plugins> <!--jar包打包--> <plugin> <groupId>org.springframework. ...

  4. sql Find_IN_SET 用法

    字段以 1,2,3,4 格式存储的SELECT * from test where FIND_IN_SET('15',btype) GROUP_CONCAT + group_by

  5. C++进阶--拥有资源句柄的类(浅拷贝,深拷贝,虚构造函数)

    // Person通过指针拥有string class Person { public: Person(string name) { pName_ = new string(name); } ~Per ...

  6. Android开发之内部类篇

    内部类: 1.内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性. 2.非静态内部类对象有着指向其外部类对象的引用 等等. 创建项目: 1.File---->New----->ja ...

  7. linux安装tomcat9

    0:环境准备 :     安装tomcat需要先配置jdk,所以没有配置jdk同学,先移步Linux安装JDK 或者使用比较便捷的方法,就是apt-get或者yum安装openJDK,这样做的话,会帮 ...

  8. [UE4]限制杀人信息的显示数量

  9. phpmyadmin在nginx环境下配置错误

    location ~ \.css {           add_header  Content-Type    text/css;        } location ~ \.js {        ...

  10. Css学习(2)

    1 标签分类(显示方式) 块元素 典型代表,Div,h1-h6,p,ul,li 特点: ★独占一行 ★可以设置宽高 ★ 嵌套(包含)下,子块元素宽度(没有定义情况下)和父块元素宽度默认一致. 行内元素 ...