Panda的学习之路——pandas选择数据

Posted william-xh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Panda的学习之路——pandas选择数据相关的知识,希望对你有一定的参考价值。

首先定义panda

dates=pd.date_range(20130101,periods=6)
# print(dates)
df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=[a,b,c,d])
print(df)
             a   b   c   d
2013-01-01   0   1   2   3
2013-01-02   4   5   6   7
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15
2013-01-05  16  17  18  19
2013-01-06  20  21  22  23

一、选择特定的某一列

# 选择某一列 选列比较简单
print("选择具体的某一列")
print(df[a])
#print(df.a)#这两种表达方式一致

结果:

选择具体的某一列
2013-01-01     0
2013-01-02     4
2013-01-03     8
2013-01-04    12
2013-01-05    16
2013-01-06    20

二、选择特定的几行

2.1通过仿照array的形式来选择

print("选择特定的几行 0~1")
print(df[0:1])
print("选择20130102 到 20130104 行")
print(df[20130102:20130104])

结果:

选择特定的几行 0~1
            a  b  c  d
2013-01-01  0  1  2  3
选择20130102 到 20130104 行
             a   b   c   d
2013-01-02   4   5   6   7
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15

2.2按照标签来选择(其实应该说是按照index来选择) 不管是行还是列 都必须是lable

# 按标签来选择
print("按照特定的标签进行")
print(df.loc[20130102])#loc是根据index来选择对应的行 也就是a行还是b行
# 把ab的数据全部弄出来
print("特定列给选出来")
print(df.loc[:,[a,b]])
print("把某一行的特定列给选出来")
print(df.loc[20130102,[a,b]])

结果:

按照特定的标签进行筛选
a    4
b    5
c    6
d    7
Name: 2013-01-02 00:00:00, dtype: int32
特定列给选出来
             a   b
2013-01-01   0   1
2013-01-02   4   5
2013-01-03   8   9
2013-01-04  12  13
2013-01-05  16  17
2013-01-06  20  21
把某一行的特定列给选出来
a    4
b    5
Name: 2013-01-02 00:00:00, dtype: int32

2.3按第几行(第几列)来进行选择     不管行列都是数字

# 按第几行来选择
print(df.iloc[3])#第三行的数据 iloc是根据数字 也就是第几行来决定索引
print(df.iloc[3:5,1:3])#三到5行 1:3 列

结果:

a    12
b    13
c    14
d    15
Name: 2013-01-04 00:00:00, dtype: int32
             b   c
2013-01-04  13  14
2013-01-05  17  18

2.4把lable和数字一起结合起来    就是又可以用数字 又可以用lable

# 把lable和第几位一起来筛选
print(df.ix[0:3,[a,c]])
print(df.ix[20130101:20130105,[a,c]])

结果:

            a   c
2013-01-01  0   2
2013-01-02  4   6
2013-01-03  8  10
             a   c
2013-01-01   0   2
2013-01-02   4   6
2013-01-03   8  10
2013-01-04  12  14
2013-01-05  16  18

三、是或者否的相关筛选

# 是或者否的筛选  只对比a 然后把其它的给显示出来
# print(df)
# a这一列中大于8的  然后把其它的bcd也会显示出来
print(df[df.a>6])

结果

             a   b   c   d
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15
2013-01-05  16  17  18  19
2013-01-06  20  21  22  23

 

以上是关于Panda的学习之路——pandas选择数据的主要内容,如果未能解决你的问题,请参考以下文章

Panda .loc 或 .iloc 从数据集中选择列

利用python数据分析panda学习笔记之DataFrame

利用python数据分析panda学习笔记之Series

利用python数据分析panda学习笔记之基本功能

让数据分析更简单的Panda技巧:万能转格式轻松合并数据压缩...

Python Panda - 学习笔记