Pandas 基础5|学习笔记

简介: 快速学习 Pandas 基础5

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践Pandas 基础5】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15385


Pandas 基础5

 

element-wise的python函数也能用。假设想要格式化frame中的浮点数,变为string。可以用apply map:

In [70]: format = lambda x: '%.2f’%x

In [71]: frame.applymap(format)

0ut[71]:

d      d     e

Utah    1.08   0.74   1.30

ohio     0.47  -1.19   0.89

Texas    1.06   0.03   1.99

Oregon   0.59  0.76   0.07

先做一个lambda函数,然后applymap引用这个函数,然后里面的值就变成保留两位的字符串了。

applymap的做法是,series有一个map函数,能用来实现element-wise函数:

In [72]: frame['e'].map(format)

out[72]: Utah     1.30

0hio      0.89

Texas     1.99

Oregon   0.07

Name: e,dtype: object

Sorting and Ranking(排序)

按row或column index来排序的话,可以用sort_index方法,会返回一个新的object:

In [73]: obj = pd.Series(range(4), index=['d', 'a', 'b', 'c'])

Obj

out[73]: d   0

a   1

b   2

c   3

dtype: int64

In[74]: obj.sort_index()   给索引进行排序,默认是升序。

out[74]: a    1

b    2

c    3

d    0

dtype: int64

在DataFrame,可以用index或其他axis来排序:

In [75]:frame = pd. DataFrame(np. arange(8).reshape((2,4)),

index=['three', 'one’],

columns=['d', 'a', 'b', 'c'])

frame

Out[75]:        d   a   b   c

three   0   1   2   3

one     4   5   6   7

In [76]: frame.sort_index()    对行进行索引

0ut[76]:         d   a   b   c

one     4   5   6   7

three   0   1   2   3

In [77]: frame.sort_index(axis=1)  对列进行索引

Out[77]:           a    b   c   d

three   1    2   3   0

one    5    6    7   4

默认是升序,可以设置降序:

升序等于false,说明是降序排列。

In[78]: frame.sort_index(axis=1,ascending False)

Out[78]:

d   c   b   a

three   0   3   2   1

one    4   7   6   5

通过值来排序,用sort_values方法:

In [80]: obj = pd.Series([4,7,-3,2])

obj.sort_values()

out[80]: 2  -3

3   2

0   4

1   7

dtype: int64

缺失值会被排在最后:

In[82]: obj = pd.Series([4,np.nan,7,np.nan,-3,2])

obj.sort_values()

Out[82]: 4   -3.0

5    2.0

0    4.0

2    7.0

1    NaN

3    NaN

dtype: float64

对于一个DataFrame,可以用一列或多列作为sort keys。这样的话,只需要把一列多多列的名字导入到sort_values即可;

In [83]: frame = pd.DataFrame({'b': [4,7,—3,2], 'a': [0, 1,0,1]})

Frame

Out[83]:

b     a

0    4     0

1    7     1

2    -3    0

3    2     1

In [84]: frame.sort_values(by=' b')

Out[84]:

b     a

2    -3    0

3    2     1

0    4     0

1    7     1

多列排序的话,传入一个list of names:

In [85]: frame.sort_values(by=['a', 'b'])

Out[85]:

b     a

2    -3    0

0    4     0

3    2     1

1    7     1

下面学习ranking,ranking及既是等级又是排名。

ranking (排名)是给有效的数据分配数字。rank方法能用于series和DataFrame,rank方法默认会给每个group一个meanrank (平均排名)。rank表示在这个数在原来的Series中排第几名,有相同的数,取其排名平均(默认)作为值:

In [86]: obj = pd.Series([,7,—5,7,4,2,0,4])

obj

out[86]: 0   7

1   -5

2    7

3    4

4    2

5    0

6    4

dtype: int64

In [90]: obj.sort_values()

out[90]: 1   -5

5    0

4    2

3    4

6    4

0    7

2    7

dtype: int64

[91]: obj.rank()

[91]: 0    6.5

1    1.0

2    6.5

3    4.5

4    3.0

5    2.0

6    4.5

dtype: float64

在obj中,4和4的排名是第4名和第五名,取平均得4.5。7和7的排名分别是第六名和第七名,则其排名取平均得6.5。其他同理可得。

rank也可以根据数据被观测到的顺序来设定:

In[92]: obj

0ut[92]: 0    7

1   -5

2    7

3    4

4    2

5    0

6    4

In []: obj.rank(method='first')

out[]: 0    6.0

1    1.0

2    7.0

3    4.0

4    3.0

5    2.0

6    5.0

dtype: float64

这里没有给0和2(指两个数字7)赋予average rank 6.5,而是给第一个看到的7(label 0)设置rank为6,第二个看到的7(label 2)设置rank为7。

也可以设置降序:

In [96]: # Assign tie values the maximum rank in the group

obj.rank(ascending False,method='max')

注意:原来rank为1的最小,现在这里rank为1的变为最大了。

Out[96]: 0    2.0

1     7.0

2     2.0

3     4.0

4     5.0

5     6.0

6     4.0

dtype: float64

dataframe可以根据行或列来计算rank:

In[97]: frame = pd.DataFrame({'b': [4.3,7,-3,2],

'a': [0, 1,0,11],

'c'∶ [-2,5,8,-2.5]})

Frame

Out[97]:

b     a    c

0   4.3    0   -2.0

1    7.0   1    5.0

2   -3.0   0    8.0

3    2.0   1   -2.5

In[98]: frame. rank (axis='columns')

# columns表示列与列之间的排序(即每一行里数据间的排序)

out[98]:

b   a      c

0   3.0   2.0   1.0

1   3.0   1.0   2.0

2   1.0   2.0   3.0

3   3.0   2.0   1.0

执行之后要注意,out[98]里每一列都是rank,它里面是rank的位置。

相关文章
|
4月前
|
索引 Python
Pandas学习笔记之时间处理
Pandas学习笔记之时间处理
|
4月前
|
索引 Python
Pandas学习笔记之Dataframe
Pandas学习笔记之Dataframe
|
4月前
|
索引 Python
Pandas学习笔记之Series
Pandas学习笔记之Series
|
4月前
|
SQL Serverless 数据库
Pandas学习笔记之常用功能
Pandas学习笔记之常用功能
|
机器学习/深度学习 决策智能 计算机视觉
Pandas库之DataFrame学习笔记
Pandas库之DataFrame学习笔记
180 0
|
SQL Java Go
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(1)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(1)
389 0
|
数据处理 索引 Python
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(4)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(4)
405 0
|
Java 数据处理 索引
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(3)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(3)
235 0
|
SQL 存储 Java
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(2)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(2)
337 0
|
数据采集 开发者 索引
Pandas 数据预处理-中|学习笔记
快速学习 Pandas 数据预处理-中