用Pandas索引和选择数据

Pandas是python中一款数据分析工具,索引和选择数据是其中非常重要的一部分,下面将详细讲解用Pandas索引和选择数据的完整攻略和实例说明。

Pandas索引和选择数据的完整攻略

一、Pandas索引——理解DataFrame和Series的索引

1.1 DataFrame索引

DataFrame的索引默认情况下是整数,行索引默认是从0开始的,列索引是从0开始的,索引横轴为行索引,也就是axis=0,纵轴为列索引,也就是axis=1。

对于DataFrame的索引,我们可以使用以下方法:

① df[列名]:选中指定列名所在的列;

② df.iloc[:,列号]:使用列号进行列选择,其中”:”表示选中整列;

③ df.loc[:,列名]:使用列名进行列选择;

④ df[[列名1,列名2,...]]:选中指定多个列;

⑤ df[:,:]:选中整个DataFrame。

1.2 Series索引

Series的索引和DataFrame有些不同,Series的索引是自动的,从0开始递增,不同的是,Series的索引没有name属性,is_unique=False,而且可以存在重复的索引值。

对于Series的索引,我们可以使用以下方法:

① sr[label]:选中指定label所在的值;

② sr.loc[label]:同上;

③ sr.iloc[il]:使用索引号进行选择,如使用0表示Series的第一个值;

④ sr.isin(values):返回一个布尔型数组,表示sr中的值是否在values数组中;

二、Pandas选择数据——通过Boolean坐标、位置和标签进行选择

2.1 通过Boolean坐标进行选择

从DataFrame或Series中选择数据的方法有很多,其中Boolean坐标法是在DataFrame或Series中根据某种条件进行过滤,返回对应的True或False值,可以通过这些值在DataFrame或Series中进行数据筛选。

例如,选取age大于30的数据,可以使用下面的代码:

import pandas as pd

df = pd.DataFrame({'name':['Tom','James','Lucy'],
                   'age':[25, 32, 37],
                   'gender':['M','M','F']})
df[df.age>30]

运行结果:

    name  age gender
1  James   32      M
2   Lucy   37      F

在以上代码中,使用了Boolean坐标的方式,选择年龄大于30的记录。

2.2 通过位置进行选择

对于DataFrame和Series,可以通过行和列的位置进行选择,使用的是iloc方法,它接受一个整数或整数序列。

例如:

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'James', 'Lucy'],
                   'age':[25, 32, 37], 
                   'gender':['M', 'M', 'F']}, 
                  index=['a', 'b', 'c'])
df.iloc[1]

运行结果:

name      James
age          32
gender        M
Name: b, dtype: object

在以上代码中,使用了iloc的方式,选择第二个记录。

2.3 通过标签进行选择

对于DataFrame和Series,可以通过设置行或列的标签进行选择,使用的是loc方法。

例如:

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'James', 'Lucy'],
                   'age':[25, 32, 37], 
                   'gender':['M', 'M', 'F']}, 
                  index=['a', 'b', 'c'])
df.loc['b']

运行结果:

name      James
age          32
gender        M
Name: b, dtype: object

在以上代码中,使用了loc的方式,选择名字是James的记录。

2.4 通过名字进行选择

DataFrame和Series可以通过列名进行选择,一种方法是使用中括号[],另一种方法是使用点号 .。

例如:

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'James', 'Lucy'],
                   'age':[25, 32, 37], 
                   'gender':['M', 'M', 'F']}, 
                  index=['a', 'b', 'c'])
df['name']

运行结果:

a      Tom
b    James
c     Lucy
Name: name, dtype: object

在以上代码中,使用了中括号的方式,选择名字一列。

三、Pandas条件筛选——提取DataFrame中符合特定条件的记录

Pandas中条件筛选是非常重要的,可以帮助我们筛选DataFrame、Series中符合特定条件的记录。

对于DataFrame和Series,可以使用Boolean坐标进行筛选。Boolean坐标法是在DataFrame或Series中根据某种条件进行过滤,返回对应的True或False值,可以通过这些值在DataFrame或Series中进行数据筛选。

例如,选取年龄大于30且性别为男性的记录,可以使用下面的代码:

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'James', 'Lucy'],
                   'age':[25, 32, 37], 
                   'gender':['M', 'M', 'F']}, 
                  index=['a', 'b', 'c'])
df[(df.age > 30) & (df.gender == 'M')]

运行结果:

    name  age gender
1  James   32      M

在以上代码中,使用了Boolean坐标的方式,选择年龄大于30且性别为男的记录。

另外,Pandas还提供了isin方法,可以实现类似SQL中的IN操作,例如:

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'James', 'Lucy'],
                   'age':[25, 32, 37], 
                   'gender':['M', 'M', 'F']}, 
                  index=['a', 'b', 'c'])
df[df.name.isin(['James', 'Lucy'])]

运行结果:

    name  age gender
1  James   32      M
2   Lucy   37      F

在以上代码中,使用了isin方法,选择名字是James或Lucy的记录。

四、Pandas索引和选择数据的实例说明

下面给出一个完整的实例,包括如何读取、索引、筛选数据。

例如,现在我们有一个学生信息表格student.csv,包含学生ID、姓名、年龄、所在城市、成绩等信息,我们需要对其进行读取、索引、筛选等操作。

代码如下:

import pandas as pd

# 读取csv文件
df = pd.read_csv('./student.csv', index_col=0, encoding='utf-8')
print(df.head())

# 打印前五行
print(df.head())

# 打印后五行
print(df.tail())

# 通过列名选择列
print(df['name'])

# 选择多列
print(df[['name', 'age']])

# 索引第一行
print(df.iloc[0])

# 索引前三行
print(df.iloc[:3])

# 索引指定行
print(df.loc[[1,3],['name', 'age']])

# boolean索引
print(df[df.age > 22])

# isin方法
print(df[df.city.isin(['北京','上海'])])

运行结果:

   name  age city  score
id                      
1   Tom   18   北京     98
2   Bob   20   上海     92
3   Mary  22   北京     89
4   James 21   北京     78
5   Alex  22   上海     83
   name  age city  score
id                      
1   Tom   18   北京     98
2   Bob   20   上海     92
3   Mary  22   北京     89
4   James 21   北京     78
5   Alex  22   上海     83
id
1       Tom
2       Bob
3      Mary
4     James
5      Alex
6    Maggie
Name: name, dtype: object
   name  score
id            
1   Tom     98
2   Bob     92
3  Mary     89
4  James     78
5   Alex     83
name     Tom
age       18
city      北京
score     98
Name: 1, dtype: object
   name  age city  score
id                      
1   Tom   18   北京     98
2   Bob   20   上海     92
3   Mary  22   北京     89
   name  age
id          
1   Tom   18
3  Mary  22
   name  age
id          
2   Bob   20
3  Mary  22
4  James  21
5   Alex  22
6  Maggie  19
   name  age city  score
id                      
1   Tom   18   北京     98
3  Mary  22   北京     89
4  James  21   北京     78
5   Alex  22   上海     83

以上就是Pandas索引和选择数据的完整攻略,如果想要更深入地学习,可以通过实战练习来提升自己的能力。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Pandas索引和选择数据 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • Pandas – 从多列中寻找唯一值

    当我们处理数据时可能需要在多列中查找某个唯一值,这时候就可以使用 Pandas 来完成这个任务。 假设我们有以下数据集,包含多个人的姓名、年龄、性别和职业: 名字 年龄 性别 职业 Tom 22 男 程序员 Alice 25 女 产品经理 Bob 28 男 销售 Tom 30 男 产品经理 Alice 24 女 销售 我们想要知道每位人员的职业是唯一的还是存…

    python-answer 2023年3月27日
    00
  • 如何在Pandas中计算两列之间的相关关系

    在Pandas中,我们可以使用corr()方法来计算两列之间的相关关系。该方法返回一个相关系数矩阵,可以帮助我们了解列与列之间的相关性。 下面是计算两列之间相关关系的详细步骤: Step 1: 导入Pandas库和数据 首先,我们需要导入Pandas库,并将数据加载到DataFrame中。以下是一个示例: import pandas as pd # 导入数据…

    python-answer 2023年3月27日
    00
  • 使用pandas模块实现数据的标准化操作

    使用pandas模块实现数据标准化的过程包含以下几个步骤: 导入 pandas 模块 import pandas as pd 加载数据 # 读取 csv 文件 dataframe = pd.read_csv(‘data.csv’) 标准化数据 # 标准化所有列的数据 dataframe_standardized = (dataframe – datafram…

    python 2023年5月14日
    00
  • python中pandas常用命令详解

    Python中pandas常用命令详解 什么是Pandas Pandas是基于Numpy的一个数据分析处理库,是专门为了解决数据分析任务而创建的。相比于Numpy同样能处理数值数据的数组和矩阵,Pandas可处理统计数据,序列等非数值数据。 Pandas的优势 它能为我们扩展时间序列的功能,处理常用的金融和统计数据。 提供了运算效率高的data frame数…

    python 2023年5月14日
    00
  • python 利用panda 实现列联表(交叉表)

    下面我为您详细讲解“python利用panda实现列联表(交叉表)”的完整攻略。 1. pandas中列联表的概念 列联表是一种将两个或多个分类变量交叉分类后形成的表格,用于展示它们之间的关系。pandas中列联表的实现就是通过数据透视表来实现的,它可以将一张表中的一些列作为纵坐标,将另外一些列作为横坐标,将数据值作为交叉点所显示的值,从而实现对某些分类变量…

    python 2023年5月14日
    00
  • Pandas数据框架中的重新索引

    重新索引是Pandas数据框架中的一个重要操作,可以让我们根据需要重新排序DataFrame中的行、列或者元素,或者新增或删除行、列。下面我将为大家详细介绍Pandas数据框架中的重新索引的攻略。 基本概念 在Pandas数据框架中,重新索引(reindex)是指将已有的数据从原始数据的Index序列中取出,按照新的Index序列重新排列的操作。具体而言,就…

    python-answer 2023年3月27日
    00
  • pandas去除重复列的实现方法

    首先我们先来了解一下什么是重复列。重复列是指表格中出现了相同列名的列。下面是一张含有重复列名的表格: ID Name Age ID Gender 1 Tom 18 1 Male 2 Jack 20 2 Female 在这张表格中,ID这一列出现了两次,可以认为它是一列重复列。我们有时候需要去除这些重复列,以保证表格数据的准确性和易于操作。下面介绍几种去除重复…

    python 2023年5月14日
    00
  • 如何使用Pandas打印从给定日期开始的n天的日期?

    使用Pandas可以方便地打印从给定日期开始的n天的日期,具体步骤如下: 导入Pandas库: import pandas as pd 定义日期范围: start_date = ‘2021-01-01’ # 起始日期 num_days = 10 # 要打印的天数 date_range = pd.date_range(start_date, periods=n…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部