本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):
https://returu.github.io/Python_Data_Analysis/lab/index.html
-
也可以通过百度网盘获取,需要在本地配置代码运行环境,环境配置可以查看【Python基础】2.搭建Python开发环境:
链接: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 | 计算百分比 |
本篇文章来源于微信公众号: 码农设计师