本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用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》翻译整理
—————-————————————-
1.Numpy的逐元素数组方法:
Numpy的通用函数(逐元素数组方法)对Pandas对象也有效。
1>>> df = pd.DataFrame(np.arange(12).reshape((4,3)),columns=['a','b','c'],index=['行1','行2','行3','行4'])
2>>> df
3 a b c
4行1 0 1 2
5行2 3 4 5
6行3 6 7 8
7行4 9 10 11
8
9>>> np.exp(df)
10 a b c
11行1 1.000000 2.718282 7.389056
12行2 20.085537 54.598150 148.413159
13行3 403.428793 1096.633158 2980.957987
14行4 8103.083928 22026.465795 59874.141715
2.apply()方法:
DataFrame的apply()
方法可以实现将函数应用到一行或一列的一维数组上,通过指定axis值将函数作用于指定轴。
1>>> df = pd.DataFrame(np.arange(12).reshape((4,3)),columns=['a','b','c'],index=['行1','行2','行3','行4'])
2>>> df
3 a b c
4行1 0 1 2
5行2 3 4 5
6行3 6 7 8
7行4 9 10 11
8
9>>> f = lambda x :x.max()-x.min()
10
11>>> df.apply(f)
12a 9
13b 9
14c 9
15dtype: int64
16
17>>> df.apply(f,axis='columns')
18行1 2
19行2 2
20行3 2
21行4 2
22dtype: int64
23
24>>> df.apply(f,axis=0)
25a 9
26b 9
27c 9
28dtype: int64
1>>> df = pd.DataFrame(np.arange(12).reshape((4,3)),columns=['a','b','c'],index=['行1','行2','行3','行4'])
2>>> df
3 a b c
4行1 0 1 2
5行2 3 4 5
6行3 6 7 8
7行4 9 10 11
8
9>>> def f(x):
10... return pd.Series([x.min(),x.max()],index=['min','max'])
11
12>>> df.apply(f , axis=0)
13 a b c
14min 0 1 2
15max 9 10 11
3.applymap()方法:
DataFrame对象中,逐元素的Python函数可以传递给applymap()
方法。
1>>> df = pd.DataFrame(np.random.randn(12).reshape((4,3)),columns=['a','b','c'],index=['行1','行2','行3','行4'])
2>>> df
3 a b c
4行1 -0.926998 -0.311228 0.041445
5行2 -1.356055 -2.552561 -1.435783
6行3 -1.730219 0.868675 -0.545451
7行4 -0.649946 2.384163 -1.798269
8
9>>> def f(x):
10... return f"{x:.2f}"
11
12>>> df.applymap(f)
13 a b c
14行1 -0.93 -0.31 0.04
15行2 -1.36 -2.55 -1.44
16行3 -1.73 0.87 -0.55
17行4 -0.65 2.38 -1.80
Pandas之所以使用applymap
作为函数名,是因为在Series对象中有map()
方法可以将一个逐元素的函数应用在Series上。
1>>> df["a"]
2行1 0.382601
3行2 -0.666680
4行3 0.888033
5行4 -0.460946
6Name: a, dtype: float64
7
8>>> df["a"].map(f)
9行1 0.38
10行2 -0.67
11行3 0.89
12行4 -0.46
13Name: a, dtype: object
本篇文章来源于微信公众号: 码农设计师