python pandas获取行号_Python Pandas使用

用于数据探索和分析,基于numpy模块

安装

pip install pandas

常用操作

Series

序列(可以理解为一列数据),举例:

>>> a = pandas.Series([2,1,6,3])

>>> pandas.Series([2,1,6,3])

0 2

1 1

2 6

3 3

dtype: int64

注:

上面没有指定索引,所以默认索引就为从0开始的数字,也可以自己指定索引,举例:

>>> pandas.Series([2,1,6,3], index=['a','b','c','d'])

a 2

b 1

c 6

d 3

dtype: int64

DataFrame

数据框(行列都有的数据),举例:

>>> a = pandas.DataFrame([[1,2,5,3],[3,6],[3,5,1,2,6]]) #里面不一定得数字

>>> a

0 1 2 3 4

0 1 2 5.0 3.0 NaN

1 3 6 NaN NaN NaN

2 3 5 1.0 2.0 6.0

#最上面一行代表每一列序号,最左边一列代表每一行序号

注:

最后面有介绍DataFrame和Series的关系以及一些踩坑注意点

取值

按先列后行顺序取值,而且空的地方虽然为NaN,但是NaN之间是不等的,对上面的a举例:

>>> a[2][1] #这里不是[1][2],是先列后行

nan

>>> a[3][1]

nan

>>> a[3][1] == a[3][1]

False #可以看出两个NaN不等

注:

在pandas里异常的数据(如空)用NaN表示,以及无穷数用inf进行表示,此时对于NaN可以通过pandas下的isnull方法或者numpy下的isnan方法判断,而inf则通过numpy下的isinf判断,举例:

>>> a = pandas.DataFrame([[1,2,5,3],[3,6, float("inf")],[3,5,1,2,6]])

>>> a

0 1 2 3 4

0 1 2 5.000000 3.0 NaN

1 3 6 inf NaN NaN

2 3 5 1.000000 2.0 6.0

>>> a.isnull()

0 1 2 3 4

0 False False False False True

1 False False False True True

2 False False False False False

>>> np.isnan(a)

0 1 2 3 4

0 False False False False True

1 False False False True True

2 False False False False False

>>> np.isinf(a)

0 1 2 3 4

0 False False False False False

1 False False True False False

2 False False False False False

切片操作

使用iloc方法可以对DataFrame数据进行切片操作,使用切片操作时的顺序是先行后列,举例:

>>> a

0 1 2 3 4

0 1 2 5.0 3.0 NaN

1 3 6 NaN NaN NaN

2 3 5 1.0 2.0 6.0

>>> a.iloc[2, 3:]

# 去第三行第四列以后的数据

3 2.0

4 6.0

Name: 2, dtype: float64

使用ix方法也可以进行切片操作,而且支持更加强大的筛选数据方式,如按列名筛选,举例:

>>> a = pandas.DataFrame([[1,2,5,3],[3,6],[3,5,1,2,6]])

>>> a.columns = ['a', 'b', 'c', 'd', 'e']

# 设置列名

>>> a

a b c d e

0 1 2 5.0 3.0 NaN

1 3 6 NaN NaN NaN

2 3 5 1.0 2.0 6.0

>>> a.ix[:, a.columns == 'c']

# 索引所有行,且列名为c的那一列

c

0 5.0

1 NaN

2 1.0

按条件筛选

举例:

>>> a = pandas.DataFrame([[1,2,5,3],[3,6],[3,5,1,2,6]])

>>> a

0 1 2 3 4

0 1 2 5.0 3.0 NaN

1 3 6 NaN NaN NaN

2 3 5 1.0 2.0 6.0

>>> a[a[4].notnull()]

# 筛选第四列不为NaN的数据

0 1 2 3 4

2 3 5 1.0 2.0 6.0

>>> a[a[1] > 2]

# 筛选第一列大于2的数据

0 1 2 3 4

1 3 6 NaN NaN NaN

2 3 5 1.0 2.0 6.0

>>> a.T[a.T[0].notnull()].T

# 转置后筛选第0列不为NaN的数据,再转回来,即筛选第0行不为NaN的列

0 1 2 3

0 1.0 2.0 5.0 3.0

1 3.0 6.0 NaN NaN

2 3.0 5.0 1.0 2.0

注:

筛选后的数据不能够直接通过索引或者切片来进行某列的数据修改,因此需要使用到loc方法,要注意的是如果直接对索引后的数据进行赋值将会对整行的所有列都进行修改,举例:

>>> a = pandas.DataFrame([[1,2,5,3],[3,6],[3,5,1,2,6]])

>>> a

0 1 2 3 4

0 1 2 5.0 3.0 NaN

1 3 6 NaN NaN NaN

2 3 5 1.0 2.0 6.0

>>> a[3] != 3.

# 筛选第三列不为3的数据

0 False

1 True

2 True

Name: 3, dtype: bool

>>> a[a[3] != 3.]

# 索引筛选后的数据

0 1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值