精华内容
下载资源
问答
  • 描述性统计分析是关于数据的描述和汇总。它使用两种主要方法:定量方法以数值方式描述和汇总数据。可视化方法通过图表,曲线图,直方图和其他图形来说明...本文将细致讲解如何使用python进行描述性分析的定量分析部...

    描述性统计分析是关于数据的描述和汇总。它使用两种主要方法:定量方法以数值方式描述和汇总数据。

    可视化方法通过图表,曲线图,直方图和其他图形来说明数据。

    一般在数据分析的过程中,拿到数据不会去直接去建模,而是先做描述性分析来对数据有一个大致的把握,很多后续的建模方向也是通过描述性分析来进一步决定的。那么除了在Excel/R中可以去做描述性分析。

    本文将细致讲解如何使用python进行描述性分析的定量分析部分:均值

    中位数

    方差

    标准差

    偏度

    百分位数

    相关性

    至于可视化的部分可以参考我之前讲解pyecharts的文章,当然后面还会介绍echarts以及ggplot2的方法。

    涉及到的python库Python statistics是用于描述性统计信息的内置Python库。如果您的数据集不是太大,或者您不能依赖于导入其他库,则可以使用它。

    NumPy是用于数字计算的第三方库,已针对使用一维和多维数组进行了优化。它的主要类型是称为的数组类型ndarray。该库包含许多用于统计分析的方法。

    SciPy是基于NumPy的用于科学计算的第三方库。与NumPy相比,它提供了其他功能,包括scipy.stats统计分析。Getting started - SciPy.org

    Pandas是基于NumPy的用于数值计算的第三方库。它擅长处理带有Series对象的带标签的一维(1D)数据和带有对象的二维(2D)数据DataFrame。

    Matplotlib是用于数据可视化的第三方库。通常会与NumPy,SciPy和Pandas结合使用

    开始

    首先导入所有的包import math

    import statistics

    import numpy as np

    import scipy.stats

    import pandas as pd

    创建数据

    x和x_with_nan都是list。不同之处在于x_with_nan包含一个nan值。也就是空值(缺失值),这样的数据在分析中十分常见。那么在python里,创建一个nan值可以有以下方法float('nan')

    math.nan

    np.nan

    当然这三种方法创建的空值都是等价的

    但是真的相等吗,两个nan是不相等的,换句话说,是不可以进行比较的,这后面的故事以后再说。

    接着,我们使用numpy和pandas来创建两个一维numpy arrays和pandas series

    均值

    均值的定义啥的,就不说了,R里面直接mean()就可以,而在python,不导入包,怎么计算:

    当然也可以用python的内置统计功能

    但是如果数据中包含nan,那么将返回nan>>> mean_ = statistics.mean(x_with_nan)

    >>> mean_

    nan

    如果使用numpy>>> mean_ = np.mean(y)

    >>> mean_

    8.7

    在上面的示例中,mean()是一个函数,但是您也可以使用相应的方法>>> mean_ = y.mean()

    >>> mean_

    8.7

    如果包含nan,numpy也会返回nan,那么要是想忽略nan,可以使用np.nanmean()>>> np.mean(y_with_nan)

    nan

    >>> np.nanmean(y_with_nan)

    8.7

    pandas也有对应方法,但是,默认情况下,.mean()在Pandas中忽略nan值:mean_ = z.mean()

    mean_

    >>> z_with_nan.mean()

    8.7

    中位数

    比较平均值和中位数,这是检测数据中异常值和不对称性的一种方法。平均值还是中位数对您更有用,取决于特定问题的背景。而不使用包的计算方法:>>> n = len(x)

    >>> if n % 2:

    ...     median_ = sorted(x)[round(0.5*(n-1))]

    ... else:

    ...     x_ord, index = sorted(x), round(0.5 * n)

    ...     median_ = 0.5 * (x_ord[index-1] + x_ord[index])

    ...

    >>> median_

    4

    其他方法>>> median_ = np.median(y)

    >>> median_

    4.0

    >>> np.nanmedian(y_with_nan)

    4.0

    方差

    方差的意义也不过多说明,在Excel中直接用stdev函数,但是怎么在python中计算?记得当初研究生复试就被问到用python不导入包怎么计算方差?>>> n = len(x)

    >>> mean_ = sum(x) / n

    >>> var_ = sum((item - mean_)**2 for item in x) / (n - 1)

    >>> var_

    123.19999999999999

    当然更简单的方法是直接使用函数,不过有nan还是会返回nan>>> var_ = statistics.variance(x)

    >>> var_

    123.2

    >>> statistics.variance(x_with_nan)

    nan

    放在numpy里面就更简单了,可以使用np.var()或者.var()>>> var_ = np.var(y, ddof=1)

    >>> var_

    123.19999999999999

    >>> var_ = y.var(ddof=1)

    >>> var_

    123.19999999999999

    这里ddof就是自由度要设置为1才是无偏的。也就是分母用n-1替换n。如果有nan怎么办?返回nan,但是可以用np.nanvar()跳过nan,不过ddof依旧要设置为1>>> np.var(y_with_nan, ddof=1)

    nan

    >>> y_with_nan.var(ddof=1)

    nan

    >>> np.nanvar(y_with_nan, ddof=1)

    123.19999999999999

    标准差

    有了方差,标准差就很好计算了#直接计算

    >>> std_ = var_ ** 0.5

    >>> std_

    11.099549540409285

    #使用内置包

    >>> std_ = statistics.stdev(x)

    >>> std_

    11.099549540409287

    numpy中也很好计算>>> np.std(y, ddof=1)

    11.099549540409285

    >>> y.std(ddof=1)

    11.099549540409285

    >>> np.std(y_with_nan, ddof=1)

    nan

    >>> y_with_nan.std(ddof=1)

    nan

    >>> np.nanstd(y_with_nan, ddof=1) #跳过nan,ddof还是要是1哦

    11.099549540409285

    偏度(skew)

    偏度(skewness)也称为偏态、偏态系数,是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征。偏度是利用3阶矩定义的,偏度的计算公式为:

    我们之前研究的数据都是比较对称的数据,但是上图就给出了不对称的数据集,第一组用绿点表示,第二组用白点表示。通常,负偏度值表示左侧有一个占主导地位的尾巴,可以在第一个集合中看到。正偏度值对应于右侧较长或的尾巴,可以在第二组中看到。如果偏度接近0(例如,介于-0.5和0.5之间),则该数据集被认为是非常对称的。

    那么不依赖第三包,怎么计算偏度。可以先计算完数据集的大小n,样本均值mean和标准差std后用公式计算>>> x = [8.0, 1, 2.5, 4, 28.0]

    >>> n = len(x)

    >>> mean_ = sum(x) / n

    >>> var_ = sum((item - mean_)**2 for item in x) / (n - 1)

    >>> std_ = var_ ** 0.5

    >>> skew_ = (sum((item - mean_)**3 for item in x)

    ...          * n / ((n - 1) * (n - 2) * std_**3))

    >>> skew_

    1.9470432273905929

    可以看出偏度为正,因此x尾巴在右侧。

    也可以用第三方包计算>>> y, y_with_nan = np.array(x), np.array(x_with_nan)

    >>> scipy.stats.skew(y, bias=False)

    1.9470432273905927

    >>> scipy.stats.skew(y_with_nan, bias=False)

    nan

    >>> z, z_with_nan = pd.Series(x), pd.Series(x_with_nan)

    >>> z.skew()

    1.9470432273905924

    >>> z_with_nan.skew()

    1.9470432273905924

    百分位数(Percentiles)

    如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数。每个数据集都有三个四分位数,这是将数据集分为四个部分的百分位数:第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。

    第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。

    第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

    第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range,IQR)。

    那么在python里面怎么计算分位数呢。可以使用statistics.quantiles()>>> x = [-5.0, -1.1, 0.1, 2.0, 8.0, 12.8, 21.0, 25.8, 41.0]

    >>> statistics.quantiles(x, n=2)

    [8.0]

    >>> statistics.quantiles(x, n=4, method='inclusive')

    [0.1, 8.0, 21.0]

    可以看到第一行中,8就是x的中位数,而第二个例子中,0.1和21是样本的25%和75%分位数。也可以使用第三方包numpy计算>>> np.percentile(y, [25, 50, 75])

    array([ 0.1,  8. , 21. ])

    >>> np.median(y)

    8.0

    #跳过nan

    >>> y_with_nan = np.insert(y, 2, np.nan)

    >>> y_with_nan

    array([-5. , -1.1,  nan,  0.1,  2. ,  8. , 12.8, 21. , 25.8, 41. ])

    >>> np.nanpercentile(y_with_nan, [25, 50, 75])

    array([ 0.1,  8. , 21. ])

    pandas也可以使用.quantile()计算,需要提供分位数值作为参数。该值可以是0到1之间的数字或数字序列。>>> z, z_with_nan = pd.Series(y), pd.Series(y_with_nan)

    >>> z.quantile(0.05)

    -3.44

    >>> z.quantile(0.95)

    34.919999999999995

    >>> z.quantile([0.25, 0.5, 0.75])

    0.25     0.1

    0.50     8.0

    0.75    21.0

    dtype: float64

    >>> z_with_nan.quantile([0.25, 0.5, 0.75])

    0.25     0.1

    0.50     8.0

    0.75    21.0

    dtype: float64

    范围(Ranges)

    数据的范围是数据集中最大和最小元素之间的差。可以通过函数np.ptp()获得:>>> np.ptp(y)

    27.0

    >>> np.ptp(z)

    27.0

    >>> np.ptp(y_with_nan)

    nan

    >>> np.ptp(z_with_nan)

    27.0

    描述性统计摘要

    在SciPy和Pandas提供过单个函数或方法调用快速获取描述性统计信息。>>> result = scipy.stats.describe(y, ddof=1, bias=False)

    >>> result

    DescribeResult(nobs=9, minmax=(-5.0, 41.0), mean=11.622222222222222, variance=228.75194444444446, skewness=0.9249043136685094, kurtosis=0.14770623629658886)

    describe() 返回包含以下信息:nobs:数据集中的观测值或元素数

    minmax:数据的最大和最小值

    mean:数据集的平均值

    variance:数据集的方差

    skewness:数据集的偏度

    kurtosis:数据集的峰度>>> result.nobs

    9

    >>> result.minmax[0]  # Min

    -5.0

    >>> result.minmax[1]  # Max

    41.0

    >>> result.mean

    11.622222222222222

    >>> result.variance

    228.75194444444446

    >>> result.skewness

    0.9249043136685094

    >>> result.kurtosis

    0.14770623629658886

    pandas也有类似的函数.describe():>>> result = z.describe()

    >>> result

    count     9.000000 #数据集中的元素数

    mean     11.622222 #数据集的平均值

    std      15.124548 #数据集的标准差

    min      -5.000000

    25%       0.100000 #数据集的四分位数

    50%       8.000000

    75%      21.000000

    max      41.000000

    dtype: float64

    相关性

    相关行的统计学意义也不在过多说明,但是要注意,相关性只是能从数据上判断是否有关系,不能够说明因果关系!!!

    度量相关性主要使用协方差和相关性系数:

    那么我们先重新创建数据>>> x = list(range(-10, 11))

    >>> y = [0, 2, 2, 2, 2, 3, 3, 6, 7, 4, 7, 6, 6, 9, 4, 5, 5, 10, 11, 12, 14]

    >>> x_, y_ = np.array(x), np.array(y)

    >>> x__, y__ = pd.Series(x_), pd.Series(y_)

    计算协方差>>> n = len(x)

    >>> mean_x, mean_y = sum(x) / n, sum(y) / n

    >>> cov_xy = (sum((x[k] - mean_x) * (y[k] - mean_y) for k in range(n))

    ...           / (n - 1))

    >>> cov_xy

    19.95

    numpyh和pandas都有可以返回协方差矩阵函数cov()# numpy

    >>> cov_matrix = np.cov(x_, y_)

    >>> cov_matrix

    array([[38.5       , 19.95      ],

    [19.95      , 13.91428571]])

    # pandas

    >>> cov_xy = x__.cov(y__)

    >>> cov_xy

    19.95

    >>> cov_xy = y__.cov(x__)

    >>> cov_xy

    19.95

    计算相关系数

    我们这里说的均是pearson相关系数。Pearson相关系数(Pearson CorrelationCoefficient)是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系。计算公式为

    展开全文
  • http://patsy.readthedocs.io/en/latest/overview.htmlpasty功能:线性分析里因素分析(方差分析)and Patsy takes care of building appropriate matrices. Furthermore, it:Allows data transformations to be ...

    http://patsy.readthedocs.io/en/latest/overview.html

    pasty功能:线性分析里因素分析(方差分析)

    and Patsy takes care of building appropriate matrices. Furthermore, it:

    Allows data transformations to be specified using arbitrary Python code: instead of x, we could have written log(x), (x > 0), or even log(x) if x > 1e-5 else log(1e-5),

    Provides a range of convenient options for coding categorical variables, including automatic detection and removal of redundancies,

    Knows how to apply ‘the same’ transformation used on original data to new data, even for tricky transformations like centering or standardization (critical if you want to use your model to make predictions),

    Has an incremental mode to handle data sets which are too large to fit into memory at one time,

    Provides a language for symbolic, human-readable specification of linear constraint matrices,

    Has a thorough test suite (>97% statement coverage) and solid underlying theory, allowing it to correctly handle corner cases that even R gets wrong, and

    Features a simple API for integration into statistical packages.

    pasty不能做的模型分析,只是提供描述性统计的高级接口

    What Patsy won’t do is, well, statistics — it just lets you describe models in general terms. It doesn’t know or care whether you ultimately want to do linear regression, time-series analysis, or fit a forest of decision trees, and it certainly won’t do any of those things for you — it just gives a high-level language for describing which factors you want your underlying model to take into account. It’s not suitable for implementing arbitrary non-linear models from scratch; for that, you’ll be better off with something like Theano, SymPy, or just plain Python. But if you’re using a statistical package that requires you to provide a raw model matrix, then you can use Patsy to painlessly construct that model matrix; and if you’re the author of a statistics package, then I hope you’ll consider integrating Patsy as part of your front-end.

    Patsy’s goal is to become the standard high-level interface to describing statistical models in Python, regardless of what particular model or library is being used underneath.

    pasty函数可以自定义

    I()让+表示算术模式加号

    Arithmetic transformations are also possible, but you’ll need to “protect” them by wrapping them in I(), so that Patsy knows that you really do want + to mean addition:

    In [23]: dmatrix("I(x1 + x2)", data) # compare to "x1 + x2"

    Out[23]: DesignMatrix with shape (8, 2)

    Intercept I(x1 + x2)

    1 1.66083

    1 0.81076

    1 1.12278

    1 3.69517

    1 2.62860

    1 -0.85560

    1 1.39395

    1 0.18232

    Terms:

    'Intercept' (column 0)

    'I(x1 + x2)' (column 1)

    In [24]: dmatrix("I(x1 + x2)", {"x1": np.array([1, 2, 3]), "x2": np.array([4, 5, 6])})

    Out[24]: DesignMatrix with shape (3, 2)

    Intercept I(x1 + x2)

    1 5

    1 7

    1 9

    Terms:

    'Intercept' (column 0)

    'I(x1 + x2)' (column 1)

    In [25]: dmatrix("I(x1 + x2)", {"x1": [1, 2, 3], "x2": [4, 5, 6]})

    Out[25]: DesignMatrix with shape (6, 2)

    Intercept I(x1 + x2)

    1 1

    1 2

    1 3

    1 4

    1 5

    1 6

    Terms:

    'Intercept' (column 0)

    'I(x1 + x2)' (column 1)

    # ---------------------------------------------------------------

    def anova_statsmodels():

    ''' do the ANOVA with a function '''

    # Get the data

    data = pd.read_csv('galton.csv')

    #sex是性别,属于分类变量

    anova_results = anova_lm(ols('height~C(sex)', data).fit())

    print('\nANOVA with "statsmodels" ------------------------------')

    print(anova_results)

    return anova_results['F'][0]

    展开全文
  • #导入import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.datasets import load_irisimport warnings#设置seaborn绘图样式sns.set(style=“darkgrid”)...

    #导入包

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    import seaborn as sns

    from sklearn.datasets import load_iris

    import warnings

    #设置seaborn绘图的样式

    sns.set(style=“darkgrid”)

    plt.rcParams[“font.family”]=“SimHei”

    plt.rcParams[“axes.unicode_minus”]=False

    #忽视警告信息

    warnings.filterwarnings(“ignore”)

    #加载鸢尾花数据集

    iris=load_iris()

    #display(iris)

    #iris.data:鸢尾花数据集

    #iris.target:每朵鸢尾花对应的类别。(取值为0,1,2)

    print(iris.data[:10],iris.target[:10])

    #iris.feature_names:特征列的名称。

    #iris.target_name:鸢尾花类别的名称。

    print(iris.feature_names,iris.target_names)

    #将鸢尾花数据与对应的类型合并,组合成完整的记录。

    data=np.concatenate([iris.data,iris.target.reshape(-1,1)],axis=1)

    print(type(data))

    print(data[:10])

    print(data.dtype)

    data=pd.DataFrame(data,

    columns=[“sepal_length”,“sepal_width”,“petal_length”,“petal_width”,“type”])

    print(type(data))

    data.sample(10)

    print(data.head())

    data.info()

    #分析

    #计算鸢尾花数据中,每个类别出现的频数

    frequency=data[“type”].value_counts()

    print(frequency)

    print(type(frequency))

    #计算每个类别出现的频率

    percentage=frequency*100/len(data)

    print(percentage)

    frequency.plot(kind=“bar”)

    #计算花萼长度的均值

    mean=data[“sepal_length”].mean()

    #计算花萼长度的中位数

    median=data[“sepal_length”].median()

    #计算花萼长度的众数

    s=data[“sepal_length”].mode()

    #注意,model方法返回的是series类型

    print(type(s))

    print(s.info())

    mode=s.iloc[0]

    print(mean,median,mode)

    from scipy import stats

    stats.mode(data[“sepal_length”]).mode

    #绘制数据的分布(直方图+密度图)

    sns.distplot(data[“sepal_length”])

    plt.axvline(mean,ls="-",color=“r”,label=“均值”)

    plt.axvline(median,ls="-",color=“g”,label=“中值”)

    plt.axvline(mean,ls="-",color=“indigo”,label=“众数”)

    plt.legend()

    x=np.arange(10,19)

    n=len(x)

    #计算四分位的索引(index)

    q1_index=(n-1)*0.25

    q2_index=(n-1)*0.5

    q3_index=(n-1)*0.75

    print(q1_index,q2_index,q3_index)

    #将index转化成整数类型

    index=np.array([q1_index,q2_index,q3_index]).astype(np.int32)

    print(x[index])

    plt.figure(figsize=(15,4))

    plt.xticks(x)

    plt.plot(x,np.zeros(len(x)),ls="",marker=“D”,ms=15,label=“元素值”)

    plt.plot(x[index],np.zeros(len(index)),ls="",marker=“X”,ms=15,label=“四分位值”)

    plt.legend()

    x=np.arange(10,20)

    n=len(x)

    q1_index=(n-1)*0.25

    q2_index=(n-1)*0.5

    q3_index=(n-1)*0.75

    print(q1_index,q2_index,q3_index)

    index=np.array([q1_index,q2_index,q3_index])

    #计算左边元素的值

    left=np.floor(index).astype(np.int32)

    #计算右边元素的值

    right=np.ceil(index).astype(np.int32)

    #获取index的小数部分与整数部分

    weight,_=np.modf(index)

    #根据左右两边的整数,加权计算四分位数的值,权重与距离成反比

    q=x[left] * (1-weight) + x[right] * weight

    print(q)

    plt.figure(figsize=(15,4))

    plt.xticks(x)

    plt.plot(x,np.zeros(len(x)),ls="",marker=“D”,ms=15,label=“元素值”)

    plt.plot(q,np.zeros(len(index)),ls="",marker=“X”,ms=15,label=“四分位值”)

    for v in q:

    plt.text(v,0.01,s=v,fontsize=15)

    plt.legend()

    #numpy

    x = [1, 3, 10, 15, 18, 20, 23, 25]

    #quantile与percentile都可以就算分位数,不同的是,quantile方法

    #q(要计算的分位数)的取值范围为【0,1】,而percentile方法,q的

    #取值范围为【0,100】

    print(np.quantile(x,q=[0.25,0.5,0.75]))

    print(np.percentile(x,q=[25,50,75]))

    #pandas

    x = [1, 3, 10, 15, 18, 20, 23, 25]

    s=pd.Series(x)

    print(s.describe())

    s.describe(percentiles=[0.25,0.9])

    #计算极差

    sub=data[“sepal_length”].max()-data[“sepal_length”].min()

    #计算方差

    var=data[“sepal_length”].var()

    #计算标准差

    std=data[“sepal_length”].std()

    print(sub, var, std)

    plt.figure(figsize=(15,4))

    plt.ylim(-0.5,1.5)

    #print(data[“petal_width”])

    plt.plot(data[“petal_length”], np.zeros(len(data)), ls="", marker=“o”,ms=10,color=“g”,label=“花瓣长度”)

    plt.plot(data[“petal_width”], np.ones(len(data)), ls="", marker=“o”,ms=10,color=“r”,label=“花瓣宽度”)

    plt.axvline(data[“petal_length”].mean(),ls="–",color=“g”,label=“花瓣长度均值”)

    plt.axvline(data[“petal_width”].mean(),ls="–",color=“r”,label=“花瓣长度均值”)

    plt.legend()

    #构造左偏分布数据

    t1=np.random.randint(1,11,size=100)

    t2=np.random.randint(11,21,size=500)

    t3=np.concatenate([t1,t2])

    left_skew=pd.Series(t3)

    #构造右偏分布数据

    t1=np.random.randint(1,11,size=500)

    t2=np.random.randint(11,21,size=100)

    t3=np.concatenate([t1,t2])

    right_skew=pd.Series(t3)

    #计算偏度

    print(left_skew.skew(),right_skew.skew())

    #绘制核密度图 =概率密度图

    sns.kdeplot(left_skew,shade=True,label=“左偏”)

    sns.kdeplot(right_skew,shade=True,label=“右偏”)

    plt.legend()

    #标准正态分布

    standard_normal=pd.Series(np.random.normal(0,1,size=100000))

    print(“标准正态分布峰度:”,standard_normal.kurt(), “标准差:”,standard_normal.std())

    print(“花萼宽度峰度:”,data[“sepal_width”].kurt(),“标准差:”,data[“sepal_width”].std())

    print(“花瓣长度峰度:”,data[“petal_length”].kurt(),“标准差:”,data[“petal_length”].std())

    sns.kdeplot(standard_normal,label=“标准正态分布”)

    sns.kdeplot(data[“sepal_width”],label=“花萼宽度”)

    sns.kdeplot(data[“petal_length”],label=“花瓣长度”)

    展开全文
  • pandas的描述性统计方法和numpy方法相比,内建了处理缺失值功能,很好地针对于每一个我们需要处理数据。一:一些基本方法1.归约方法sum方法返回一个包含列上加和series。 若传入axis = 'columns'或axis = ...

    目录

    pandas对象有一个常用数学,统计学方法的集合。大部分属于归纳或汇总统计。这些方法从dataframe的行或列中抽取一个series或一系列的值。

    pandas的描述性统计的方法和numpy的方法相比,内建了处理缺失值的功能,很好地针对于每一个我们需要处理的数据。

    一:一些基本方法

    1.归约方法

    sum方法返回一个包含列上加和的series。 若传入axis = 'columns'或axis = 1,将会把一行上各个列的值相加。会把缺失值自动排除,可以通过skipna = false设置禁用skipna来实现不排除缺失值。

    可用idxmin和idxmax,返回间接统计信息,比如最小值或最大值的索引值。

    2.积累型方法

    有些方法是积累型方法,比如cumsum是返回积累值。

    3.其他方法

    还有一些不是归约方法和积累型的方法,比如describe方法,一次性产生多个汇总统计值。

    二:相关性和协方差

    一些汇总统计,是由多个参数计算出的。与之相关的是一个附加库,是pandas-datareader,可以从yahoo!finance上获取股价和交易量的二维dataframe数据。

    用pct_change和tail获得股价的百分比。

    函数corr方法是计算两个对象重叠的,非na的,按索引对其的值的相关性。相应地,cov计算的是协方差。

    用dataframe的corrwith方法,可以计算出dataframe中的行或列与另一个序列或dataframe的相关性。这个方法是一个归约方法,传入axis = 'columns'或者axis = 1则会对逐行进行操作。

    三:唯一值,计数和成员属性

    有些方法可以从数据中提取信息,如下:

    函数unique会给出唯一值,可以用uniques.sort()进行排序。

    函数value_counts会计算数据中包含值的个数,默认会按照数量降序排列,可以通过设置sort = false不进行降序排列。

    函数isin可以检查数据成员是否和参数匹配,并进行过滤,即去除未匹配的数据。

    而与之相关的index.get_indexer方法,可以提供一个索引数组,将可能非唯一数组转换为另一个唯一值数组。

    函数pandas.value_counts可以计算dataframe多个相关列的直方图,得到的直方图的行标签是所有列出现的不同值,数值是不同值在每个列中出现的次数。

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • pandas的描述性统计方法和NumPy方法相比,内建了处理缺失值功能,很好地针对于每一个我们需要处理数据。一:一些基本方法1.归约方法sum方法返回一个包含列上加和Series。 若传入axis = 'columns'或axis = ...
  • 一、数据的描述性统计对数据的描述性统计主要是指对结构化数据描述分析,可从三个维度进行分析:数据集中趋势、数据离散程度和数据分布形态。描述数据集中趋势指标有:众数、中位数、平均数(包含算数平均...
  • 继续前一篇文章学习一、Series基本功能二、Dataframe基本功能三、Pandas描述性统计四、Pandas重建索引五、Dataframe迭代六、Pandas排序七、Pandas索引和选择数据一、Series基本功能import numpy as npimport ...
  • 数据挖掘:半自动化地分析大型数据库并从中找出有用模式过程。和机器学习或者统计分析一样试图从数据中寻找规则或模式,区别在于它处理大量存储在银盘上数据,也就是从数据库中发现知识。数据挖掘第一步一般...
  • pandas:python数据分析包(一)本文只是记录了理论知识,没有操作和实验;更加具体访问官方文档(https://pandas.pydata.org/docs/user_guide/index.html)统计学与数据挖掘:统计学:认识客观现象总体数量特征和数量...
  • 分析目标:将波士顿房价数据集进行描述性数据分析、预测性数据分析(主要用了回归分析),可用于预测房价。数据集介绍:卡内基梅隆大学收集,StatLib库,1978年,涵盖了麻省波士顿506个不同郊区房屋数据。一共...
  • 葡萄酒质量数据集   葡萄酒质量数据集包括两个文件——红...输入变量是葡萄酒物理化学成分和特性,包括非挥发酸、挥发酸、柠檬酸、残余糖分、氯化物、游离二氧化硫、总二氧化硫、密度、pH值、硫酸盐和酒精含...
  • 一、数据的描述性统计对数据的描述性统计主要是指对结构化数据描述分析,可从三个维度进行分析:数据集中趋势、数据离散程度和数据分布形态。描述数据集中趋势指标有:众数、中位数、平均数(包含算数平均...
  • 在数据分析统计场景里,常用方法除了描述性统计方法外,还有推断统计方法,如果再从工作性质上来划分,推断统计包含了参数估计和假设验证这两方面内容。而推断统计用到了很多概率统计方法,所以本小节在介绍...
  • #导入 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.datasets import load_iris import warnings #设置seaborn绘图样式 sns.set(style=...
  • 汇总和计算描述性统计 pandas有很多数学和统计方法。大部分可以归类为降维或汇总统计,这些方法是用来从series中提取单个值(比如sum或mean) 相关性和协方差(Correlation and Covariance) 分析 Yahoo! Fiannce...
  • 在计算机科学中,数据结构是一门进阶课程,概念抽象,难度较大...第2章到第4章对抽象数据类型、数据结构、复杂度分析、数组和线性链表结构进行了详细介绍,第5章和第6章重点介绍了面向对象设计相关知识、第5章...
  • 今天我们利用波士顿房价进行简单分析,快速熟悉数据挖掘和分析的一般流程。 1.导入数据。...4.接着用.describe()函数进行数据的描述性分析,查看每一列(也就是每一个特征的数据)的条数、平均值、最大...
  • 分析目标:将波士顿房价数据集进行描述性数据分析、预测性数据分析(主要用了回归分析),可用于预测房价。数据集介绍:卡内基梅隆大学收集,StatLib库,1978年,涵盖了麻省波士顿506个不同郊区房屋数据。一共...
  • python数据统计分析

    2020-07-17 11:12:37
    目录 1. 常用函数库 2. 小样本数据正态检验 3. 检验样本是否服务某一分布 4.方差齐检验 5. 图形描述相关性 ...6. 正态资料相关分析 ...7. 非正态资料相关分析 ... scipy包中stats模块和statsmodels是py...
  • Python统计分析

    2020-07-08 21:10:32
    描述性统计偏度和峰度累计值假设检验和区间估计示例1假设检验置信区间示例2假设检验置信区间描述性统计#导入相关的包 importpandasaspd importnumpyas...
  • 确定决策过程编写代码进行求解0-1 背包问题延伸最后一块石头重量问题描述示例问题分析转换成动态规划问题写出状态转移方程通用动态规划公式理解总结与升华 前言 提起动态规划,大部分人最先想到就是背包...
  • 目录数据格式转换查看格式修改格式将年份转化为整数格式,异常值查找将时长转化为整数格式排序默认排序按照投票人数进行排序按照年代进行排序多个值进行排序,先按照评分,再按照投票人数基本统计分析描述性统计:...
  • 介绍Python pandas用于数据操作和分析,旨在让您以更直观方式处理标记或关系数据。基于numpy软件包构建,pandas包括标签,描述性索引,在处理常见数据格式和丢失数据方面特别强大。pandas软件包提供了电子表格...
  • 介绍Python pandas用于数据操作和分析,旨在让您以更直观方式处理标记或关系数据。基于numpy软件包构建,pandas包括标签,描述性索引,在处理常见数据格式和丢失数据方面特别强大。pandas软件包提供了电子表格...
  • 在文本处理中,比如商品...那么Python 里面有计算文本相似度程序吗,恭喜你,不仅有,而且很好很强大。这是从52nlp大神博客里面发现,其实具体处理流程和程序和他基本一致,只要仔细研读他这几篇博...
  • 本质 Essentia是开放源C ++库,用于根据Affero GPL许可发布音频分析和基于音频音乐信息检索。... Essentia在设计时着重于提供音乐描述鲁棒,并在算法计算成本方面进行了优化。 所提供功能,特
  • Python数据处理分析是很强大,本文介绍环境搭建,依赖包的引用等,为后面学习做准备。 statsmodels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索...
  • 在数据分析统计场景里,常用方法除了描述性统计方法外,还有推断统计方法,如果再从工作性质上来划分,推断统计包含了参数估计和假设验证这两方面内容。而推断统计用到了很多概率统计方法,所以本小节在介绍...
  • Numpy:数组和矢量计算对于大部分数据分析工具,作者主要关注如下功能快速矢量化矩阵运算,用于数据规整化和清理,筛选,过滤,格式转换等常用矩阵算法,排序、唯一值和集合运算高效描述性统计和聚合分析数据对准,...
  • python进行数据分析...2.变量变量可以使用短名称(如 x 和 y)或更具描述性的名称(age、carname、total_volume)。Python 变量命名规则:变量名必须以字母或下划线字符开头变量名称不能以数字开头变量名只能包含...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 228
精华内容 91
关键字:

python描述性分析的包

python 订阅