首页 > 其他分享 >【5.0】Pandas描述性统计

【5.0】Pandas描述性统计

时间:2023-09-24 16:56:37浏览次数:52  
标签:5.0 Rating 23 df Series Age 描述性 pd Pandas

【一】Python Pandas描述性统计

  • 描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。
  • Pandas 库正是对描述统计学知识完美应用的体现,可以说如果没有“描述统计学”作为理论基奠,那么 Pandas 是否存在犹未可知。下列表格对 Pandas 常用的统计学函数做了简单的总结:
函数名称 描述说明
count() 统计某个非空值的数量。
sum() 求和
mean() 求均值
median() 求中位数
mode() 求众数
std() 求标准差
min() 求最小值
max() 求最大值
abs() 求绝对值
prod() 求所有数值的乘积。
cumsum() 计算累计和,axis=0,按照行累加;axis=1,按照列累加。
cumprod() 计算累计积,axis=0,按照行累积;axis=1,按照列累积。
corr() 计算数列或变量之间的相关系数,取值-1到1,值越大表示关联性越强。
  • 从描述统计学角度出发,我们可以对 DataFrame 结构执行聚合计算等其他操作,比如 sum() 求和、mean()求均值等方法。

  • 在 DataFrame 中,使用聚合类方法时需要指定轴(axis)参数。下面介绍两种传参方式:

    • 对行操作,默认使用 axis=0 或者使用 “index”;
    • 对列操作,默认使用 axis=1 或者使用 “columns”。

axis轴示意图

  • 从图 1 可以看出,axis=0 表示按垂直方向进行计算,而 axis=1 则表示按水平方向。
  • 下面让我们创建一个 DataFrame,使用它对本节的内容进行演示。

【二】创建一个 DataFrame 结构

  • 创建一个 DataFrame 结构,如下所示:
import pandas as pd

# 创建字典型series结构
d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)
print(df)
   Name  Age  Rating
0    小明   25    4.23
1    小亮   26    3.24
2    小红   25    3.98
3    小华   23    2.56
4    老赵   30    3.20
5    小曹   29    4.60
6    小陈   23    3.80
7    老李   34    3.78
8    老王   40    2.98
9    小冯   30    4.80
10   小何   51    4.10
11   老张   46    3.65

【三】sum()求和

【1】axis=0

  • 在默认情况下,返回 axis=0 的所有值的和。示例如下:
import pandas as pd

# 创建字典型series结构
d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)
# 默认axis=0或者使用sum("index")
print(df.sum())
Name      小明小亮小红小华老赵小曹小陈老李老王小冯小何老张
Age                            382
Rating                       44.92
dtype: object
  • 注意
    • sum() 和 cumsum() 函数可以同时处理数字和字符串数据。
    • 虽然字符聚合通常不被使用,但使用这两个函数并不会抛出异常;
    • 而对于 abs()、cumprod() 函数则会抛出异常,因为它们无法操作字符串数据。

【2】axis=1

  • 下面再看一下 axis=1 的情况,如下所示
import pandas as pd

d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)
# 也可使用sum("columns")或sum(1)
# 仅对 'Age' 和 'Rating' 列求和
sum_df = df[['Age', 'Rating']].sum(axis=1)
print(sum_df)
0     29.23
1     29.24
2     28.98
3     25.56
4     33.20
5     33.60
6     26.80
7     37.78
8     42.98
9     34.80
10    55.10
11    49.65
dtype: float64

【四】mean()求均值

import pandas as pd

d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)

# 仅计算 'Age' 和 'Rating' 列的均值
mean_df = df[['Age', 'Rating']].mean()

print(mean_df)
Age       31.833333
Rating     3.743333
dtype: float64

【五】std()求标准差

  • 返回数值列的标准差
import pandas as pd

d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 59, 19, 23, 44, 40, 30, 51, 54]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)
std_df = df[['Age', 'Rating']].std()
print(std_df)
Age       13.976983
Rating     0.661628
dtype: float64
  • 标准差是方差的算术平方根,它能反映一个数据集的离散程度。
  • 注意,平均数相同的两组数据,标准差未必相同。

【六】数据汇总描述

  • describe() 函数显示与 DataFrame 数据列相关的统计信息摘要。
import pandas as pd

d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
# 创建DataFrame对象
df = pd.DataFrame(d)
# 求出数据的所有描述信息
print(df.describe())
             Age     Rating
count  12.000000  12.000000
mean   31.833333   3.743333
std     9.232682   0.661628
min    23.000000   2.560000
25%    25.000000   3.230000
50%    29.500000   3.790000
75%    35.500000   4.132500
max    51.000000   4.800000
  • describe() 函数输出了平均值、std 和 IQR 值(四分位距)等一系列统计信息。

  • 通过 describe() 提供的include能够筛选字符列或者数字列的摘要信息。

  • include 相关参数值说明如下:

    • object: 表示对字符列进行统计信息描述;

    • number:表示对数字列进行统计信息描述;

    • all:汇总所有列的统计信息。

import pandas as pd

d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 59, 19, 23, 44, 40, 30, 51, 54]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)
print(df.describe(include=["object"]))
       Name
count    12
unique   12
top      小明
freq      1
  • 最后使用all参数,看一下输出结果
import pandas as pd

d = {'Name': pd.Series(['小明', '小亮', '小红', '小华', '老赵', '小曹', '小陈',
                        '老李', '老王', '小冯', '小何', '老张']),
     'Age': pd.Series([25, 26, 25, 23, 59, 19, 23, 44, 40, 30, 51, 54]),
     'Rating': pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65])
     }
df = pd.DataFrame(d)
print(df.describe(include="all"))
       Name        Age     Rating
count    12  12.000000  12.000000
unique   12        NaN        NaN
top      小明        NaN        NaN
freq      1        NaN        NaN
mean    NaN  34.916667   3.743333
std     NaN  13.976983   0.661628
min     NaN  19.000000   2.560000
25%     NaN  24.500000   3.230000
50%     NaN  28.000000   3.790000
75%     NaN  45.750000   4.132500
max     NaN  59.000000   4.800000

标签:5.0,Rating,23,df,Series,Age,描述性,pd,Pandas
From: https://www.cnblogs.com/dream-ze/p/17726182.html

相关文章

  • 【4.0】Pandas Panel三维数据结构
    【一】三维数据结构Panel结构也称“面板结构”,它源自于PanelData一词,翻译为“面板数据”。如果您使用的是Pandas0.25以前的版本,那么您需要掌握本节内容,否则,作为了解内容即可。自Pandas0.25版本后,Panel结构已经被废弃。Panel是一个用来承载数据的三维数据结构,它......
  • 【8.0】Pandas和NumPy的比较
    【一】引入我们知道Pandas是在NumPy的基础构建而来因此,熟悉NumPy可以更加有效的帮助我们使用Pandas。NumPy主要用C语言编写因此,在计算还和处理一维或多维数组方面,它要比Python数组快得多。关于NumPy的学习,可以参考《PythonNumPy教程》。【二】创建数组数......
  • python的pandas库:合并数据
    在Pandas中,如果你有两个数据框(DataFrames),且它们的列数和列名都相同,你可以使用concat或merge函数将它们合并。以下是具体步骤:首先,导入Pandas库:importpandasaspd创建两个列数和列名都相同的数据框:df1=pd.DataFrame({'A':['A0','A1','A2','A3'],'B':[�......
  • 已解决pandas无法读取中文文件的问题
    已解决pandas无法读取中文文件的问题文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:pandas无法读取中文文件的问题文件有问题或者环境编码有问题!解决方法data=open(r'dataset......
  • Pycharm 机器学习 pandas应用
    ......
  • pandas学习-基础用法
      导入数据、数据的基本操作¶  导入libraries¶ In [1]:importpandasaspdimportnumpyasnpimportos  导入数据¶ In [2]:file_path=os.path.abspath('data/chipotle.tsv')file_path......
  • pandas学习-函数drop_duplicates的用法
    pandas函数drop_duplicates用于去除DataFrame中的重复行。语法:DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)参数说明:subset:指定要考虑的列名或列名的列表。默认值为None,表示考虑所有列。keep:指定保留哪个重复的行。可选值为'first'(保留第一个出现......
  • Fluent Operator 2.5.0 发布:新增多个插件
    日前,FluentOperator发布了v2.5.0。FluentOperatorv2.5.0新增11个features,其中FluentBit新增支持7个插件,Fluentd新增支持1个插件。此外,对FluentOperator也进行了增强,调整了默认参数,以便适应更多场景,并对helmchart进行了优化,用户可以更方便的进行安装,并修......
  • 【Pandas】groupby连用的count()和size()的区别
    groupby连用的count()和size()的区别count()计算的是value(数值);size()计算的是size(个数)我们有以下表:size()age=df.groupby(by='Nation').size().reset_index()age可以发现,size()计数的是记录的条数,即每个nation对应有多少条count()count=df_try.groupby(by=......
  • 时间序列的重采样和pandas的resample方法介绍
    重采样是时间序列分析中处理时序数据的一项基本技术。它是关于将时间序列数据从一个频率转换到另一个频率,它可以更改数据的时间间隔,通过上采样增加粒度,或通过下采样减少粒度。在本文中,我们将深入研究Pandas中重新采样的关键问题。为什么重采样很重要?时间序列数据到达时通常带有......