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

【Python数据分析】20.Pandas函数应用和映射


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

  • 可以在以下网站查看,该网站是使用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》翻译整理

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


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
41  0   1   2
52  3   4   5
63  6   7   8
74  9  10  11
8
9>>> np.exp(df)
10              a             b             c
111     1.000000      2.718282      7.389056
122    20.085537     54.598150    148.413159
133   403.428793   1096.633158   2980.957987
144  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
41  0   1   2
52  3   4   5
63  6   7   8
74  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')
181    2
192    2
203    2
214    2
22dtype: int64
23
24>>> df.apply(f,axis=0)
25a    9
26b    9
27c    9
28dtype: int64
传递给apply()方法的函数 f 也可以返回带有多个值的Series。
 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
41  0   1   2
52  3   4   5
63  6   7   8
74  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
41 -0.926998 -0.311228  0.041445
52 -1.356055 -2.552561 -1.435783
63 -1.730219  0.868675 -0.545451
74 -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
141  -0.93  -0.31   0.04
152  -1.36  -2.55  -1.44
163  -1.73   0.87  -0.55
174  -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
6Nameadtypefloat64
7
8>>> df["a"].map(f)
9行1     0.38
10行2    -0.67
11行3     0.89
12行4    -0.46
13Nameadtypeobject


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

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments