精华内容
下载资源
问答
  • python数据统计分析

    万次阅读 多人点赞 2019-02-17 09:08:25
      scipy包中的stats模块和statsmodels包是python常用的数据分析工具,scipy.stats以前有一个models子模块,后来被移除了。这个模块被重写并成为了现在独立的statsmodels包。  scipy的stats包含一些比较基本的工具...

    1. 常用函数库

      scipy包中的stats模块和statsmodels包是python常用的数据分析工具,scipy.stats以前有一个models子模块,后来被移除了。这个模块被重写并成为了现在独立的statsmodels包。

     scipy的stats包含一些比较基本的工具,比如:t检验,正态性检验,卡方检验之类,statsmodels提供了更为系统的统计模型,包括线性模型,时序分析,还包含数据集,做图工具等等。

    2. 小样本数据的正态性检验

    (1) 用途

     夏皮罗维尔克检验法 (Shapiro-Wilk) 用于检验参数提供的一组小样本数据线是否符合正态分布,统计量越大则表示数据越符合正态分布,但是在非正态分布的小样本数据中也经常会出现较大的W值。需要查表来估计其概率。由于原假设是其符合正态分布,所以当P值小于指定显著水平时表示其不符合正态分布。

     正态性检验是数据分析的第一步,数据是否符合正态性决定了后续使用不同的分析和预测方法,当数据不符合正态性分布时,我们可以通过不同的转换方法把非正太态数据转换成正态分布后再使用相应的统计方法进行下一步操作。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    x = stats.norm.rvs(loc=5, scale=10, size=80) # loc为均值,scale为方差
    print(stats.shapiro(x))
    # 运行结果:(0.9654011726379395, 0.029035290703177452)
    

    (3) 结果分析

     返回结果 p-value=0.029035290703177452,比指定的显著水平(一般为5%)小,则拒绝假设:x不服从正态分布。

    3. 检验样本是否服务某一分布

    (1) 用途

     科尔莫戈罗夫检验(Kolmogorov-Smirnov test),检验样本数据是否服从某一分布,仅适用于连续分布的检验。下例中用它检验正态分布。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    x = stats.norm.rvs(loc=0, scale=1, size=300)
    print(stats.kstest(x,'norm'))
    # 运行结果:KstestResult(statistic=0.0315638260778347, pvalue=0.9260909172362317)
    

    (3) 结果分析

     生成300个服从N(0,1)标准正态分布的随机数,在使用k-s检验该数据是否服从正态分布,提出假设:x从正态分布。最终返回的结果,p-value=0.9260909172362317,比指定的显著水平(一般为5%)大,则我们不能拒绝假设:x服从正态分布。这并不是说x服从正态分布一定是正确的,而是说没有充分的证据证明x不服从正态分布。因此我们的假设被接受,认为x服从正态分布。如果p-value小于我们指定的显著性水平,则我们可以肯定的拒绝提出的假设,认为x肯定不服从正态分布,这个拒绝是绝对正确的。

    4.方差齐性检验

    (1) 用途

     方差反映了一组数据与其平均值的偏离程度,方差齐性检验用以检验两组或多组数据与其均值偏离程度是否存在差异,也是很多检验和算法的先决条件。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)  
    rvs2 = stats.norm.rvs(loc=25,scale=9,size=500)
    print(stats.levene(rvs1, rvs2))
    # 运行结果:LeveneResult(statistic=1.6939963163060798, pvalue=0.19337536323599344)
    

    (3) 结果分析

     返回结果 p-value=0.19337536323599344, 比指定的显著水平(假设为5%)大,认为两组数据具有方差齐性。

    5. 图形描述相关性

    (1) 用途

     最常用的两变量相关性分析,是用作图描述相关性,图的横轴是一个变量,纵轴是另一变量,画散点图,从图中可以直观地看到相关性的方向和强弱,线性正相关一般形成由左下到右上的图形;负相关则是从左上到右下的图形,还有一些非线性相关也能从图中观察到。

    (2) 示例

    import statsmodels.api as sm
    import matplotlib.pyplot as plt
    data = sm.datasets.ccard.load_pandas().data
    plt.scatter(data['INCOMESQ'], data['INCOME'])
    

    (3) 结果分析

     从图中可以看到明显的正相关趋势。

    6. 正态资料的相关分析

    (1) 用途

     皮尔森相关系数(Pearson correlation coefficient)是反应俩变量之间线性相关程度的统计量,用它来分析正态分布的两个连续型变量之间的相关性。常用于分析自变量之间,以及自变量和因变量之间的相关性。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    a = np.random.normal(0,1,100)
    b = np.random.normal(2,2,100)
    print(stats.pearsonr(a, b))
    # 运行结果:(-0.034173596625908326, 0.73571128614545933)
    

    (3) 结果分析

     返回结果的第一个值为相关系数表示线性相关程度,其取值范围在[-1,1],绝对值越接近1,说明两个变量的相关性越强,绝对值越接近0说明两个变量的相关性越差。当两个变量完全不相关时相关系数为0。第二个值为p-value,统计学上,一般当p-value<0.05时,可以认为两变量存在相关性。

    7. 非正态资料的相关分析

    (1) 用途

     斯皮尔曼等级相关系数(Spearman’s correlation coefficient for ranked data ),它主要用于评价顺序变量间的线性相关关系,在计算过程中,只考虑变量值的顺序(rank, 秩或称等级),而不考虑变量值的大小。常用于计算类型变量的相关性。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    print(stats.spearmanr([1,2,3,4,5], [5,6,7,8,7]))
    # 运行结果:SpearmanrResult(correlation=0.82078268166812329, pvalue=0.088587005313543812)
    

    (3) 结果分析

     返回结果的第一个值为相关系数表示线性相关程度,本例中correlation趋近于1表示正相关。第二个值为p-value,p-value越小,表示相关程度越显著。

    8. 单样本T检验

    (1) 用途

     单样本T检验,用于检验数据是否来自一致均值的总体,T检验主要是以均值为核心的检验。注意以下几种T检验都是双侧T检验。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    rvs = stats.norm.rvs(loc=5, scale=10, size=(100,2))
    print(stats.ttest_1samp(rvs, [1, 5]))
    # 运行结果:Ttest_1sampResult(statistic=array([ 5.12435977,  1.07927393]), pvalue=array([  1.47820719e-06,   2.83088106e-01]))
    

    (3) 结果分析

     本例中生成了2列100行的数组,ttest_1samp的第二个参数是分别对两列估计的均值,p-value返回结果,第一列1.47820719e-06比指定的显著水平(一般为5%)小,认为差异显著,拒绝假设;第二列2.83088106e-01大于指定显著水平,不能拒绝假设:服从正态分布。

    9. 两独立样本T检验

    (1) 用途

     有于比较两组数据是否来自于同一正态分布的总体。注意:如果要比较的两组数据不满足方差齐性, 需要在ttest_ind()函数中添加参数equal_var = False。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)  
    rvs2 = stats.norm.rvs(loc=6,scale=10,size=500)
    print(stats.ttest_ind(rvs1,rvs2))
    # 运行结果:Ttest_indResult(statistic=-1.3022440006355476, pvalue=0.19313343989106416)
    

    (3) 结果分析

     返回结果的第一个值为统计量,第二个值为p-value,pvalue=0.19313343989106416,比指定的显著水平(一般为5%)大,不能拒绝假设,两组数据来自于同一总结,两组数据之间无差异。

    10. 配对样本T检验

    (1) 用途

     配对样本T检验可视为单样本T检验的扩展,检验的对象由一群来自正态分布独立样本更改为二群配对样本观测值之差。它常用于比较同一受试对象处理的前后差异,或者按照某一条件进行两两配对分别给与不同处理的受试对象之间是否存在差异。

    (2) 示例

    from scipy import stats
    import numpy as np
    
    np.random.seed(12345678)
    rvs1 = stats.norm.rvs(loc=5,scale=10,size=500) 
    rvs2 = (stats.norm.rvs(loc=5,scale=10,size=500) + stats.norm.rvs(scale=0.2,size=500)) 
    print(stats.ttest_rel(rvs1,rvs2))
    运行结果:Ttest_relResult(statistic=0.24101764965300979, pvalue=0.80964043445811551)
    

    (3) 结果分析

     返回结果的第一个值为统计量,第二个值为p-value,pvalue=0.80964043445811551,比指定的显著水平(一般为5%)大,不能拒绝假设。

    11. 单因素方差分析

    (1) 用途

     方差分析(Analysis of Variance,简称ANOVA),又称F检验,用于两个及两个以上样本均数差别的显著性检验。方差分析主要是考虑各组之间的均数差别。

     单因素方差分析(One-wayAnova),是检验由单一因素影响的多组样本某因变量的均值是否有显著差异。

     当因变量Y是数值型,自变量X是分类值,通常的做法是按X的类别把实例成分几组,分析Y值在X的不同分组中是否存在差异。

    (2) 示例

    from scipy import stats
    a = [47,56,46,56,48,48,57,56,45,57]  # 分组1
    b = [87,85,99,85,79,81,82,78,85,91]  # 分组2
    c = [29,31,36,27,29,30,29,36,36,33]  # 分组3
    print(stats.f_oneway(a,b,c))
    # 运行结果:F_onewayResult(statistic=287.74898314933193, pvalue=6.2231520821576832e-19)
    

    (3) 结果分析

     返回结果的第一个值为统计量,它由组间差异除以组间差异得到,上例中组间差异很大,第二个返回值p-value=6.2231520821576832e-19小于边界值(一般为0.05),拒绝原假设, 即认为以上三组数据存在统计学差异,并不能判断是哪两组之间存在差异 。只有两组数据时,效果同 stats.levene 一样。

    12. 多因素方差分析

    (1) 用途

     当有两个或者两个以上自变量对因变量产生影响时,可以用多因素方差分析的方法来进行分析。它不仅要考虑每个因素的主效应,还要考虑因素之间的交互效应。

    (2) 示例

    from statsmodels.formula.api import ols
    from statsmodels.stats.anova import anova_lm
    import pandas as pd
     
    X1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2] 
    X2 = [1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2]
    Y  = [76,78,76,76,76,74,74,76,76,55,65,90,65,90,65,90,90,79,70,90, 88,76,76,76,56,76,76,98,88,78,65,67,67,87,78,56,54,56,54,56] 
     
    data = {'T':X1, 'G':X2, 'L':Y}
    df = pd.DataFrame(data)
    formula = 'L~T+G+T:G' # 公式                                        
    model = ols(formula,df).fit()
    print(anova_lm(model))
    '''
    运行结果:
                df    sum_sq      mean_sq         F    PR(>F)
    T          1.0   265.225   265.225000  2.444407  0.126693
    G          1.0   207.025   207.025000  1.908016  0.175698
    T:G        1.0  1050.625  1050.625000  9.682932  0.003631
    Residual  36.0  3906.100   108.502778       NaN       NaN
    '''
    

    (3) 结果分析

     上述程序定义了公式,公式中,"~"用于隔离因变量和自变量,”+“用于分隔各个自变量, ":"表示两个自变量交互影响。从返回结果的P值可以看出,X1和X2的值组间差异不大,而组合后的T:G的组间有明显差异。

    13. 卡方检验

    (1) 用途

     上面介绍的T检验是参数检验,卡方检验是一种非参数检验方法。相对来说,非参数检验对数据分布的要求比较宽松,并且也不要求太大数据量。卡方检验是一种对计数资料的假设检验方法,主要是比较理论频数和实际频数的吻合程度。常用于特征选择,比如,检验男人和女人在是否患有高血压上有无区别,如果有区别,则说明性别与是否患有高血压有关,在后续分析时就需要把性别这个分类变量放入模型训练。

     基本数据有R行C列, 故通称RC列联表(contingency table), 简称RC表,它是观测数据按两个或更多属性(定性变量)分类时所列出的频数表。

    (2) 示例

    import numpy as np
    import pandas as pd
    from scipy.stats import chi2_contingency
    
    np.random.seed(12345678)
    data = np.random.randint(2, size=(40, 3)) # 2个分类,50个实例,3个特征
    data = pd.DataFrame(data, columns=['A', 'B', 'C'])
    contingency = pd.crosstab(data['A'], data['B']) # 建立列联表
    print(chi2_contingency(contingency)) # 卡方检验
    '''
    运行结果:
    (0.36556036556036503, 0.54543425102570975, 1, 
    array([[ 10.45,   8.55],
           [ 11.55,   9.45]]))'''
    

    (3) 结果分析

     卡方检验函数的参数是列联表中的频数,返回结果第一个值为统计量值,第二个结果为p-value值,p-value=0.54543425102570975,比指定的显著水平(一般5%)大,不能拒绝原假设,即相关性不显著。第三个结果是自由度,第四个结果的数组是列联表的期望值分布。

    14. 单变量统计分析

    (1) 用途

     单变量统计描述是数据分析中最简单的形式,其中被分析的数据只包含一个变量,不处理原因或关系。单变量分析的主要目的是通过对数据的统计描述了解当前数据的基本情况,并找出数据的分布模型。

     单变量数据统计描述从集中趋势上看,指标有:均值,中位数,分位数,众数;从离散程度上看,指标有:极差、四分位数、方差、标准差、协方差、变异系数,从分布上看,有偏度,峰度等。需要考虑的还有极大值,极小值(数值型变量)和频数,构成比(分类或等级变量)。

     此外,还可以用统计图直观展示数据分布特征,如:柱状图、正方图、箱式图、频率多边形和饼状图。

    15. 多元线性回归

    (1) 用途

     多元线性回归模型(multivariable linear regression model ),因变量Y(计量资料)往往受到多个变量X的影响,多元线性回归模型用于计算各个自变量对因变量的影响程度,可以认为是对多维空间中的点做线性拟合。

    (2) 示例

    import statsmodels.api as sm 
    data = sm.datasets.ccard.load_pandas().data
    model = sm.OLS(endog = data['AVGEXP'], exog = data[['AGE','INCOME','INCOMESQ','OWNRENT']]).fit()
    print(model.summary())
    '''
    运行结果:
                                OLS Regression Results                            
    ==============================================================================
    Dep. Variable:                 AVGEXP   R-squared:                       0.543
    Model:                            OLS   Adj. R-squared:                  0.516
    Method:                 Least Squares   F-statistic:                     20.22
    Date:                Thu, 31 Jan 2019   Prob (F-statistic):           5.24e-11
    Time:                        15:11:29   Log-Likelihood:                -507.24
    No. Observations:                  72   AIC:                             1022.
    Df Residuals:                      68   BIC:                             1032.
    Df Model:                           4                                         
    Covariance Type:            nonrobust                                         
    ==============================================================================
                     coef    std err          t      P>|t|      [0.025      0.975]
    ------------------------------------------------------------------------------
    AGE           -6.8112      4.551     -1.497      0.139     -15.892       2.270
    INCOME       175.8245     63.743      2.758      0.007      48.628     303.021
    INCOMESQ      -9.7235      6.030     -1.613      0.111     -21.756       2.309
    OWNRENT       54.7496     80.044      0.684      0.496    -104.977     214.476
    ==============================================================================
    Omnibus:                       76.325   Durbin-Watson:                   1.692
    Prob(Omnibus):                  0.000   Jarque-Bera (JB):              649.447
    Skew:                           3.194   Prob(JB):                    9.42e-142
    Kurtosis:                      16.255   Cond. No.                         87.5
    ==============================================================================
    '''
    

    (3) 结果分析

     直接通过返回结果中各变量的P值与0.05比较,来判定对应的解释变量的显著性,P<0.05则认为自变量具有统计学意义,从上例中可以看到收入INCOME最有显著性。

    16. 逻辑回归

    (1) 用途

     当因变量Y为2分类变量(或多分类变量时)可以用相应的logistic回归分析各个自变量对因变量的影响程度。

    (2) 示例

    import statsmodels.api as sm
    data = sm.datasets.ccard.load_pandas().data
    data['OWNRENT'] = data['OWNRENT'].astype(int)
    model = sm.Logit(endog = data['OWNRENT'], exog = data[['AVGEXP','AGE','INCOME','INCOMESQ']]).fit()
    print(model.summary())
    '''
    运行结果:
    Optimization terminated successfully.
             Current function value: 0.504920
             Iterations 8
                               Logit Regression Results                           
    ==============================================================================
    Dep. Variable:                OWNRENT   No. Observations:                   72
    Model:                          Logit   Df Residuals:                       68
    Method:                           MLE   Df Model:                            3
    Date:                Fri, 01 Feb 2019   Pseudo R-squ.:                  0.2368
    Time:                        17:05:47   Log-Likelihood:                -36.354
    converged:                       True   LL-Null:                       -47.633
                                            LLR p-value:                 4.995e-05
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    AVGEXP         0.0002      0.001      0.228      0.820      -0.002       0.002
    AGE            0.0853      0.042      2.021      0.043       0.003       0.168
    INCOME        -2.5798      0.822     -3.137      0.002      -4.191      -0.968
    INCOMESQ       0.4243      0.126      3.381      0.001       0.178       0.670
    ==============================================================================
    '''
    

    (3) 结果分析

     直接通过返回结果中各变量的P值与0.05比较,来判定对应的解释变量的显著性,P<0.05则认为自变量具有统计学意义。

    展开全文
  • 统计文件内数据 Python

    千次阅读 2016-03-21 09:01:49
    python 是一门很简单的脚本语言, 不过很久没用了, 好多东西都忘得差不多了。正好昨天晚上,老板让测试相机的拍图时间, 于是...程序很简单, 就是要实现对文件内每行数据的读取, 计算他们的均值。 涉及python类的书

    python 是一门很简单的脚本语言, 不过很久没用了, 好多东西都忘得差不多了。正好昨天晚上,老板让测试相机的拍图时间, 于是我们连续抓取了200幅图像, 并他们的拍图时间间隔写入到了txt文件中。
    使用C++一个while循环可以很容易的解决这个问题, 不过突然间想装逼, 练习下python的使用。
    程序很简单, 就是要实现对文件内每行数据的读取, 计算他们的均值。
    涉及python类的书写, 文件操作的一些内容, 好久不写还是遇到一些麻烦的, 这里做一些记录。
    源代码如下:

    #coding:utf-8
    
    '''
    Created on 2016-3-21
    @attention: this file is used to compute the average of the data in the text file
    @author: ThinkPad User
    '''
    
    import os
    
    class Files:
        # 记录文件路径
        __path = ''
    
        # 设置文件路径
        def __init__(self, path):
            self.__path = path
    
        # 载入文件数据, 并计算他们的平均值
        def loadData(self):
            if os.path.isfile(self.__path):
                fp = open(self.__path, "r")
                sum = 0
                total_num = 0
                while True:
                    data = fp.readline()
                    if data:
                        total_num += 1
                        sum += int(data)
                    else:
                        break
                fp.close()     
                aver = sum / total_num
                print aver       
    
    
    if __name__ == '__main__':
        path = "E:\\system dir\\desktop\\test_save_tiff.txt"
        f = Files(path)
        f.loadData()

    参考资料
    1.怎么解决python “Non-ASCII character”错误
    简单来说, 就是在开始位置设置utf-8编码格式: #coding:utf-8
    2.TypeError: unbound method loadData() must be called with Files instance as first argument (got nothing instead)
    后来研究发现, python的类也需要初始化, 当没有输入参数的时候, 括号还是不能省略的, 这里就是将 Files() 写成 Files 的后果
    3.Python int与string之间的转化
    简单来讲, 我们使用readline 读入的数据都是string类型的, 需要转化为int类型才能进行数据统计
    4.python类的定义
    5.python的文件操作
    6.用python读取文本文件,对读出的每一行进行操作,这个怎么写?

    展开全文
  • 主要介绍了Python实现Mysql数据统计的实例代码,给大家介绍了Python数据分析numpy统计函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 使用python进行常规统计数据分析、并进行可视化处理。
  • python统计数据指标的常见方法

    千次阅读 2019-04-15 20:34:39
    文章目录实验环境读取csv文件删除数据中我们不需要的列(假设我不需要...在对数据进行挖掘之前,我们得到的数据往往是不太理想的,数据缺失值太严重导致统计数据指标不太容易,这篇文章记录下如何在含有缺失值的情况...

    在对数据进行挖掘之前,我们得到的数据往往是不太理想的,数据缺失值太严重导致统计数据指标不太容易,这篇文章记录下如何在含有缺失值的情况下统计出我想要的一些数据

    实验环境

    • ubuntu 18.04
    • python 3.6
    • numpy scipy pandas
    • 随意一个csv文件(当然是要有数据的,我的csv部分数据如下)
    • 每个py文件都导入了以下三个依赖
    import numpy as np
    import pandas as pd
    from scipy import stats
    

    读取csv文件

    读取csv文件,并在函数中打印出读取的结果,最后返回一个DataFrame对象

    def readcsv(filepath):
        """
        读取csv文件
        :param filpath: 文件路径
        """
        df = pd.read_csv(filepath)
    
        print(df)
        return df
    
    filepath = 'santander-customer-satisfaction/test.csv'
    readcsv(filepath)
    

    我的运行结果结果如下:

    删除数据中我们不需要的列(假设我不需要ID的属性)

    def dropProperty(df, drop_properties):
        """
        传入一个数据表
        :param df: dataFrame对象
        :param drop_properties: 想要删除的属性集
        :return 返回一个删掉了一个或多个属性的df对象,不影响传入的对象
        """
      #axis=0代表删除相应的行,axis=1代表删除相应的列
        df = df.drop(drop_properties, axis=1)
        return df
    

    简单测试

    filepath = 'santander-customer-satisfaction/test.csv'
    df = readcsv(filepath)
    print('原始数据的前三行:')
    print(df.head(3))
    df = dropProperty(df, ['ID'])
    print('--'*20)
    print('删掉了ID属性列的结果:')
    print(df.head(3))
    

    测试的结果:

    统计某一列或多列数据有多少种不同的值

    def uniqueCount(df, start, end):
        """
        统计一列或者多列有多少种不同的值
        :param df: dataframe对象
        :param start 开始统计的第(start+1)列
        :param end 最后统计的一列(第end列)
        :return:
        """
        if end <= start:
            return None
    # 冒号是一个切片的意思
        diffCount = df.iloc[:, start:end].apply(lambda x: len(x.unique()))
        return diffCount
    

    简单测试

    filepath = 'santander-customer-satisfaction/test.csv'
    df = readcsv(filepath)
    result = uniqueCount(df, 0, 3)
    print('第一列到第三列不同的数值各有:')
    print(list(result))
    print('即:')
    print(result)
    

    测试结果:

    统计某一列有多少个等于某个值(测试我这里统计第二列[var3]等于32的值的个数)

    def countValue(df, col_start, col_end, value):
        """
        统计第col+1列中等于value的数量
        :param df: dataframe对象
        :param col_start: 开始列数(从零开始)
        :param col_end: 结束列数
        :param value: 等于的某个值
        :return: 个数(如果是多个列,那么返回一个序列)
        """
        if col_start >= col_end:
            return None
        else:
            count = df.iloc[:, col_start:col_end].apply(lambda x: np.sum(x == 0))
            return count
    

    简单测试

    filepath = 'santander-customer-satisfaction/test.csv'
    df = readcsv(filepath)
    count = countValue(df, 1, 2, 32)
    print(count)
    

    测试结果

    求取去除缺失值的均值

    def meanValue(df, col_start, col_end, miss_set):
        """
        求取各列去除了缺失值的均值
        :param df:dataframe对象
        :param col_start: 开始列
        :param col_end: 结束列
        :param miss_set: 缺失值的集合
        :return: 返回各个列的均值
        """
        if col_start >= col_end:
            return None
        else:
            # ~ 代表取反操作,不属于miss_set里面的值的就属于正常的情况
            # 对正常的值进行mean()操作就是去除了缺失值的均值
            mean = df.iloc[:, col_start:col_end].apply(lambda x: np.mean(x[~np.isin(x, miss_set)]))
            return mean
    

    简单测试

    filepath = 'santander-customer-satisfaction/test.csv'
    df = readcsv(filepath)
    # 假设32, np.nan和111是属于不正常的值
    mean = meanValue(df, 0, 3, [32, np.nan, 111])
    print('去除了不正常值的均值:')
    print(mean)
    

    测试结果

    关于众数&最大值&最小值&出现频率在前几的数据

    • 统计众数需要借助 scipy的stats中的mode函数即 stats.mode(list)
    • 统计最大值&最小值借助numpy中的max&min
    • 统计出现频率最高的几位使用形如 df.iloc[:, :].value_counts().iloc[0:5]的函数

    如有问题,请指教

    展开全文
  • 统计考勤python程序

    2020-10-12 09:51:48
    从考勤机上用u盘拷出考勤数据,截取某一月的,用程序处理,得到每位员工的考勤记录excel表,可用于单位,公司等应用场景
  • python 统计数据区间分布

    千次阅读 2020-08-15 17:59:50
    '''统计数据分布''' '''载入数据''' relation=np.loadtxt(path, dtype=float, delimiter=" ") total_list=relation '''求取最大值与最小值的差值''' base=math.ceil(max(total_list))-int(min(total_list)...
    def distribution(path):
        '''统计数据分布'''
        '''载入数据'''
        relation=np.loadtxt(path, dtype=float, delimiter=" ")
    
        total_list=relation
        
    
        '''求取最大值与最小值的差值'''
        base=math.ceil(max(total_list))-int(min(total_list))
        
        '''设置分布间隔'''
        countblock=10
        block=base/countblock
        
        mini=int(min(total_list))
        maxi=math.ceil(max(total_list))
        
        
        intervals = {'%f~%f'%(mini+block*x,mini+block*(x+1)):0 for x in range(countblock)}
        for ls in total_list:
            for interval in intervals:
                start,end = tuple(interval.split('~'))
                if float(start)<=ls<=float(end):
                    intervals[interval] +=1
        for i in intervals:
          print(i,intervals[i])
    
        print(intervals[i]/len(total_list))

     

     自由组合 生成迭代序列

    import itertools
    '''自由组合生成迭代序列'''
    loop_val = [range(index-5,index),range(index,index+5)]
    '''*代表解压'''
    ls1 = itertools.product(*loop_val)
    
    

     

    展开全文
  • python分析国家统计数据网站本情况代码和数据
  • Python实现Mysql数据统计

    千次阅读 2018-12-29 17:05:44
    这个python脚本,可以统计mysql中各个数据库各个表的数据条数并且导入到桌面excel文件,可以清楚的知数据库的数据情况,还可以防止在日常操作中误删数据不知情。
  • 主要介绍了Python实现读写sqlite3数据库并将统计数据写入Excel的方法,涉及Python针对sqlite3数据库的读取及Excel文件相关操作技巧,需要的朋友可以参考下
  • 这里使用的数据是某地区影响发生火灾的因素以及火灾情况。 总体思想是创建一个类,在类里面创建处理数据的函数。 import pandas as pd import matplotlib.pyplot as plt import numpy as np from sklearn....
  • 一直以来,数据可视化就是一个处于不断演变之中的概念,其边界在不断地扩大;因而,最好是对其加以宽泛的定义。数据可视化指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及...
  • 利用Python读取CSV文件并统计数据

    万次阅读 2019-04-29 15:02:53
    由于文件大小带有不同的单位GB、MB、KB,在CSV或EXCEL中直接统计也不方便,使用python小脚本可以简单解决以上问题。 代码如下: #coding=utf-8 import csv #import re #拓展:正则表达式 提取字符串中数字 f = ...
  • Python 数据相关性分析

    万次阅读 多人点赞 2018-04-25 15:09:49
    可能是此增彼涨,或者是负相关,也可能是没有关联,那么我们就需要一种能把这种关联性定量的工具来对数据进行分析,从而给我们的决策提供支持,本文即介绍如何使用 Python 进行数据相关性分析。 关键词 python 方差...
  • 上期讲了金融数据的储存,这期讲解利用Python进行金融数据统计分析 下面运行环境没有的,请看第一期内容安装环境 本节重点: 分析HS300股票的市值和PE的统计规律 个股日收益率的统计规律研究 金融数据分析中...
  • Python统计数据的区间分布

    千次阅读 2020-07-28 21:55:58
    通过itertools中的groupby进行统计,区间可以自定义,我定义的是10. from itertools import groupby lst=[] with open(path,'r',encoding='utf-8') as f: lines=f.readlines() for i,line in enumerate(lines)...
  • 下面小编就为大家带来一篇用python实现简单EXCEL数据统计的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Python 统计数据集标签的类别及数目

    千次阅读 2019-04-25 16:01:46
    看了大神统计voc数据集标签框后,针对自己标注数据集,灵活应用,感谢 import re import os import xml.etree.ElementTree as ET class1 = 'answer' class2 = 'hand' class3 = 'write' class4 = 'music' class5 = ...
  • 购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 Python数据分析(统计分析)视频培训课程概述:Python统计分析系列课程以Python爬虫为核心工具,结合其工具包进行统计分析实验。课程内容包括数据科学必备的几种...
  • Step1:基础数据准备(通过爬虫获取到),以下是从第一期03年双色球开奖号到今天的所有数据整理,截止目前一共2549期,balls.txt 文件内容如下 : 备注:想要现成数据的可以给我发邮件哟~ Step2:分析数据特征...
  • python-表格数据统计

    千次阅读 2019-05-02 17:28:11
    分享一个统计excel的关系统计脚本 1.xlwt操作,合并单元格 原表格:,去计算word1,word2,word3之之间的关系 脚本处理后,可获得每个词语相关的词语的次数 源码: import xlrd,re,os,xlwt import ...
  • Python进行Excel数据统计

    千次阅读 2020-04-29 21:04:47
    sheetname) for name in infos: #列表对应项累加 if name in data: for i in range(len(data[name])): data[name][i]+=infos[name][i] else: data[name]=infos[name] print(data) #最终的统计数据 print("张一:",...
  • 基于Python获取疫情统计和新闻数据

    千次阅读 2020-02-09 18:53:23
    本文使用Python语言获取疫情统计数据(来源腾讯新闻),和新闻数据(来源腾讯新闻,丁香园),并写入到SqlServer中,可自行修改写入Excel或者其他文件中 其中获取中国统计数据方式如下 #获取中国每天的汇总统计数据 ...
  • python统计jira缺陷数据

    千次阅读 2019-06-17 20:10:51
    环境:python2.7 1、安装jira库 pip install jira 2、python连接jira服务器 #coding: UTF-8 from jira import JIRA username = raw_input('请输入用户名: ') password = raw_input('输入密码: ') options = ...
  • Python-Office: Python统计Excel里面的数据

    千次阅读 2019-02-22 13:39:46
    统计每个关键字的总数目。 譬如ab 是12+1, cd是13+2, ef是0。 XlsxWriter的安装 pip install XlsxWriter之后,python仍然可能提示找不到XlsxWriter。这个时候可以尝试下面的方法安装: $ git clone ...
  • 利用Python取出excel数据并生成统计

    千次阅读 2019-09-14 22:07:30
    从excel中取出数据,然后生成一个统计图表 借助了Python的第三方模块xlrd和pyecharts xlrd Python中用来读取excel数据的模块 安装pip install xlrd xlrd文档 pyecharts Echarts 是一个由百度开源的数据可视化,...
  • movement=[] for j in range(len(movement)): ln_movement.append(math.log(movement[j]))###计算对数值 mt=DataFrame(ln_movement,index=range(1,631),columns=["movement"]) 建立 mt.describe()###描述统计 运行...
  • Python爬虫简单统计网页数据

    千次阅读 2019-06-01 10:44:02
    统计数据 代码中有详细注释,细节不再赘述 """ topic:爬取豆瓣电影数据,做一下简单分析 author:小灵子 date:2019-5-31 """ import re, requests """https://movie.douban.com/j/chart/top_l...
  • Python数据分析之pandas统计分析

    万次阅读 多人点赞 2017-07-27 11:03:58
    pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和、均值、最小值、最大值等,我们来具体看看这些函数:1、随机生成三组数据import numpy as np import pandas as pdnp.random.seed(1234) d1 = pd....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 241,872
精华内容 96,748
关键字:

统计数据的python

python 订阅