python统计图表

您所在的位置:网站首页 python统计图片数量 python统计图表

python统计图表

2022-05-27 10:46| 来源: 网络整理| 查看: 265

1. python统计图

python统计图1.怎样用python 绘制条形图

用matplotlib包的barh函数绘制的,大致布局已经很相似了

import matplotlib.pyplot as plt

from matplotlib import cm

import numpy as np

label = ['a','b','c','d','e','f']

x = sorted([1234,221,765,124,2312,890])

idx = np.arange(len(x))

color = cm.jet(np.array(x)/max(x))

plt.barh(idx, x, color=color)

plt.yticks(idx+0.4,label)

plt.grid(axis='x')

plt.xlabel('Revenues Earned')

plt.ylabel('Salespeople')

plt.title('Top 12 Salespeople(2012)\n(in USD)')

plt.show()

2.如何高效地使用Python统计数据的频率

之前用 Python 写过一个脚本,用来处理上千万用户的一些数据,其中有一个需求是统计用户的某一数据的去重数量。

为了加快程序的速度,我启用了多进程。但不幸的是,程序跑了近一个星期,还没处理完。

这时,我感觉到了不对,于是开始查看程序的性能瓶颈。对于统计去重数,我是将用户的数据放到一个列表中,然后用 len(set(data)) 去统计去重数量。

刚开始我以为这的数据量并不大,每个用户的数据不会过百,我并没有注意到有的用户会有上万条的数据,因此消耗了大量的时间(其实我的脚本消耗时间最大的地方是因为从远程 redis 中取大量数据时发生长时间的阻塞,甚至连接超时,最后我采用的方式分而治之,每次取少量的数据,这样大大的提高了性能)。为了做优化,我开始寻求高效的方法。

我发现,有大量的人认为采用字典效率会更高,即:data_unique = {}.fromkeys(data).keys() len(data_unique) 于是,我做了下测试:In [1]: import random In [2]: data = [random.randint(0, 1000) for _ in xrange(1000000)] In [3]: %timeit len(set(data)) 10 loops, best of 3: 39.7 ms per loop In [4]: %timeit len({}.fromkeys(data).keys()) 10 loops, best of 3: 43.5 ms per loop 由此可见,采用字典和采用集合的性能是差不多的,甚至可能还要慢些。在 Python 中其实有很多高效的库,例如用 numpy、pandas 来处理数据,其性能接近于 C 语言。

那么,我们就用 numpy 和 pandas 来解决这个问题,这里我还比较了获取去重数据的性能,代码如下:import collections import random as py_random import timeit import numpy.random as np_random import pandas as pd DATA_SIZE = 10000000 def py_cal_len(): data = [py_random.randint(0, 1000) for _ in xrange(DATA_SIZE)] len(set(data)) def pd_cal_len(): data = np_random.randint(1000, size=DATA_SIZE) data = pd.Series(data) data_unique = data.value_counts() data_unique.size def py_count(): data = [py_random.randint(0, 1000) for _ in xrange(DATA_SIZE)] collections.Counter(data) def pd_count(): data = np_random.randint(1000, size=DATA_SIZE) data = pd.Series(data) data.value_counts() # Script starts from here if __name__ == "__main__": t1 = timeit.Timer("py_cal_len()", setup="from __main__ import py_cal_len") t2 = timeit.Timer("pd_cal_len()", setup="from __main__ import pd_cal_len") t3 = timeit.Timer("py_count()", setup="from __main__ import py_count") t4 = timeit.Timer("pd_count()", setup="from __main__ import pd_count") print t1.timeit(number=1) print t2.timeit(number=1) print t3.timeit(number=1) print t4.timeit(number=1) 运行结果:12.438587904 0.435907125473 14.6431810856 0.258564949036 利用 pandas 统计数据的去重数和去重数据,其性能是 Python 原生函数的 10 倍以上。

3.python 有简单的图表库吗

Matplotlib 很复杂,来但用其中的命令风格模块 pyplot 就够用了。

基本上就在命令行敲敲命令就能出图。很简单,官网有个 tutorial 以及几个源简练的 demoMatplotlib 推荐安装 numpy (定义 array 或者 matrix), scipy (用不上 备着),以及 ipython(interactive Python cmd)。

iPython 集成了 numpy 和 matplotlib.pyplot 用的时候不用导入那百些模块。matplotlib 的 pyplot 教程也是基于此。

windows 下 直接安装以上几个 python 包的 binary 就 ok,环境变量设置一下,没度啥折腾的。

python统计图

转载请注明出处编程代码网 » python统计图表



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3