gpt4 book ai didi

python - 将字典图表转换为文本直方图

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:45 25 4
gpt4 key购买 nike

有一个 Python 模块,它将文本文件作为参数并计算该文本文件中单词长度的频率。

!/usr/bin/python3

import sys
import string

def get_len(word):
punc = set(string.punctuation)
clean_word = "".join(character for character in word if character not in punc)
return len(clean_word)

try:
with open(sys.argv[1], 'r') as file_arg:
file_arg.read()
except IndexError:
print('You need to provide a filename as an arguement.')
sys.exit()

fname = open(sys.argv[1], 'r')
words = fname.read().split()


word_length_count = {}

for word in words:
word_length = get_len(word)
if word_length in word_length_count.keys():
word_length_count[word_length] += 1
else:
word_length_count[word_length] = 1

print('Length', 'Count')

for key in word_length_count.keys():
if key > 0:
print(" %d %d" % (key, word_length_count[key]))

fname.close()

我希望将输出转换为基于文本的直方图,但不确定从哪里开始。示例如下:

Length Count  
1 16
2 267
3 267
4 169
5 140
6 112
7 99
8 68
9 61
10 56
11 35
12 13
13 9
14 7
15 2

400 -|
|
|
|
|
300 -|
|
| ******
| ******
| ******
200 -| ******
| ******
| *********
| ************
| ************
100 -| ***************
| ******************
| ************************
| ***************************
| ******************************
0 -+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

最佳答案

您可以编写一个函数,返回给定高度处的直方图的一条水平线,如果每一列等于或等于该高度,则输出一个 * ,否则输出一个空格:

def get_histogram_line(height, max_length):
s = "";
for i in range(0, max_length + 1):
if word_length_count[i] >= height:
s += "***"
else:
s += " "
return s

然后迭代高度值的范围,从最大值开始然后递减:

for h in range(400, 0, -20):
print get_histogram_line(h, 15)

输出:

   ******                                    
******
******
******
******
*********
************
************
***************
******************
************************
***************************
******************************

然后为标签等添加额外的格式。您还可以根据数据计算最大高度和步数,而不是硬编码。

关于python - 将字典图表转换为文本直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com