zoukankan      html  css  js  c++  java
  • pandas 如何选择的子集DataFrame

    import pandas as pd
    titanic = pd.read_csv("data/titanic.csv")
    
    
    #pandas 中的Series属性包含(行,列)
    
    titanic.head()   #head() 默认只显示5条
    #结果:
       PassengerId  Survived  Pclass                                               Name     Sex  ...  Parch            Ticket     Fare Cabin  Embarked
    0            1         0       3                            Braund, Mr. Owen Harris    male  ...      0         A/5 21171   7.2500   NaN         S
    1            2         1       1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  ...      0          PC 17599  71.2833   C85         C
    2            3         1       3                             Heikkinen, Miss. Laina  female  ...      0  STON/O2. 3101282   7.9250   NaN         S
    3            4         1       1       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  ...      0            113803  53.1000  C123         S
    4            5         0       3                           Allen, Mr. William Henry    male  ...      0  

    如何从中选择特定的列DataFrame


    各式各样的例子:

    1.我对泰坦尼克号乘客的年龄感兴趣
    
    ages =titanic['Age']
    ages.head()
    
    #结果
    Out[5]: 
    0    22.0
    1    38.0
    2    26.0
    3    35.0
    4    35.0
    Name: Age, dtype: float64
    
            
    #要选择单个列,请在方括号中[]加上感兴趣的列的名称
    
    #其中的每一列DataFrame都是一个Series。选择单个列后,返回的对象是#pandas DataFrame。我们可以通过检查输出的类型来验证这一点:
    
    In [6]: type(titanic["Age"])
    Out[6]: pandas.core.series.Series
        
    看看shape输出的:
    
    In [7]: titanic["Age"].shape
    Out[7]: (891,)
        
    '''
    DataFrame.shape是熊猫的属性(请记住有关读写的教程,不要使用括号表示属性)Series并且DataFrame包含行和列的数目:(行,列)。熊猫系列是一维的,仅返回行数
    '''
    #我对泰坦尼克号乘客的年龄和性别感兴趣
    
    
    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
    #要选择多列,请使用选择括号内的列名称列表[]
    
    ****************
    #注意*****
    #内方括号定义了带有列名的 Python列表,而外方括号用于从熊猫中选择数据
    In [10]: type(titanic[["Age", "Sex"]])
    Out[10]: pandas.core.frame.DataFrame
        
        
    In [11]: titanic[["Age", "Sex"]].shape
    Out[11]: (891, 2)
    '''
    该选择返回了DataFrame891行和2列。请记住,a DataFrame是二维的,具有行和列的维。
    '''
    • 如何从中过滤特定行DataFrame

    1. 我对35岁以上的乘客感兴趣
      In [12]: above_35 = titanic[titanic["Age"] > 35]
      
      In [13]: above_35.head()
      #要基于条件表达式选择行,请在选择方括号内使用条件[]
      
      #选择括号内的条件检查 列的值大于35的行:titanic["Age"] > 35Age
      
      '''
      条件表达式的输出(>,而且==, !=,<,<=,...将工作)实际上是Pandas Series布尔值的(任一True或False具有相同的行数与原始的)DataFrame。
      通过将其放在选择括号之间,Series可以使用此类布尔值来过滤。仅 将选择为其选择值的行。DataFrame[]True 其中的DataFrame是由891行组成的,通过检查结果的shape属性,看一下满足条件的行数
      ''' In [15]: above_35.shape Out[15]: (217, 12)

    2. *****isin()条件函数True为提供的列表中的值的每一行返回a
      
      我对2级和3级客舱的泰坦尼克号乘客感兴趣
      class_23 = titanic[titanic["Pclass"].isin([2, 3])]
      class_23.head()
      
      '''
      与条件表达式类似,isin()条件函数True为提供的列表中的值的每一行返回a 。要基于此类函数过滤行,请使用选择括号内的条件函数[]。
      在这种情况下,选择括号内的条件将检查列的第2 行或第3行。titanic["Pclass"].isin([2, 3])Pclass
      ''' class_23 = titanic[(titanic["Pclass"] == 2) | (titanic["Pclass"] == 3)] #这种和上面的效果是一样的 #注意!!! #组合多个条件语句是,每个条件必须用括号括起来()。而且不能使用and或or需要使用or的运算符|和and运算符&
    3. 我想使用已知年龄的乘客数据
      age_no_na = titanic[titanic["Age"].notna()]
      age_no_na.head()
      '''
      notna()条件函数返回一个True为每一行中的值不是一个Null值。这样,可以将其与选择括号结合使用[]以过滤数据表
      '''
    • 如何从中选择特定的行和列DataFrame


    1. 我对35岁以上的乘客的名字感兴趣
      adult_names = titanic.loc[titanic["Age"] > 35, "Name"]
      adult_names.head()
      
      '''
      在这种一次性创建了行和列的子集,仅使用[]已经不行,需要使用
      loc或者iloc,逗号前的部分是您想要的行,逗号后是想要选择的列
      '''
    2. 我对第10至25行和第3至5行感兴趣
       titanic.iloc[9:25, 2:5]
          
      当使用loc或选择特定的行和/或列时iloc,可以将新值分配给所选数据。例如,要将名称分配给anonymous第三列的前三个元素:
      #查找第一个到第三个数据,并且将前三列的名称改为anonymous
      titanic.iloc[0:3, 3] = "anonymous"
    3. #总结
      1)选择数据子集时,使用方括号[]。
      
      2)在这些括号内,您可以使用单个列/行标签,列/行标签列表,标签切片,条件表达式或冒号。
      
      3)loc使用行和列名称时选择特定的行和/或列
      
      4)iloc使用表格中的位置时选择特定的行和/或列
      
      5)您可以基于loc/ 为选择分配新值iloc。

     

  • 相关阅读:
    班课2
    班课2
    班课1
    lecture 2
    lecture 1
    使用node的fs读取文件
    使用Node.js搭建一个本地服务器
    Node.js前言
    简述ES6其他的东西
    ES6异步操作Thunk、co和async
  • 原文地址:https://www.cnblogs.com/u-damowang1/p/13586238.html
Copyright © 2011-2022 走看看