Pandas入门——选取数据

1、Series

1、1 下标或标签作为索引

1、1、1 选择一行:

dict = {'a': 0, 'b': 1, 'c': 2}
df = pd.Series(dict)
print(df)
print(df[0])
print(df['a'])
a    0
b    1
c    2
dtype: int64
0
0

想要显示带索引(标签)的某一行数据时,需要内部再嵌套一个[] 。

print(df[[0]])
print(df[['a']])
a    0
dtype: int64
a    0
dtype: int64

1、1、2 选择多行:

截取字符

print(df[:2])
a    0
b    1
dtype: int64

类似于字典,判断标签是否存在。

print('c' in df)
True

2、DataFrame

2、1 标签作为索引

2、1、1 选择列

2、1、1、1 选择一列:

(1)未使用函数

dict = {'one': {'a': 0, 'b': 1, 'c': 2}, 'two': {'a': 4, 'b': 9, 'c': 3}}
df = pd.DataFrame(dict)
print(df['one'])
a    0
b    1
c    2
Name: one, dtype: int64

与Series类似,想要显示带索引的数据时,需要内部再嵌套一个[]。 

print(df[['one']])
   one
a    0
b    1
c    2

(2)使用函数

df.loc[]一般适用于根据标签选择行的情况,但也可以写成以下形式选择列。

print(df.loc[:, ['one']])
   one
a    0
b    1
c    2

2、1、1、2 选择不止一列

(1)未使用函数

print(df[['one', 'two']])
   one  two
a    0    4
b    1    9
c    2    3

(2)使用函数 

调用df.loc[]

print(df.loc[:, ['one', 'two']])
   one  two
a    0    4
b    1    9
c    2    3

2、1、2 选择行

2、1、2、1 选择一行

直接写df['a']会报错,正确且唯一的方法是调用df.loc[],但要注意以下两种方式的显示结果是不同的,嵌套[]可以显示索引。

print(df.loc['a'])
one    0
two    4
Name: a, dtype: int64
print(df.loc[['a']])
   one  two
a    0    4

2、1、2、2 选择不止一行

print(df.loc[['a', 'b']])
   one  two
a    0    4
b    1    9

2、1、3 选择行、列

(1)选择某一范围时

 先行后列

print(df.loc[['a', 'b'], ['one', 'two']])
   one  two
a    0    4
b    1    9

(2)选择某一具体值时 

先行后列

print(df.loc[['a'], ['one']])
   one
a    0

也可写成以下形式 ,但只输出值。

print(df.loc['a', 'one'])
0

2、2 下标作为索引

2、2、1 选择行

2、2、1、1 选择一行/多行

(1)未使用函数

直接写df[0]会报错,正确写法是df[:1]。

print(df[:1])
   one  two
a    0    4

与Series类似,切片可以灵活的截取不同行。

(2)使用函数

调用df.iloc[],但要注意以下两种方式的显示结果是不同的,切片可以显示索引。

print(df.iloc[0])
one    0
two    4
Name: a, dtype: int64
print(df.iloc[0:1])
   one  two
a    0    4

2、2、2 选择列

2、2、2、1 选择一列/多列

 df.iloc[]一般适用于根据下标选择行的情况,但也可以写成以下形式选择列。

print(df.iloc[:, 0:2])
   one
a    0
b    1
c    2

2、2、3 选择行、列

2、2、3、1 选择某一范围时

(1)未使用函数 

print(df[:2][['one', 'two']])
   one  two
a    0    4
b    1    9

(2)使用函数

调用df.iloc[]

print(df.iloc[0:2, 0:2])
   one  two
a    0    4
b    1    9

2、2、3、2 选择某一值时

(1)未使用函数

print(df[1:2][['one']])
   one
b    1

(2)使用函数

print(df.iloc[1:2, 1:2])
   two
b    9

2、3 dtype作为索引

支持numpy通用数据类型,include和exclude用于实现“提取这些数据类型的列”或“提取不是这些数据类型的列”。

dft = pd.DataFrame({'A': np.random.rand(3),
                    'B': 1,
                    'C': 'foo',
                    'D': pd.Timestamp('20010102'),
                    'E': pd.Series([1.0] * 3).astype('float32'),
                    'F': False,
                    'G': pd.Series([1] * 3, dtype='int8')})
print(dft.select_dtypes([bool]))
          A  B    C          D    E      F  G
0  0.079111  1  foo 2001-01-02  1.0  False  1
1  0.618861  1  foo 2001-01-02  1.0  False  1
2  0.346071  1  foo 2001-01-02  1.0  False  1

       F
0  False
1  False
2  False
print(dft.select_dtypes(include=['bool', 'number'], exclude=['float32']))
          A  B      F  G
0  0.054771  1  False  1
1  0.722049  1  False  1
2  0.256301  1  False  1

其中通用数据类型如下:

[numpy.generic,
 [[numpy.number,
   [[numpy.integer,
     [[numpy.signedinteger,
       [numpy.int8,
        numpy.int16,
        numpy.int32,
        numpy.int64,
        numpy.int64,
        numpy.timedelta64]],
      [numpy.unsignedinteger,
       [numpy.uint8,
        numpy.uint16,
        numpy.uint32,
        numpy.uint64,
        numpy.uint64]]]],
    [numpy.inexact,
     [[numpy.floating,
       [numpy.float16, numpy.float32, numpy.float64, numpy.float128]],
      [numpy.complexfloating,
       [numpy.complex64, numpy.complex128, numpy.complex256]]]]]],
  [numpy.flexible,
   [[numpy.character, [numpy.bytes_, numpy.str_]],
    [numpy.void, [numpy.record]]]],
  numpy.bool_,
  numpy.datetime64,
  numpy.object_]]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值