精华内容
下载资源
问答
  • 今天小编就为大家分享一篇python统计函数库scipy.stats的用法解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本文实例讲述了Python统计函数运行耗时的方法。分享给大家供大家参考。具体实现方法如下: import time def time_me(fn): def _wrapper(*args, **kwargs): start = time.clock() fn(*args, **kwargs) print ...
  • python统计函数库scipy.stats的用法1/3

    万次阅读 多人点赞 2017-10-16 03:37:09
    背景总结统计工作中几个常用用法在python统计函数库scipy.stats的使用范例。正态分布的几个范例 生成服从指定分布的随机数 norm.rvs通过loc和scale参数可以指定随机变量的偏移和缩放参数,这里对应的是正态分布的...

    背景

    总结统计工作中几个常用用法在python统计函数库scipy.stats的使用范例。

    正态分布

    以正态分布的常见需求为例了解scipy.stats的基本使用方法。

    1. 生成服从指定分布的随机数
      norm.rvs通过loc和scale参数可以指定随机变量的偏移和缩放参数,这里对应的是正态分布的期望和标准差。size得到随机数数组的形状参数。(也可以使用np.random.normal(loc=0.0, scale=1.0, size=None))

      In [4]: import numpy as np
      In [5]: import scipy.stats as st
      In [6]: st.norm.rvs(loc = 0,scale = 0.1,size =10)
      Out[6]:
      array([ 0.12259875, 0.07001414, 0.11296181, -0.00630321, -0.04377487,
      0.00474487, -0.00728678, 0.03860256, 0.06701367, 0.03797084])
      In [7]:
      In [9]: st.norm.rvs(loc = 3,scale = 10,size=(2,2))
      Out[9]:
      array([[-13.26078265, 0.88411923],
      [ 5.14734849, 17.94093177]])
      In [10]:

    2. 求概率密度函数指定点的函数值
      stats.norm.pdf正态分布概率密度函数。

      In [33]: st.norm.pdf(0,loc = 0,scale = 1)
      Out[33]: 0.3989422804014327
      In [34]: st.norm.pdf(np.arange(3),loc = 0,scale = 1)
      Out[34]: array([ 0.39894228, 0.24197072, 0.05399097])
      In [35]:

    3. 求累计分布函数指定点的函数值
      stats.norm.cdf正态分布累计概率密度函数。

      In [52]: st.norm.cdf(0,loc=3,scale=1)
      Out[52]: 0.0013498980316300933
      In [53]: st.norm.cdf(0,0,1)
      Out[53]: 0.5
      In [54]:

    4. 累计分布函数的逆函数

      stats.norm.ppf正态分布的累计分布函数的逆函数,即下分位点。

      In [59]: z05 = st.norm.ppf(0.05)
      In [60]:
      In [60]: z05
      Out[60]: -1.6448536269514729
      In [61]: st.norm.cdf(z05)
      Out[61]: 0.049999999999999975
      In [62]:

    通用函数

    stats连续型随机变量的公共方法:

    名称备注
    rvs产生服从指定分布的随机数
    pdf概率密度函数
    cdf累计分布函数
    sf残存函数(1-CDF)
    ppf分位点函数(CDF的逆)
    isf逆残存函数(sf的逆)
    fit对一组随机取样进行拟合,最大似然估计方法找出最适合取样数据的概率密度函数系数。

    *离散分布的简单方法大多数与连续分布很类似,但是pdf被更换为密度函数pmf。

    常见分布

    可能用到的分布对照表

    名称含义
    betabeta分布
    fF分布
    gammagam分布
    poisson泊松分布
    hypergeom超几何分布
    lognorm对数正态分布
    binom二项分布
    uniform均匀分布
    chi2卡方分布
    cauchy柯西分布
    laplace拉普拉斯分布
    rayleigh瑞利分布
    t学生T分布
    norm正态分布
    expon指数分布

    参考文档

    1. 用Python做统计分析 (Scipy.stats的文档) - python论坛 - 经管之家(原人大经济论坛)
    2. Scipy教程 - 统计函数库scipy.stats - 皮皮blog - CSDN博客
    3. scipy.stats.weibull_max — SciPy v0.19.1 Reference Guide
    展开全文
  • Python计算函数执行时间1. time.time()2. time.perf_counter() 推荐3. timeit.timeit ()4.装饰器统计运行耗时5. with 语句统计运行耗时 1. time.time() 在计算函数执行时间时,这种时最简洁的一种方式,用两个时间戳...

    1. time.time()

    在计算函数执行时间时,这种时最简洁的一种方式,用两个时间戳做减法。

    import time
    
    
    def func():
        print('func start')
        time.sleep(1)
        print('func end')
    
    
    t = time.time()
    func()
    print(f'coast:{time.time() - t:.4f}s')
    
    

    结果为:

    func start
    func end
    coast:1.0003s
    

    这种方法很简单,也很常用,但是如果想更精确的计算函数的执行时间,就会产生精度缺失。

    2. time.perf_counter() 推荐

    示例一中注释掉time.sleep(1),只统计两个 print 函数的执行时间:

    import time
    
    
    def func():
        print('func start')
        # time.sleep(1)
        print('func end')
    
    
    t = time.time()
    func()
    print(f'coast:{time.time() - t:.8f}s')
    
    
    func start
    func end
    coast:0.0000s
    

    这就说明time.time() 函数的精度不是特别高,没法统计执行时间极短的函数耗时。

    perf_counter 函数是在 python3.3 中新添加的,它返回性能计数器的值,返回值是浮点型,统计结果包括睡眠的时间,单个函数的返回值无意义,只有多次运行取差值的结果才是有效的函数执行时间。

    import time
    
    
    def func():
        print('func start')
        # time.sleep(1)
        print('func end')
    
    
    t = time.perf_counter()
    func()
    print(f'coast:{time.perf_counter() - t:.8f}s')
    
    

    结果

    func start
    func end
    coast:0.00001500s
    

    结果并不是 0 秒, 而是一个很小的值,这说明 perf_counter() 函数可以统计出 print 函数的执行耗时,并且统计精度要比 time.time() 函数要高,比较推荐作为计时器来使用。

    3. timeit.timeit ()

    timeit() 函数有 5 个参数,stmt=‘pass’, setup=‘pass’, timer=, number=1000000, globals=None。

    • stmt 参数是需要执行的语句,默认为 pass
    • setup 参数是用来执行初始化代码或构建环境的语句,默认为 pass
    • timer 是计时器,默认是 perf_counter()
    • number 是执行次数,默认为一百万
    • globals 用来指定要运行代码的命名空间,默认为 None。
    import time
    import timeit
    
    
    def func():
        print('func start')
        time.sleep(1)
        print('func end')
    
    
    print(timeit.timeit(stmt=func, number=1))
    
    

    以上方案中比较推荐使用的是 time.perf_counter() 函数,它具有比较高的精度,同时还被用作 timeit 函数默认的计时器。

    4.装饰器统计运行耗时

    在实际项目代码中,可以通过装饰器方便的统计函数运行耗时。

    import time
    
    
    def coast_time(func):
        def fun(*args, **kwargs):
            t = time.perf_counter()
            result = func(*args, **kwargs)
            print(f'func {func.__name__} coast time:{time.perf_counter() - t:.8f} s')
            return result
    
        return fun
    
    
    @coast_time
    def test():
        print('func start')
        time.sleep(2)
        print('func end')
    
    
    if __name__ == '__main__':
        test()
    

    如果有使用异步函数的需求也可以加上:

    import asyncio
    import time
    from asyncio.coroutines import iscoroutinefunction
    
    
    def coast_time(func):
        def fun(*args, **kwargs):
            t = time.perf_counter()
            result = func(*args, **kwargs)
            print(f'func {func.__name__} coast time:{time.perf_counter() - t:.8f} s')
            return result
    
        async def func_async(*args, **kwargs):
            t = time.perf_counter()
            result = await func(*args, **kwargs)
            print(f'func {func.__name__} coast time:{time.perf_counter() - t:.8f} s')
            return result
    
        if iscoroutinefunction(func):
            return func_async
        else:
            return fun
    
    
    @coast_time
    def test():
        print('func start')
        time.sleep(2)
        print('func end')
    
    
    @coast_time
    async def test_async():
        print('async func start')
        await asyncio.sleep(2)
        print('async func end')
    
    
    if __name__ == '__main__':
        test()
        asyncio.get_event_loop().run_until_complete(test_async())
    

    使用装饰器来统计函数执行耗时的好处是对函数的入侵性小,易于编写和修改。

    装饰器装饰函数的方案只适用于统计函数的运行耗时,如果有代码块耗时统计的需求就不能用了,这种情况下我们可以使用 with 语句自动管理上下文。

    5. with 语句统计运行耗时

    通过实现 enterexit 函数可以让我们在进入上下文和退出上下文时进行一些自定义动作,例如连接 / 断开数据库、打开 / 关闭文件、记录开始 / 结束时间等等,这里我们用来统计函数块的执行时间。

    import asyncio
    import time
    
    
    class CoastTime(object):
        def __init__(self):
            self.t = 0
    
        def __enter__(self):
            self.t = time.perf_counter()
            return self
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            print(f'coast time:{time.perf_counter() - self.t:.8f} s')
    
    
    def test():
        print('func start')
        with CoastTime():
            time.sleep(2)
            print('func end')
    
    
    async def test_async():
        print('async func start')
        with CoastTime():
            await asyncio.sleep(2)
            print('async func end')
    
    
    if __name__ == '__main__':
        test()
        asyncio.get_event_loop().run_until_complete(test_async())
    
    

    with 语句不仅可以统计代码块的执行时间,也可以统计函数的执行时间,还可以统计多个函数的执行时间之和,相比装饰器来说对代码的入侵性比较大,不易于修改,好处是使用起来比较灵活,不用写过多的重复代码。

    展开全文
  • 主要给大家介绍了关于Python使用统计函数绘制简单图形的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • Python统计函数的运行耗时

    千次阅读 2017-09-11 11:49:40
    #这个装饰器可以在方便地统计函数运行的耗时。用来分析脚本的性能是最好不过了。 #这样用: @time_me def test (x, y) : time.sleep( 0.1 ) @time_me def test2 (x) : time.sleep( 0.2 ) test( 1...

    源地址:http://www.cnblogs.com/tuzkee/archive/2013/02/21/2920902.html

    import time
    
    def time_me(fn):
        def _wrapper(*args, **kwargs):
            start = time.clock()
            fn(*args, **kwargs)
            print "%s cost %s second"%(fn.__name__, time.clock() - start)
        return _wrapper
    
    
    
    #这个装饰器可以在方便地统计函数运行的耗时。用来分析脚本的性能是最好不过了。
    #这样用:
    @time_me
    def test(x, y):
        time.sleep(0.1)
    
    @time_me
    def test2(x):
        time.sleep(0.2)
    
    test(1, 2)
    test2(2)
    
    #输出:
    #test cost 0.1001529524 second
    #test2 cost 0.199968431742 second

    另一个更高级一点的版本是:

    import time
    import functools
    
    def time_me(info="used"):
        def _time_me(fn):
            @functools.wraps(fn)
            def _wrapper(*args, **kwargs):
                start = time.clock()
                fn(*args, **kwargs)
                print "%s %s %s"%(fn.__name__, info, time.clock() - start), "second"
            return _wrapper
        return _time_me
    
    @time_me()
    def test(x, y):
        time.sleep(0.1)
    
    @time_me("cost")
    def test2(x):
        time.sleep(0.2)
    
    test(1, 2)
    test2(2)
    
    #输出:
    #test used 0.0999263791237 second
    #test2 cost 0.199644784554 second

    高级版本相比第一个版本多了一个自带的参数。

    上例中@修饰符的作用:

    ‘@’符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。 只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。

      本质上讲,装饰符@类似于回调函数,把其它的函数(暂且称为目的参数)作为自己的入参,在目的函数执行前,执行一些自己的操作,比如:计数、打印一些提示信息等,然后返回目的函数。

    因此,第一个版本就相当于执行:

    time_me(test())
    time_me(test2())

    高级版本相当于执行:

    time_me("info")(test())
    time_me("cost")(test2())
    展开全文
  • python中count函数的用法 Python count()方法 描述 Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。 count()方法语法: str.count(sub, start= 0,end=len...
  • 计算python每个函数运行时间

    千次阅读 2020-12-02 09:48:09
    抄自... cProfile模块 如果想知道每个函数消耗的多少时间,以及每个函数执行了多少次,可以用CProfile模块。 1 python3 -m cProfile -s cumulative multiTree.py  ...

    抄自 https://www.cnblogs.com/pyramid1001/p/6638654.html

    cProfile模块

    如果想知道每个函数消耗的多少时间,以及每个函数执行了多少次,可以用CProfile模块。

    1

    python3 -m cProfile -s cumulative multiTree.py 

    展开全文
  • Python字符串操作常用函数,包含了检索、统计、分割、替换、大小写转换、对齐,空格删除、字符串判断(头尾+组成)
  • (我记得之前工作某次就想统计函数被调用次数,但当时没想到合适的解决方案,遂放弃。。。)例子如下:#被调用py文件代码 #假设文件名为cor.py from functools import wraps''' 通过协程实现记录所有函数被调用次
  • 主要介绍了Python实现Mysql数据统计的实例代码,给大家介绍了Python数据分析numpy统计函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Python 计算函数运行时间

    万次阅读 2019-03-26 11:27:31
    Python中,有时候为了优化代码,我们需要监控哪些函数使用了比较多的时间,或者是为了单纯查看函数的运行时间。那么本文推荐两种监控函数运行时间的方法。 方法一: 在程序内使用time模块记录时间,计算使用的时间 ...
  • 描述 补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬...
  • 该程序用于统计一个字符串中中英文、空格、数字和标点符号的个数。
  • 一、python库下载及安装 下载地址为http://www.lfd.uci.edu/~gohlke/pythonlibs/ 如下所示: 下拉此页,可发现该页为python库的下载页面: 在该页选择使用的功能库点击下载将其保存至本地,并记住其下载...
  • 主要介绍了python统计字符串中指定字符出现次数的方法,涉及Python中count函数的使用技巧,非常具有实用价值,需要的朋友可以参考下
  • Python统计字符出现次数

    千次阅读 2020-06-29 20:32:13
    函数实现,统计字符串中指定字符出现的次数。 注意: 禁止使用count()函数函数定义 def sum_char (string, char): pass 参数说明 string是一个字符串,char是一个字符 返回值说明 函数返回一个整数,表示字符 ...
  • 下面的一个例子就是用python统计单词出现的个数。 import sys import string #import collections if len(sys.argv) == 1 or sys.argv[1] in {"-h", "--help"}: print("usage: uniqueword filename_1 filename_2 ....
  • 题目: 统计一个文件中每个单词出现的次数,列出出现频率最多的5个单词。 前言: 这道题在实际应用场景中使用比较广泛,比如统计历年来四六级考试中...在python中读写文件可以使用内置函数open(),而 open 函数在pytho
  • python统计计数的几种方法

    万次阅读 2019-06-05 16:20:11
    Counter是一个容器对象,主要的作用是用来统计散列对象,可以使用三种方式来初始化 参数里面参数可迭代对象  Counter("success") 传入关键字参数 Counter((s=3,c=2,e=1,u=1)) 传入字典  Counter({"s":3,"c...
  • Python中numpy的统计函数

    千次阅读 2018-11-30 00:25:10
    Python中numpy的统计函数 axis = 0 / 1 / None 0代表column 1代表row None不加以区分 函数 含义 sum(a, axis=None) 根据给定轴axis计算数组a相关元素之和,axis整数或元组 mean(a, axis=None) 根据给定轴...
  • # python万能装饰器实现计算函数的调用次数和执行时间 import time def set_fun(func): num = 0 # 初始化次数 def call_fun(*args, **kwargs): nonlocal num # 声明num 变当前作用域局部变量为最临近外层(非...
  • 本文介绍了python实现简单中文词频统计示例,分享给大家,具体如下: 任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 1.文件操作 2.字典 3.排序 4.lambda 代码 import codecs import matplotlib.pyplot ...
  • Python
  • # 装饰器函数 def fun_run_time(func): @wraps(func) def inner(*args, **kwargs): s_time = time.time() ret = func(*args, **kwargs) e_time = time.time() print("{} cost {} s".format(func
  • Python列表函数&方法

    千次阅读 多人点赞 2018-10-16 20:18:06
    Python包含以下函数: 函数 都是python内置的函数 len(list) 列表元素个数 max(list) 返回列表元素最大值 min(list) 返回列表元素最小值 list(seq) 将元组转换为列表 Python包含以下方法: 方法 list.append(obj) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,143
精华内容 58,457
关键字:

python统计函数

python 订阅