使用Pandas选择数据子集的方法示例

 更新时间:2024年03月27日 08:46:30   作者:Alex_StarSky  
有时数据读入后并不是对整体数据进行分析,而是数据中的部分子集,所以,该如何根据特定的条件实现数据子集的获取将是本节的主要内容,本文给大家介绍了使用Pandas选择数据子集的方法示例,需要的朋友可以参考下

数据分析-Pandas如何选择数据子集

Dataframe的数据中,选择某一列,某一行,或者某个子区域,该怎么办呢?

选择一个属性列维度

比如,Titanic 数据表中,如果仅仅对乘客感兴趣,可以这样操作:

In [4]: ages = titanic["Age"]

In [5]: ages.head()
Out[5]: 
0    22.0
1    38.0
2    26.0
3    35.0
4    35.0
Name: Age, dtype: float64

In [6]: type(titanic["Age"])
Out[6]: pandas.core.series.Series

In [7]: titanic["Age"].shape
Out[7]: (891,)

选择多个属性列维度

比如,Titanic 数据表中,想选择多个属性进行组合研究,不仅仅对乘客感兴趣,还需要知道性别,可以这样操作:

In [8]: age_sex = titanic[["Age", "Sex"]]

In [9]: age_sex.head()
Out[9]: 
    Age     Sex
0  22.0    male
1  38.0  female
2  26.0  female
3  35.0  female
4  35.0    male

In [10]: type(titanic[["Age", "Sex"]])
Out[10]: pandas.core.frame.DataFrame

In [11]: titanic[["Age", "Sex"]].shape
Out[11]: (891, 2)

筛选属性值集合

比如,Titanic 数据表中,对乘客的年龄大于35岁的集合感兴趣

In [12]: above_35 = titanic[titanic["Age"] > 35]

In [13]: above_35.head()
Out[13]: 
    PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
1             2         1       1  ...  71.2833   C85         C
6             7         0       1  ...  51.8625   E46         S
11           12         1       1  ...  26.5500  C103         S
13           14         0       3  ...  31.2750   NaN         S
15           16         1       2  ...  16.0000   NaN         S

[5 rows x 12 columns]

In [15]: above_35.shape
Out[15]: (217, 12)

事实上,括号内的条件其实是一个真值列表:

In [14]: titanic["Age"] > 35
Out[14]: 
0      False
1       True
2      False
3      False
4      False
       ...  
886    False
887    False
888    False
889    False
890    False
Name: Age, Length: 891, dtype: bool

此外,还对乘客的座舱等级感兴趣,筛选等级2,3的,可以这样操作:

In [16]: class_23 = titanic[titanic["Pclass"].isin([2, 3])]

In [17]: class_23.head()
Out[17]: 
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
2            3         1       3  ...   7.9250   NaN         S
4            5         0       3  ...   8.0500   NaN         S
5            6         0       3  ...   8.4583   NaN         Q
7            8         0       3  ...  21.0750   NaN         S

[5 rows x 12 columns]

# 等价于:
In [18]: class_23 = titanic[(titanic["Pclass"] == 2) | (titanic["Pclass"] == 3)]

In [19]: class_23.head()
Out[19]: 
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
2            3         1       3  ...   7.9250   NaN         S
4            5         0       3  ...   8.0500   NaN         S
5            6         0       3  ...   8.4583   NaN         Q
7            8         0       3  ...  21.0750   NaN         S

[5 rows x 12 columns]

此外,在数据清洗中经常用到,把NA值或者非NA值筛选出来,另做处理,可以这样操作:

In [20]: age_no_na = titanic[titanic["Age"].notna()]

In [21]: age_no_na.head()
Out[21]: 
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

[5 rows x 12 columns]

In [22]: age_no_na.shape
Out[22]: (714, 12)

筛选特定行和列维度集合

比如,Titanic 数据表中,对乘客的年龄大于35岁的名字感兴趣,

In [23]: adult_names = titanic.loc[titanic["Age"] > 35, "Name"]

In [24]: adult_names.head()
Out[24]: 
1     Cumings, Mrs. John Bradley (Florence Briggs Th...
6                               McCarthy, Mr. Timothy J
11                             Bonnell, Miss. Elizabeth
13                          Andersson, Mr. Anders Johan
15                     Hewlett, Mrs. (Mary D Kingcome) 
Name: Name, dtype: object

如果对第10-25行,3到5列感兴趣,可以这样操作:

In [25]: titanic.iloc[9:25, 2:5]
Out[25]: 
    Pclass                                 Name     Sex
9        2  Nasser, Mrs. Nicholas (Adele Achem)  female
10       3      Sandstrom, Miss. Marguerite Rut  female
11       1             Bonnell, Miss. Elizabeth  female
12       3       Saundercock, Mr. William Henry    male
13       3          Andersson, Mr. Anders Johan    male
..     ...                                  ...     ...
20       2                 Fynney, Mr. Joseph J    male
21       2                Beesley, Mr. Lawrence    male
22       3          McGowan, Miss. Anna "Annie"  female
23       1         Sloper, Mr. William Thompson    male
24       3        Palsson, Miss. Torborg Danira  female

[16 rows x 3 columns]

以上代码只是一个简单示例,示例代码中的表达式和变量范围也可以根据实际问题进行修改。

到此这篇关于使用Pandas选择数据子集的方法示例的文章就介绍到这了,更多相关Pandas选择数据子集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python smtplib发送多个email联系人的实现

    python smtplib发送多个email联系人的实现

    这篇文章主要介绍了python smtplib发送多个email联系人的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • python使用xpath获取页面元素的使用

    python使用xpath获取页面元素的使用

    本文主要介绍了python使用xpath获取页面元素的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 对python中类的继承与方法重写介绍

    对python中类的继承与方法重写介绍

    今天小编就为大家分享一篇对python中类的继承与方法重写介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python列表append和+的区别浅析

    Python列表append和+的区别浅析

    这篇文章主要介绍了Python列表append和+的区别浅析,本文得出一的结论是使用append实际是修改一个列表,使用+实际是创建一个新的列表,需要的朋友可以参考下
    2015-02-02
  • python 布尔注入原理及渗透过程示例

    python 布尔注入原理及渗透过程示例

    这篇文章主要介绍了python 布尔注入原理及渗透过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • python删除过期文件的方法

    python删除过期文件的方法

    这篇文章主要介绍了python删除过期文件的方法,涉及Python日期与文件的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • Keras中的两种模型:Sequential和Model用法

    Keras中的两种模型:Sequential和Model用法

    这篇文章主要介绍了Keras中的两种模型:Sequential和Model用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python的endswith()的使用方法及实例

    python的endswith()的使用方法及实例

    这篇文章主要介绍了python的endswith()的使用方法及实例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • python判断图片宽度和高度后删除图片的方法

    python判断图片宽度和高度后删除图片的方法

    这篇文章主要介绍了python判断图片宽度和高度后删除图片的方法,涉及Python中os模块与Image模块的相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • Django + Uwsgi + Nginx 实现生产环境部署的方法

    Django + Uwsgi + Nginx 实现生产环境部署的方法

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。这篇文章主要介绍了Django + Uwsgi + Nginx 实现生产环境部署,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论