python统计《悲惨世界》中出现次数最多的20个单词并绘制柱状图

处理的数据像这样的csv文件,已经统计好了,用mapreduce处理的

you,3768
i,3930
not,3981
this,4208
at,4292
on,4714
with,4737
which,5506
is,6504
had,6564
his,6813
it,7026
that,8413
was,9251
he,10280
in,11813
to,14663
a,15366
and,15865
of,21107
the,43538

下面是绘制柱状图的代码:

#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt


#用nmap的dtype方法自定义一组数据类型t
t = np.dtype([('word',str,40),('quantity',int)])

#用nmap的loadtxt方法读取csv文件
#delimiter=','将分隔符设为英文逗号
#usecols=(0,1)选取csv文件中的前两列
#dtype=t把输出的类型设为刚才自定义的t,不然会转换为浮点型,抛出异常
#unpack=True为拆分存储不同的数据,即将0,1列的数据分别存在word和count中
word,count = np.loadtxt('sorted.csv',delimiter=',',usecols=(0,1),dtype=t,unpack=True)


#生成一个0-19的nmap数组
X= np.arange(20)
#取后二十个,count中最大的20个元素(之前已排好序)
Y = count[-20:]

#plt的axes方法和figure方法都会产生一个‘画板’待会画的图会在上面呈现,这里用的figure
#plt.axes([0.025,0.025,0.95,0.95])
plt.figure(figsize=(14,6), dpi=80)
#plt的bar方法就是用来生成柱状图的方法,这几个参数看了就知道啥意思
plt.bar(X, Y, facecolor='#9999ff', edgecolor='white')

#设置柱状图的每个柱子顶部显示具体数值
for x,y in zip(X,Y):
    plt.text(x+0.4, y+0.05, '%d' % y, ha='center', va= 'bottom')

#设置横纵坐标的取值范围
plt.xlim(0,X.max()*1.1), plt.xticks(X,word[-20:])
plt.ylim(0,Y.max()*1.1), plt.yticks([])
#保存刚刚绘制的柱状图
plt.savefig('bar_ex.png', dpi=300)
#展示柱状图
plt.show()

绘制出来的图如下,很丑:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值