首页Python【Python数据分析】2...

【Python数据分析】23.描述性统计和汇总统计


本系列文章配套代码获取有以下三种途径:

  • 可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):

https://returu.github.io/Python_Data_Analysis/lab/index.html
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis

根据《Python for Data Analysis 3rd Edition》翻译整理

—————-————————————-

pandas 对象配备了一套常用的数学和统计方法。其中大部分属于归约或汇总统计的类别,这些方法从 DataFrame 的行或列中提取提取一个Series或一系列值的单个值(例如,总和或平均值)。与 NumPy 数组中的类似方法相比,它们内建了处理缺失值的功能。

1.归约方法:

sum()mean()为例。

  • sum()方法:

调用 DataFrame 的 sum 方法返回一个包含列总和的 Series

 1>>> df = pd.DataFrame([[1.8,np.nan],[7.7,-5.5],[np.nan,np.nan],[0.9,-1.5]],index=['a','b','c','d'],columns=['one','two'])
2>>> df
3   one  two
4a  1.8  NaN
5b  7.7 -5.5
6c  NaN  NaN
7d  0.9 -1.5
8
9>>> df.sum()
10one    10.4
11two    -7.0
12dtype: float64

传递 axis 参数对指定轴求和 。

1>>> df.sum(axis=1)
2a    1.8
3b    2.2
4c    0.0
5d   -0.6
6dtype: float64

因为内建了处理缺失值的功能,除非整个切片全是NaN,否则NaN值会自动被排除掉。通过设置skipna属性可实现不排除NaN值。

1>>> df.sum(axis='columns',skipna=False)
2a    NaN
3b    2.2
4c    NaN
5d   -0.6
6dtype: float64
  • mean()方法:

一些聚合操作方法,比如mean,需要至少一个非 NA 值才能产生一个值结果。

1>>> df.mean(axis=1)
2a    1.8
3b    1.1
4c    NaN
5d   -0.3
6dtype: float64

归约方法的可选参数如下所示:

参数
说明
axis 归约操作轴,0(index)为行方向,1(columns)位列方向
skipna 排除缺失值,默认为True
level 如果轴是多层索引(MultiIndex),该参数可以缩减分组层级

2.积累型方法:

除了归约型方法还有积累型方法,例如计算累加值的cumsum()方法。

 1>>> df = pd.DataFrame([[1.8,np.nan],[7.7,-5.5],[np.nan,np.nan],[0.9,-1.5]],index=['a','b','c','d'],columns=['one','two'])
2>>> df
3   one  two
4a  1.8  NaN
5b  7.7 -5.5
6c  NaN  NaN
7d  0.9 -1.5
8
9>>> df.cumsum()
10    one  two
11a   1.8  NaN
12b   9.5 -5.5
13c   NaN  NaN
14d  10.4 -7.0
15
16>>> df.cumsum(axis="columns")
17   one  two
18a  1.8  NaN
19b  7.7  2.2
20c  NaN  NaN
21d  0.9 -0.6

3.其他方法:

还有一些既不是归约方法也不是积累型方法,例如describe()方法可以一次性产生多个汇总统计。

 1>>> df = pd.DataFrame(np.arange(8).reshape(4,2),index=['a','b','c','d'],columns=['one','two'])
2>>> df
3   one  two
4a    0    1
5b    2    3
6c    4    5
7d    6    7
8
9>>> df.describe()
10            one       two
11count  4.000000  4.000000
12mean   3.000000  4.000000
13std    2.581989  2.581989
14min    0.000000  1.000000
1525%    1.500000  2.500000
1650%    3.000000  4.000000
1775%    4.500000  5.500000
18max    6.000000  7.000000

在非数数据上,describe()会产生其他的汇总统计

 1>>> df = pd.DataFrame({"one":pd.Series(["a""a""b""c"] * 3) ,"two":pd.Series(["a""b""b""b"] * 3) })
2>>> df
3   one two
40    a   a
51    a   b
62    b   b
73    c   b
84    a   a
95    a   b
106    b   b
117    c   b
128    a   a
139    a   b
1410   b   b
1511   c   b
16
17>>> df.describe()
18       one two
19count   12  12
20unique   3   2
21top      a   b
22freq     6   9

另外的一些方法返回的是间接地统计信息,例如idxmin()idxmax()方法返回的是最小值和最大值的索引值。

 1>>> df = pd.DataFrame([[1.8,np.nan],[7.7,-5.5],[np.nan,np.nan],[0.9,-1.5]],index=['a','b','c','d'],columns=['one','two'])
2>>> df
3   one  two
4a  1.8  NaN
5b  7.7 -5.5
6c  NaN  NaN
7d  0.9 -1.5
8
9>>> df.idxmin()
10one    d
11two    b
12dtype: object
13
14>>> df.idxmax()
15one    b
16two    d
17dtype: object

4.描述性统计和汇总统计方法:

描述性统计和汇总统计方法主要包括以下几种:

方法
说明
count 非NA值的个数
describe 汇总统计集合
min, max 计算最小、最大值
argmin, argmax 计算最小、最大值所在的索引位置(整数),在DataFrame对象上不可用
idxmin, idxmax 计算最小、最大值所在的索引标签
quantile

计算样本从0到1的分位数(默认为0.5)

sum 总和
mean 均值
median 中位数(50%分位数)
mad 平均值的平均绝对偏差
prod 所有值的积
var 值的样本方差
std 值的样本标准差
skew 样本偏度值(第三时刻)
kurt 样本峰度值(第四时刻)
cumsum 值的累计和
cummin, cummax 累计的最小值、最大值
cumprod 值的累计积
diff 计算第一个算术方差(对时间序列有用)
pct_change 计算百分比


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments