【Pandas数据分析3】数据提取

简介: 【Pandas数据分析3】数据提取

三、数据提取

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
数学  语文  英语
张三    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

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:])
数学  语文  英语
张三    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

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列
数学  语文  英语
张三    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

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)])
数学  语文  英语
张三    45    65   100
李四    56    45    50
王五    67    67    67
-------------------------
      数学  语文  英语
张三    45    65   100
王五    67    67    67
-------------------------
      数学  语文  英语
王五    67    67    67


目录
相关文章
|
1月前
|
Python
使用 Pandas 库时,如何处理数据的重复值?
在使用Pandas处理数据重复值时,需要根据具体的数据特点和分析需求,选择合适的方法来确保数据的准确性和唯一性。
119 8
|
2天前
|
存储 数据挖掘 数据处理
Pandas 数据筛选:条件过滤
Pandas 是 Python 最常用的数据分析库之一,提供了强大的数据结构和工具。本文从基础到高级,介绍如何使用 Pandas 进行条件过滤,包括单一条件、多个条件过滤、常见问题及解决方案,以及动态和复杂条件过滤的高级用法。希望本文能帮助你更好地利用 Pandas 处理数据。
101 78
|
1月前
|
存储 机器学习/深度学习 数据可视化
数据集中存在大量的重复值,会对后续的数据分析和处理产生什么影响?
数据集中存在大量重复值可能会对后续的数据分析和处理产生多方面的负面影响
107 56
|
4天前
|
数据挖掘 索引 Python
Pandas数据读取:CSV文件
Pandas 是 Python 中强大的数据分析库,`read_csv` 函数用于从 CSV 文件中读取数据。本文介绍 `read_csv` 的基本用法、常见问题及其解决方案,并通过代码案例详细说明。涵盖导入库、读取文件、指定列名和分隔符、处理文件路径错误、编码问题、大文件读取、数据类型问题、日期时间解析、空值处理、跳过行、指定索引列等。高级用法包括自定义列名映射、处理多行标题和注释行。希望本文能帮助你更高效地使用 Pandas 进行数据读取和处理。
36 13
|
17小时前
|
算法 数据挖掘 索引
Pandas数据排序:单列与多列排序详解
本文介绍了Pandas库中单列和多列排序的方法及常见问题的解决方案。单列排序使用`sort_values()`方法,支持升序和降序排列,并解决了忽略大小写、处理缺失值和索引混乱等问题。多列排序同样使用`sort_values()`,可指定不同列的不同排序方向,解决列名错误和性能优化等问题。掌握这些技巧能提高数据分析效率。
17 8
|
4天前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
1月前
|
Python
|
1月前
|
Python
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
42 2
|
1月前
|
Python
Pandas 常用函数-数据合并
Pandas 常用函数-数据合并
40 1
下一篇
DataWorks