【pandas】教程:3-取DataFrame子集

pandas 取 DataFrame 的子集

pandas 选择列

在这里插入图片描述

注: 引用库的导入和数据的导入只做一次,所有代码是在 jupyter notebook 里完成的。

import pandas as pd 
titanic = pd.read_csv("data/titanic.csv")
  • 只要年龄数据
ages = titanic["Age"]
ages.head()
0    22.0
1    38.0
2    26.0
3    35.0
4    35.0
Name: Age, dtype: float64

取单列的数据,直接用 [] 就可以了,每一列数据都是一个 Series,
type(ages)
pandas.core.series.Series
ages.shape
(891,)
Series 是一维的,并且只返回行

  • 取年龄和性别数据
age_sex = titanic[["Age", "Sex"]]
age_sex.head()
    Age     Sex
0  22.0    male
1  38.0  female
2  26.0  female
3  35.0  female
4  35.0    male

取多列数据,返回的是 DataFrame
type(age_sex)
pandas.core.frame.DataFrame
age_sex.shape
(891, 2)
DataFrame 是 二维的,返回行和列

pandas 选择行

在这里插入图片描述

  • 选择大于 35 岁的 乘客
above_35 = titanic[titanic["Age"] > 35]
above_35.head()

除了 >, 例如 ==, !=, < 等等,都可以进行数据的过滤选择,
titanic["Age"] > 35 生成的是 布尔值Series

  • 选择 2舱和3舱的乘客
class_23 = titanic[titanic["Pclass"].isin([2, 3])]
class_23.head()
   PassengerId  Survived  Pclass                            Name     Sex  \
0            1         0       3         Braund, Mr. Owen Harris    male   
2            3         1       3          Heikkinen, Miss. Laina  female   
4            5         0       3        Allen, Mr. William Henry    male   
5            6         0       3                Moran, Mr. James    male   
7            8         0       3  Palsson, Master. Gosta Leonard    male   

    Age  SibSp  Parch            Ticket     Fare Cabin Embarked  
0  22.0      1      0         A/5 21171   7.2500   NaN        S  
2  26.0      0      0  STON/O2. 3101282   7.9250   NaN        S  
4  35.0      0      0            373450   8.0500   NaN        S  
5   NaN      0      0            330877   8.4583   NaN        Q  
7   2.0      3      1            349909  21.0750   NaN        S  

与条件式相似, isin() 返回的是真,
上面的 titanic[titanic["Pclass"].isin([2, 3])]titanic[(titanic["Pclass"] == 2) | (titanic["Pclass"] == 3)] 的效果是一样的。
结合多个条件时,每个条件应用 () 包起来, 并用 |& 连接起来。

  • 选择 非空 数据
age_no_na = titanic[titanic["Age"].notna()]
age_no_na.head()

notna() 非空数据 返回真。

从 DataFrame 里选择特殊的行和列

在这里插入图片描述

  • 选择大于 35 岁 乘客的名字
adult_names = titanic.loc[titanic["Age"] > 35, "Name"]
adult_names.head()
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 列的数据
titanic.iloc[10:25, 3:5]
                                                 Name     Sex
10                    Sandstrom, Miss. Marguerite Rut  female
11                           Bonnell, Miss. Elizabeth  female
12                     Saundercock, Mr. William Henry    male
13                        Andersson, Mr. Anders Johan    male
14               Vestrom, Miss. Hulda Amanda Adolfina  female
15                   Hewlett, Mrs. (Mary D Kingcome)   female
16                               Rice, Master. Eugene    male
17                       Williams, Mr. Charles Eugene    male
18  Vander Planke, Mrs. Julius (Emelia Maria Vande...  female
19                            Masselmani, Mrs. Fatima  female
20                               Fynney, Mr. Joseph J    male
21                              Beesley, Mr. Lawrence    male
22                        McGowan, Miss. Anna "Annie"  female
23                       Sloper, Mr. William Thompson    male
24                      Palsson, Miss. Torborg Danira  female

取到对应的行和列后,可以对他们直接赋值。

记住

    1. 选择数据的子集,用 []
    1. 在括号里,可以用列或者行标签,或者一系列标签,或者条件表达式
    1. 在使用行和列名时,使用loc选择特定的行和/或列。
    1. 在使用表中的位置时,使用iloc选择特定的行和/或列。
    1. 可以根据loc/iloc为选定对象赋新值。

【参考】

  1. 03_subset_data
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄金旺铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值