我想要使用Counter
库获得的列表中的数字频率。此外,我分别使用keys = Counter(list).keys()
和values = Counter(list).values()
得到了键和值,其中list
是数字列表。他们的输出结果如下:
dict_keys(['0.2200', '0.2700', '0.6200', '0.3000', '0.2500', '0.3400', '0.5600', '0.3900', '0.5400', '0.5500', '0.7500', '0.4100', '0.2800', '0.4200', '0.3800', '0.6600', '0.2000', '0.5200', '0.7200'])
和, dict_values([15,3,6,13,6,3,1,3,3,5,4,14,5,5,3,5,11,3,9])
现在我想使用键和值生成一个饼图,我按照以下方式执行:
import matplotlib.pyplot as pyplot
pyplot.axis("equal")
pyplot.pie(float(values),labels=float(keys),autopct=None)
pyplot.show()
但是,我得到错误:
TypeError: float() argument must be a string or a number, not 'dict_values'
有没有办法将dict_values
转换为字符串或数字,因为用于生成饼图的函数只接受字符串或数字?
答案 0 :(得分:7)
您需要遍历这些值并将它们单独转换为浮点数:
pyplot.pie([float(v) for v in values], labels=[float(k) for k in keys],
autopct=None)
[expression for target in iterable]
被称为列表推导并生成列表对象。
我没有两次创建Counter()
;只创建一次并重复使用:
counts = Counter(yourlist)
pyplot.pie([float(v) for v in counts.values()], labels=[float(k) for k in counts],
autopct=None)