Pandas 描述性统计
Pandas 描述性统计操作实例
DataFrame用在大量的计算描述性信息统计和其他相关操作。其中大多数是聚合,例如sum(),mean(),但其中一些聚合(例如sumsum())会产生相同大小的对象。一般而言,这些方法采用轴参数,就像ndarray。{sum,std,...}一样,但是可以通过名称或整数指定轴DataFrame − 索引 (axis=0, default), 列 (axis=1)
我们来创建一个DataFrame并在本章中使用此对象进行所有操作。
实例
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } # 创建一个DataFrame df = pd.DataFrame(d) print(df)
运行结果:
Age Name Rating0 25 Tom 4.231 26 James 3.242 25 Ricky 3.983 23 Vin 2.564 30 Steve 3.205 29 Smith 4.606 23 Jack 3.807 34 Lee 3.788 40 David 2.989 30 Gasper 4.8010 51 Betina 4.1011 46 Andres 3.65
sum()
返回所请求轴的值之和。默认情况下,轴为索引(轴=0)
示例
import pandas as pd import numpy as np #创建一个Series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df.sum())
运行结果:
Age 382Name TomJamesRickyVinSteveSmithJackLeeDavidGasperBe...Rating 44.92dtype: object
每个单独的列都添加了字符串
axis=1
此语法将输出以下内容。
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df.sum(1))
运行结果:
0 29.231 29.242 28.983 25.564 33.205 33.606 26.807 37.788 42.989 34.8010 55.1011 49.65dtype: float64
mean()
返回平均值
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df.mean())
运行结果:
Age 31.833333Rating 3.743333dtype: float64
std()
返回数值列的Bressel标准偏差。
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df.std())
运行结果:
Age 9.232682Rating 0.661628dtype: float64
Functions & Description
现在我们来了解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()之类的函数可用于数字和字符(或)字符串数据元素,而不会出现任何错误。虽然字符集合从不普遍使用,但不会抛出任何异常。
汇总数据
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df.describe())
运行结果:
Age Ratingcount 12.000000 12.000000mean 31.833333 3.743333std 9.232682 0.661628min 23.000000 2.56000025% 25.000000 3.23000050% 29.500000 3.79000075% 35.500000 4.132500max 51.000000 4.800000
此函数提供平均值,std和IQR值。并且,函数不包括字符列和有关数字列的给定摘要。“ include”是用于传递有关汇总时需要考虑哪些列的必要信息的参数。取值列表;默认情况下为“数字”。
object − 汇总字符串列number − 汇总数字列all − 总结所有列在一起(不应该把它作为一个列表值)
下面我们在程序中使用以下语句并执行并输出:
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df.describe(include=['object']))
运行结果:
Namecount 12unique 12top Rickyfreq 1
下面我们在程序中使用以下语句并执行并输出:
示例
import pandas as pd import numpy as np # 创建一个series字典 d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','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]) } #创建一个DataFrame df = pd.DataFrame(d) print(df. describe(include='all'))
运行结果:
Age Name Ratingcount 12.000000 12 12.000000unique NaN 12 NaNtop NaN Ricky NaNfreq NaN 1 NaNmean 31.833333 NaN 3.743333std 9.232682 NaN 0.661628min 23.000000 NaN 2.56000025% 25.000000 NaN 3.23000050% 29.500000 NaN 3.79000075% 35.500000 NaN 4.132500max 51.000000 NaN 4.800000