• 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。

     

  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/u-damowang1/p/13586238.html
Copyright © 2020-2023  润新知