当前位置:   article > 正文

【Pandas数据分析3】数据提取_pandas根据列名提取数据

pandas根据列名提取数据

三、数据提取

1、按行提取

1.1 loc属性

以列名(columns)和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列。

1.2 iloc属性

以行和列位置索引(即:0,1,2,…)作为参数,0表示第一行,1表示第二行,以此类推。

当只有一个参数时,默认是行索引,即抽取整行数据,包括所有列。

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print('-------------------------')

# 提取单行数据
print(df.loc['张三'])  # 行索引名称
print(df.iloc[0])  # 行索引编号
print('-------------------------')

# 提取多行数据
print(df.loc[['张三', '王五']])
print(df.iloc[[0, 2]])
print('-------------------------')

# 提取连续多行数据
print(df.loc['张三':'王五'])  # 行索引名称,包含王五
print(df.iloc[0:2])  # 行索引编号,不包含王五
print('-------------------------')

# iloc[start:stop:step]
print(df.iloc[1::])  # 起始为1,一直到末尾
print(df.iloc[::2])  # 起始为0,步长为2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
      数学  语文  英语
张三    45    65   100
李四    56    45    50
王五    67    67    67
-------------------------
数学     45
语文     65
英语    100
Name: 张三, dtype: int64
数学     45
语文     65
英语    100
Name: 张三, dtype: int64
-------------------------
      数学  语文  英语
张三    45    65   100
王五    67    67    67
      数学  语文  英语
张三    45    65   100
王五    67    67    67
-------------------------
      数学  语文  英语
张三    45    65   100
李四    56    45    50
王五    67    67    67
      数学  语文  英语
张三    45    65   100
李四    56    45    50
-------------------------
      数学  语文  英语
李四    56    45    50
王五    67    67    67
      数学  语文  英语
张三    45    65   100
王五    67    67    67
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

2、按列提取

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print('-------------------------')

# 直接使用列名提取
print(df[['数学', '英语']])
print('-------------------------')

# 提取不连续的列
# [行, 列]
# 提取:所有行的数学和英语
print(df.loc[:, ['数学', '英语']])
print(df.iloc[:, [0, 2]])
print('-------------------------')

# 提取连续的列
print(df.loc[:, '语文':])
print(df.iloc[:, 1:])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
      数学  语文  英语
张三    45    65   100
李四    56    45    50
王五    67    67    67
-------------------------
      数学  英语
张三    45   100
李四    56    50
王五    67    67
-------------------------
      数学  英语
张三    45   100
李四    56    50
王五    67    67
      数学  英语
张三    45   100
李四    56    50
王五    67    67
-------------------------
      语文  英语
张三    65   100
李四    45    50
王五    67    67
      语文  英语
张三    65   100
李四    45    50
王五    67    67
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

3、提取区域数据

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print('-------------------------')

print(df.loc['张三', '数学'], type(df.loc['张三', '数学']))
print(df.iloc[0, 0], type(df.iloc[0, 0]))
print('-------------------------')

print(df.loc[['张三', '王五'], ['数学', '语文']])
print(df.iloc[[0, 2], [0, 2]])
print('-------------------------')

# 区域数据连续
# [行切片, 列切片]
print(df.loc['张三':'李四', '数学':'语文'])
print(df.iloc[0:2, 0:2])
print('-------------------------')

# 区域数据不连续
print(df.iloc[[0, 2], [0, 2]])  # 第0行,第2行;第0列,第2列
print('-------------------------')

print(df.iloc[:, 0])  # 所有行的第0列
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
      数学  语文  英语
张三    45    65   100
李四    56    45    50
王五    67    67    67
-------------------------
45 <class 'numpy.int64'>
45 <class 'numpy.int64'>
-------------------------
      数学  语文
张三    45    65
王五    67    67
      数学  英语
张三    45   100
王五    67    67
-------------------------
      数学  语文
张三    45    65
李四    56    45
      数学  语文
张三    45    65
李四    56    45
-------------------------
      数学  英语
张三    45   100
王五    67    67
-------------------------
张三    45
李四    56
王五    67
Name: 数学, dtype: int64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

4、提取指定条件数据

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print('-------------------------')

# 语文 >= 60
print(df.loc[df['语文'] >= 60])
print('-------------------------')

# 语文 >= 60 数学 >= 60
# 多个关系使用关系运算符
print(df.loc[(df['语文'] >= 60) & (df['数学'] >= 60)])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
      数学  语文  英语
张三    45    65   100
李四    56    45    50
王五    67    67    67
-------------------------
      数学  语文  英语
张三    45    65   100
王五    67    67    67
-------------------------
      数学  语文  英语
王五    67    67    67
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/209753
推荐阅读
相关标签
  

闽ICP备14008679号