• 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均值
  • 相关阅读:
    React路由基本的使用(一)
    Codeforces Round #627 (Div. 3) C
    Codeforces Round #627 (Div. 3) B
    Codeforces Round #627 (Div. 3) A
    hdu2049 不容易系列之(4)——考新郎(组合,错排)
    Codeforces Round #626 (Div. 2) E. Instant Noodles(二分图,最大公因数)
    Codeforces Round #626 (Div. 2) D. Present(位运算)
    逆元的计算方法
    Educational Codeforces Round 83 D. Count the Arrays(组合,逆元,快速幂)
    hdu4460 Friend Chains(记忆化广度优先搜索)
  • 原文地址:https://www.cnblogs.com/huaobin/p/15687021.html
Copyright © 2020-2023  润新知