Pandas描述性统计

2021年09月15日 阅读数:2
这篇文章主要向大家介绍Pandas描述性统计,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

有不少方法用来集体计算DataFrame的描述性统计信息和其余相关操做。 其中大多数是sum()mean()等聚合函数,但其中一些,如sumsum(),产生一个相同大小的对象。 通常来讲,这些方法采用轴参数,就像ndarray.{sum,std,...},但轴能够经过名称或整数来指定:python

  • 数据帧(DataFrame) - “index”(axis=0,默认),columns(axis=1)

下面建立一个数据帧(DataFrame),并使用此对象进行演示本章中全部操做。shell

示例数组

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df
Python

执行上面示例代码,获得如下结果 -数据结构

    Age  Name   Rating
0   25   Tom     4.23
1   26   James   3.24
2   25   Ricky   3.98
3   23   Vin     2.56
4   30   Steve   3.20
5   29   Minsu   4.60
6   23   Jack    3.80
7   34   Lee     3.78
8   40   David   2.98
9   30   Gasper  4.80
10  51   Betina  4.10
11  46   Andres  3.65
Shell

sum()方法ide

返回所请求轴的值的总和。 默认状况下,轴为索引(axis=0)。函数

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df.sum()
Python

执行上面示例代码,获得如下结果 -code

Age                                                    382
Name     TomJamesRickyVinSteveMinsuJackLeeDavidGasperBe...
Rating                                               44.92
dtype: object
Shell

每一个单独的列单独添加(附加字符串)。对象

axis=1示例索引

此语法将给出以下所示的输出,参考如下示例代码 -字符串

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df.sum(1)
Python

执行上面示例代码,获得如下结果 -

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
Shell

mean()示例
返回平均值,参考如下示例代码 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df.mean()
Python

执行上面示例代码,获得如下结果 -

Age       31.833333
Rating     3.743333
dtype: float64
Shell

std()示例

返回数字列的Bressel标准误差。

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df.std()
Python

执行上面示例代码,获得如下结果 -

Age       9.232682
Rating    0.661628
dtype: float64
Shell

函数和说明

下面来了解Python Pandas中描述性统计信息的函数,下表列出了重要函数 -

编号 函数 描述
1 count() 非空观测数量
2 sum() 全部值之和
3 mean() 全部值的平均值
4 median() 全部值的中位数
5 mode() 值的模值
6 std() 值的标准误差
7 min() 全部值中的最小值
8 max() 全部值中的最大值
9 abs() 绝对值
10 prod() 数组元素的乘积
11 cumsum() 累计总和
12 cumprod() 累计乘积

注 - 因为DataFrame是异构数据结构。通用操做不适用于全部函数。

  • 相似于:sum()cumsum()函数能与数字和字符(或)字符串数据元素一块儿工做,不会产生任何错误。字符聚合历来都比较少被使用,虽然这些函数不会引起任何异常。
  • 因为这样的操做没法执行,所以,当DataFrame包含字符或字符串数据时,像abs()cumprod()这样的函数会抛出异常。

汇总数据

describe()函数是用来计算有关DataFrame列的统计信息的摘要。

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df.describe()
Python

执行上面示例代码,获得如下结果 -

               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
Shell

该函数给出了平均值,标准差和IQR值。 并且,函数排除字符列,并给出关于数字列的摘要。 include是用于传递关于什么列须要考虑用于总结的必要信息的参数。获取值列表; 默认状况下是”数字值”。

  • object - 汇总字符串列
  • number - 汇总数字列
  • all - 将全部列汇总在一块儿(不该将其做为列表值传递)

如今,在程序中使用如下语句并检查输出 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df.describe(include=['object'])
Python

执行上面示例代码,获得如下结果 -

          Name
count       12
unique      12
top      Ricky
freq         1
Shell

如今,使用如下语句并查看输出 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
   'Lee','David','Gasper','Betina','Andres']),
   '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])}

#Create a DataFrame
df = pd.DataFrame(d)
print df. describe(include='all')
Shell

执行上面示例代码,获得如下结果 -

          Age          Name       Rating
count   12.000000        12    12.000000
unique        NaN        12          NaN
top           NaN     Ricky          NaN
freq          NaN         1          NaN
mean    31.833333       NaN     3.743333
std      9.232682       NaN     0.661628
min     23.000000       NaN     2.560000
25%     25.000000       NaN     3.230000
50%     29.500000       NaN     3.790000
75%     35.500000       NaN     4.132500
max     51.000000       NaN     4.800000