用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数据框架并进行子串匹配包括以下几个步骤: 导入Pandas库:在Python中使用Pandas进行数据处理时,需要先导入Pandas库。 import pandas as pd 创建数据框架:将数据读入Pandas数据框架中。可以从CSV或Excel文件中读入或直接手动创建。 # 从CSV文件中读入数据 df = pd.read_csv(‘d…

    python-answer 2023年3月27日
    00
  • 详解pandas映射与数据转换

    详解pandas映射与数据转换攻略 Pandas是Python中非常流行的数据处理和分析库。Pandas中提供了很多方便易用的数据转换和映射功能,帮助我们快速对数据进行处理。本文将详细讲解Pandas中映射和转换的相关功能,以及示例说明。 Part 1 映射 1.1 映射原理 映射(Mapping)是一种比较常用的数据转换技术。在Pandas中,映射是对某一…

    python 2023年5月14日
    00
  • pandas中read_csv、rolling、expanding用法详解

    pandas中read_csv、rolling、expanding用法详解 在 pandas 中,我们经常需要读取 csv 文件并使用滚动窗口或扩展窗口分析数据。在本文中,我们将详细讲解使用 pandas 中的 read_csv、rolling 和 expanding 方法。 read_csv方法 read_csv 方法是 pandas 中读取 csv 文件…

    python 2023年5月14日
    00
  • Pandas读取MySQL数据到DataFrame的方法

    这篇文章将详细讲解如何使用Pandas读取MySQL数据到DataFrame的方法。Pandas是一个在Python中非常流行的数据处理工具,而MySQL则是一个流行的关系型数据库。通过将这两个工具结合起来,我们可以轻松地将MySQL中的数据读取到Pandas的DataFrame中,利用DataFrame进行进一步的数据分析工作。 步骤一:安装必备的Pyth…

    python 2023年5月14日
    00
  • 在Pandas-Dataframe中获取行或列的最小值及其索引位置

    获取Pandas-DataFrame中行或列的最小值及其索引位置的攻略如下: 获取行最小值及其索引位置 使用DataFrame.min()方法获取DataFrame每列的最小值,再使用Series.min()方法获取最小值,最后使用Series.idxmin()方法获取最小值的索引位置。 示例代码如下: import pandas as pd # 创建Dat…

    python-answer 2023年3月27日
    00
  • 使用Pandas的Series方法绘制图像教程

    下面是使用Pandas的Series方法绘制图像的完整攻略。 第一步:导入Pandas和Matplotlib库 import pandas as pd import matplotlib.pyplot as plt 第二步:创建Series对象 data = pd.Series([1, 3, 5, 7, 9]) 第三步:绘制线形图 data.plot() p…

    python 2023年5月14日
    00
  • 分享一个Python 遇到数据库超好用的模块

    请允许我为大家详细讲解一下“分享一个Python 遇到数据库超好用的模块”的完整攻略。 1. 简介 在Python编程中,我们经常需要使用到数据库进行数据的读写操作,而不同的数据库需要用不同的模块来进行访问。在这种情况下,为了使用方便,我们可以选择使用一个能够同时支持多种数据库的模块,这样我们就可以在不同的项目中使用同一套代码进行数据库操作了。今天,我想向大…

    python 2023年6月13日
    00
  • pandas.DataFrame的pivot()和unstack()实现行转列

    当我们在pandas中处理表格数据时,经常需要进行行列互换的操作,以更方便地对数据进行分析和处理。在这种情况下,可以使用pivot方法和unstack方法对数据进行行列转换。 1. pivot方法 pivot方法可以将某一列作为索引,将另一列作为列名,并将第三列的值填充到相应的单元格中。下面是使用pivot方法进行行列转换的示例: import pandas…

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