Pandas入门——选取数据

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

截取字符

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

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

print('c' in df)
True

2、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、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

(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'])

2、2 下标作为索引

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、1 选择一列/多列

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

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

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_]]

Original: https://blog.csdn.net/DAHWHG/article/details/120263112
Author: DAHWHG
Title: Pandas入门——选取数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678653/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球