用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 DataFrame列中的分层索引

    Pandas DataFrame中的分层索引可以使得数据结构更加灵活,但有时候需要将列的分层索引“扁平化”,这样可以方便数据的处理和展示。本文将提供详细的步骤和实例说明。 什么是分层索引? 在Pandas DataFrame中,可以通过多维数组或元组嵌套的方式创建“分层索引”,也称为“层次化索引”。例如,在以下的DataFrame中,使用两个嵌套的列表创建了…

    python-answer 2023年3月27日
    00
  • Python读取文件夹下的所有文件实例代码

    以下是Python读取文件夹下所有文件的完整攻略,包含两条示例说明: 目录结构 首先,我们需要先了解一下读取文件夹下所有文件的原理。假设我们有一个文件夹,里面包含了多个文件和子文件夹,我们需要遍历这个文件夹,获取它内部所有的文件名。这时候,我们可以使用Python内置的os模块来实现。 基本操作 下面是一个基本的示例代码: import os # 定义文件夹…

    python 2023年5月14日
    00
  • 如何计算Pandas数据框架列的不同值

    计算Pandas数据框中某一列的不同值,可以使用Pandas库中的nunique()函数。nunique()函数会针对指定的列返回该列中不同元素的数量。 具体操作步骤如下: 导入Pandas库 import pandas as pd 创建数据框 为了说明,我们这里创建一个名为df的数据框,包含3列数据。 df = pd.DataFrame({‘name’: …

    python-answer 2023年3月27日
    00
  • pandas分组排序 如何获取第二大的数据

    要获取Pandas DataFrame中分组后的第二大数据,可以使用以下步骤: 使用groupby()方法按照需要分组的列进行分组。 对每个组使用nlargest()方法获取前两大的数据。 使用reset_index()方法,重置数据框的索引,并将“组”列转换回常规列。 使用sort_values()方法对数据进行排序。 选择第二行,即获取第二大的数据。 下…

    python 2023年5月14日
    00
  • 创建一个Pandas时间序列来显示给定年份的所有星期日

    要创建一个Pandas时间序列来显示给定年份的所有星期日,我们可以使用Pandas中的date_range函数和参数freq=”W-Sun”。下面是实现的步骤: 步骤一:导入必要模块 在代码中首先需要导入必要的Python模块,其中就包括了Pandas库: import pandas as pd 步骤二:创建日期范围 使用Pandas中的date_range…

    python-answer 2023年3月27日
    00
  • 根据最接近的DateTime合并两个Pandas DataFrames

    根据最接近的DateTime合并两个Pandas DataFrames的完整攻略分为以下几个步骤: 步骤一:导入必要的库和数据 首先需要导入必要的库和数据,其中pandas和numpy是必需的库。 具体代码实现如下: import pandas as pd import numpy as np # 读取第一个数据集 df1 = pd.read_excel(&…

    python-answer 2023年3月27日
    00
  • 如何在pandas中利用时间序列

    利用 Pandas 进行时间序列分析的完整攻略大致分为以下几个步骤: 导入 Pandas 和数据集; 将数据集中的日期转换为 Pandas 中的日期格式,并设置为索引; 对时间序列数据进行可视化; 对时间序列进行数据清洗和处理,包括处理缺失值,对数据进行填充等; 对时间序列进行重采样和聚合,比如对数据进行日、周、月等时间间隔的汇总; 对时间序列进行滚动计算,…

    python-answer 2023年3月27日
    00
  • python数据可视化Seaborn绘制山脊图

    当我们需要理解连续变量的分布并希望更好地探索其波动性和异常值时,使用Seaborn绘制山脊图是一种非常好的选择。下面是该技术的详细攻略: 一、什么是山脊图? 山脊图也被称为密度曲线图,它是一种连续的估计曲线,可以描述数据的分布和密度。山脊图可以方便地查看数据的中心、形状和离群值的存在。在Python中,我们可以使用Seaborn库绘制山脊图。 二、如何使用S…

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部