pandas_series03

  1. 获取series中给定索引的元素(items)
    ser = pd.Series(list('abcdefghijklmnopqrstuvwxyz'))
    index = [0, 4, 8, 14, 20]
    
    # 获取指定索引的元素
    
        ser.take(index)
        
        #>	0     a
        	4     e
        	8     i
        	14    o
        	20    u
        	dtype: object
    
  2. 如何垂直和水平的拼接series
    ser1 = pd.Series(range(5))
    ser2 = pd.Series(list('abcde'))
    
    # 垂直拼接
    df = pd.concat([ser1, ser2], axis=0)
    
    # 水平拼接
    
        df = pd.concat([ser1, ser2], axis=1)
        print(df)
        
        #>       0  1
            0  0  a
            1  1  b
            2  2  c
            3  3  d
            4  4  e

    15.如何获取series对象A中包含series对象B元素的位置

    # ser1必须包含ser2,否则会报错
    ser1 = pd.Series([10, 9, 6, 5, 3, 1, 12, 8, 13])
    ser2 = pd.Series([1, 3, 10, 13])
    
    # 方法 1
    [np.where(i == ser1)[0].tolist()[0] for i in ser2]
    
    # 方法 2
    [pd.Index(ser1).get_loc(i) for i in ser2]
    
    #> [5, 4, 0, 8]
    16.如何计算series之间的均方差
    truth = pd.Series(range(10))
    pred = pd.Series(range(10)) + np.random.random(10)
    
    # 均方差
    np.mean((truth-pred)**2)
    
    #> 0.25508722434194103

    17.如何使series中每个元素的首字母为大写

    # series的元素为str类型
    ser = pd.Series(['how', 'to', 'kick', 'ass?'])
    
    # 方法 1
    ser.map(lambda x: x.title())
    
    # 方法 2 ,字符串相加
    ser.map(lambda x: x[0].upper() + x[1:])
    
    # 方法 3
    
        pd.Series([i.title() for i in ser])
        
        #>    0     How
            1      To
            2    Kick
            3    Ass?
            dtype: object

    18.如何计算series中每个元素的字符串长度

    ser = pd.Series(['how', 'to', 'kick', 'ass?'])
    
    # 方法
    
        ser.map(lambda x: len(x))
        
        #>    0    3
            1    2
            2    4
            3    4
            dtype: int64

    19.如何计算series的一阶导和二阶导

    ser = pd.Series([1, 3, 6, 10, 15, 21, 27, 35])
    
    # 求一阶导并转化为列表类型
    print(ser.diff().tolist())
    # 求二阶导并转化为列表类型
    
     print(ser.diff().diff().tolist())
     
     #>    [nan, 2.0, 3.0, 4.0, 5.0, 6.0, 6.0, 8.0]
         [nan, nan, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0]

    20.如何将一系列日期字符串转换为timeseries

     ser = pd.Series(['01 Jan 2010', '02-02-2011', '20120303', '2013/04/04', '2014-05-05', '2015-06-06T12:20'])
     
     pd.to_datetime(ser)
     
     #>    0   2010-01-01 00:00:00
         1   2011-02-02 00:00:00
         2   2012-03-03 00:00:00
         3   2013-04-04 00:00:00
         4   2014-05-05 00:00:00
         5   2015-06-06 12:20:00
         dtype: datetime64[ns]
    1. 如何从一个series中获取至少包含两个元音的元素
      ser = pd.Series(['Apple', 'Orange', 'Plan', 'Python', 'Money'])
      
      # 方法
      
          from collections import Counter
          # Counter是一个类字典类型,键是元素值,值是元素出现的次数,满足条件的元素返回True
          mask = ser.map(lambda x: sum([Counter(x.lower()).get(i, 0) for i in list('aeiou')]) >= 2)
          ser[mask]
          
          #>    0     Apple
              1    Orange
              4     Money
              dtype: object
      1.   fruit = pd.Series(np.random.choice(['apple', 'banana', 'carrot'], 10))
            weights = pd.Series(np.linspace(1, 10, 10))
            
            \# 根据fruit对weight分组
            weightsGrouped = weights.groupby(fruit)
            print(weightsGrouped.indices)
            \# 对分组后series求每个索引的平均值
             weightsGrouped.mean()
            
              #>    {'apple': array([0, 3], dtype=int64), 'banana': array([1, 2, 4, 8],
                 dtype=int64), 'carrot': array([5, 6, 7, 9], dtype=int64)}
             #>    apple     2.50
                banana    4.75
                carrot    7.75
                dtype: float64
        如何计算根据另一个series分组后的series均值
原文地址:https://www.cnblogs.com/huaobin/p/15687021.html