zoukankan      html  css  js  c++  java
  • numpy&pandas

    numpy

    1. 将布尔数组作为掩码
      使用布尔数组作为掩码,通过该掩码选择数据的子数据集。
    x =  np.array([[5, 0, 3, 3], [7, 9, 3, 5], [2, 4, 7, 6]])
    print(x<5)
    x_new =  x[x < 5]
    
    1. 排序
      np.sort 的排序算法是快速排序,时间复杂度O(NlogN)
    x = np.array([1,8,4,5,3])
    np.sort(x)
    y = np.array([1,8,4,5,3])
    i = np.argsort(y) # 返回原始数组排好序的索引值。
    

    部分排序:有时候我们不希望对整个数组进行排序,仅仅希望找到数组中第 K 小的值,NumPy 的 np.partition 函数提供了该功能。np.partition 函数的输入是数组和数字 K,输出结果是
    一个新数组,最左边是第 K 小的值,往右是任意顺序的其他值:

    x = np.array([7, 2, 3, 1, 6, 5, 4]) 
    np.partition(x, 3)
    
    1. 实现更高级的复合类型
      NumPy 中也可以定义更高级的复合数据类型。例如,你可以创建一种类型,其中每个元素都包含一个数组或矩阵。我们会创建一个数据类型,该数据类型用 mat 组件包含一个 3×3
      的浮点矩阵:
    tp = np.dtype([('id', 'i8'), ('mat', 'f8', (3, 3))]) 
    X = np.zeros(1, dtype=tp) 
    print(X[0]) 
    print(X['mat'][0])
    

    pandas

    DataFrame 是一组Series对象的集合。

    1. 创建DataFrame对象
    #1.通过单个Series对象创建具有一个单列的DataFrame对象
    import pandas as pd
    population_dict = {'California': 38332521, 
     'Texas': 26448193, 
     'New York': 19651127, 
     'Florida': 19552860, 
     'Illinois': 12882135} 
    population = pd.Series(population_dict)
    pd.DataFrame(population, columns=['population'])
    #2. 通过字典列表创建。任何元素是字典的列表都可以变成 DataFrame。
    data = [{'a': i, 'b': 2 * i} for i in range(3)] 
    pd.DataFrame(data)
    #3. 通过 Series 对象字典创建。
    states = pd.DataFrame({'population': population, 'area': area})
    #4.通过 NumPy 二维数组创建。假如有一个二维数组,就可以创建一个可以指定行列索引值的 DataFrame。如果不指定行列索引值,那么行列默认都是整数索引值
    pd.DataFrame(np.random.rand(3, 2), 
                 columns=['foo', 'bar'], 
                 index=['a', 'b', 'c'])
    #5.通过 NumPy 结构化数组创建
    A = np.zereos(3,dtype=[('A','i8')('B','f8')]) # 8:int,f8:float
    pd.DataFrame(A)
    
    1. 索引器:loc,iloc,ix
      显式索引和隐式索引
    data = pd.Series(['a', 'b', 'c'], index=[1, 3, 5])
    #1 loc,表示取值和切片都是显式的。通过行标签索引数据
    data.loc[1] # ‘a’
    data.loc[1:3] # a b
    #2 iloc 取值和切片都是python形式的隐式索引。通过行号索引行数据
    data.iloc[1] # b
    data.iloc[1:3] # b c  # 等价于列表取值 
    # ix,loc 和 iloc的混合,主要用于DataFrame对象。 通过行标签或行号索引数据(基于loc和iloc的混合)已经被弃用。
    
    
  • 相关阅读:
    Oracle数据库死锁和MySQL死锁构造和比较
    shell单引号中输出参数值
    视频流媒体服务器
    使用syncthing进行双机文件同步
    状态(State)模式--设计模式
    中介者(调停者)模式--设计模式
    链表的中间节点
    删除链表中的倒数第N个节点
    Logos讲解--逆向开发
    MonkeyDev安装--逆向开发
  • 原文地址:https://www.cnblogs.com/leimu/p/13331675.html
Copyright © 2011-2022 走看看