Python Pandas 描述性统计
大量的方法共同计算描述性统计和DataFrame的其他相关操作。其中大部分是聚合,如 sum()、mean() ,但有些方法,如 sumsum() ,产生一个相同大小的对象。一般来说,这些方法需要一个 axis 参数,就像ndarray.{sum, std, …} 一样 , 但轴可以通过名称或整数来指定
- DataFrame - “index” (axis=0, default), “columns” (axis=1)
让我们创建一个DataFrame,并在本章中使用这个对象进行所有操作。
例子
import pandas as pd
import numpy as np
#Create a Dictionary of 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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df
其 输出结果 如下 –
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 Smith 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
sum()
返回请求的轴的值的总和。默认情况下,轴是索引(axis=0)。
import pandas as pd
import numpy as np
#Create a Dictionary of 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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.sum()
其 输出结果 如下 –
Age 382
Name TomJamesRickyVinSteveSmithJackLeeDavidGasperBe...
Rating 44.92
dtype: object
每个单独的列都是单独添加的(字符串是附加的)。
axis=1
这个语法将给出如下所示的输出。
import pandas as pd
import numpy as np
#Create a Dictionary of 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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.sum(1)
其 输出结果 如下 –
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
import numpy as np
#Create a Dictionary of 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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.mean()
其 输出 情况如下—
Age 31.833333
Rating 3.743333
dtype: float64
std()
返回数字列的Bressel标准偏差。
import pandas as pd
import numpy as np
#Create a Dictionary of 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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.std()
其 输出结果 如下 –
Age 9.232682
Rating 0.661628
dtype: float64
功能与描述
现在让我们来了解Python Pandas中描述性统计下的函数。下表列出了一些重要的函数
编号:Sr.No. | 功能名称 | 说明 |
---|---|---|
1 | count() | 非空观察值的数量 |
2 | sum() | 值的总和 |
3 | mean() | 值的平均数 |
4 | median() | 值的中位数 |
5 | mode() | 数值的模式 |
6 | std() | 数值的标准偏差 |
7 | min() | 最小值 |
8 | max() | 最大值 |
9 | abs() | 绝对值 |
10 | prod() | 值的乘积 |
11 | cumsum() | 累积总和 |
12 | cumprod(Cumprod) | 累积乘积 |
注意 - 由于DataFrame是一个异质的数据结构。通用的操作并不适用所有的函数。
- 像 sum(), cumsum() 这样的函数在处理数字和字符(或)字符串数据元素时都没有任何错误。尽管 在实践中 ,字符聚合一般不会被使用,但这些函数不会抛出任何异常。
-
像 abs(), cumprod() 这样的函数在DataFrame包含字符或字符串数据时抛出异常,因为不能进行这样的操作。
总结数据
describe() 函数计算与DataFrame列相关的统计汇总。
import pandas as pd
import numpy as np
#Create a Dictionary of 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])
}
#Create a 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
这个函数给出了 平均值、标准差 和 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','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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.describe(include=['object'])
其 输出结果 如下 –
Name
count 12
unique 12
top Ricky
freq 1
现在,使用以下语句并检查输出结果
import pandas as pd
import numpy as np
#Create a Dictionary of 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])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df. describe(include='all')
其 输出结果 如下 –
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