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

    numpy:

    import numpy as np

    1. np.array([1,2,3]) 创建数组
    2. np.arange(10).reshape(2,5) 类似于range(起始,终止,步长),可以加reshape(2,5)定义形状。必须是相乘等于前面的size
    3. np.linsapace(1,10,10) 参数为:起始,终止,平分多少个
    4. zeros((2,4)) 根据指定形状和dtype创建全0数组
    5. ones((2,4)) 根据指定形状和dtype创建全1数组
    6. empty((2,4)) 根据指定形状和dtype创建空数组(随机值)
    7. eye(5) 根据指定边长和dtype创建单位矩阵 5*5的矩阵,从0开始的的对角线为1,其他为0
    8. arr[0:2,1:3] 多维数据的切片 逗号前是行,后面是列


    布尔型索引:

    • 给一个数组,选出数组中所有大于5的数和偶数。
    • 答案:arr[(a>5) & (a%2==0)] 或是| 非是~
    • 花式索引*
    • 对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
    • 答案:arr[[1,3,4,6,7]]
    • 对一个二维数组,选出其第一列和第三列,组成新的二维数组。
    • 答案:a[:,[1,3]] 解读:行全取,列要1,3

    常见通用函数:

    二元函数:

    浮点数特殊值:

    • 浮点数:float
    • 浮点数有两个特殊值:
    • nan(Not a Number):不等于任何浮点数(nan != nan) 例如:0/0 或者 负数开根号
    • inf(infinity):比任何浮点数都大 例如:4/0 为无限大
    • 在数据分析中,nan常被用作表示数据缺失值

    常用函数:

    • sum 求和
    • cumsum 求前缀和
    • mean 求平均数
    • std 求标准差
    • var 求方差
    • min 求最小值
    • max 求最大值
    • argmin 求最小值索引
    • argmax 求最大值索引


    随机数生成函数在np.random子包内
    常用函数

    • rand 给定形状产生随机数组(0到1之间的数)
    • randint 给定形状产生随机整数
    • choice 给定形状产生随机选择
    • shuffle 与random.shuffle相同
    • uniform 给定形状产生随机数组

    pandas:

    • pandas的主要功能
    • 具备对其功能的数据结构DataFrame、Series
    • 集成时间序列功能
    • 提供丰富的数学运算和操作
    • 灵活处理缺失数据

    Series

    • Series是一种类似于一位数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。
    • 创建方式:
    pd.Series([4,7,-5,3]) 
    结果:	0 4
    1 7
    2 -5
    3 3
    pd.Series([4,7,-5,3],index=['a','b','c','d']) 
    结果:	a 4
    b 7
    c -5
    d 3
    pd.Series({'a':1, 'b':2}) 
    结果:	a 1
    b 2	
    pd.Series(0, index=['a','b','c','d’])
    a 0
    结果:	b 0
    c 0
    d 0
    

      


    获取值数组和索引数组:values属性和index属性
    Series比较像列表(数组)和字典的结合体。

    Series支持数组的特性:

    • 从ndarray创建Series:Series(arr)
    • 与标量运算:sr*2
    • 两个Series运算:sr1+sr2
    • 索引:sr[0], sr[[1,2,4]]
    • 切片:sr[0:2](切片依然是视图形式)
    • 通用函数:np.abs(sr)
    • 布尔值过滤:sr[sr>0]
    • 统计函数:mean() sum() cumsum()

    Series支持字典的特性(标签):

    • loc
    • 从字典创建Series:Series(dic),
    • in运算:’a’ in sr、for x in sr
    • 键索引:sr['a'], sr[['a', 'b', 'd']]
    • 键切片:sr['a':'c']
    • 其他函数:get('a', default=0)等

    loc属性 以标签解释
    iloc属性 以下标解释

    如何在两个Series对象相加时将缺失值设为0?

    • sr1.add(sr2, fill_value=0)
    • Series缺失数据 NaN
    • dropna() 过滤掉值为NaN的行
    • fillna() 填充缺失数据
    • isnull() 返回布尔数组,缺失值对应为True : 布尔值索引
    • notnull() 返回布尔数组,缺失值对应为False
    • 过滤缺失数据:sr.dropna() 或 sr[data.notnull()]
    • 填充缺失数据:fillna(0)

    DataFrame

    • 创建方式:
    • pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})
    • pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']), 'two':pd.Series([1,2,3,4],index=['b','a','c','d'])})

    DataFrame使用索引切片

    • 方法1:两个中括号,先取列再取行。 df['A'][0]
    • 方法2(推荐):使用loc/iloc属性,一个中括号,逗号隔开,先取行再取列。
    • loc属性:解释为标签
    • iloc属性:解释为下标
    • 向DataFrame对象中写入值时只使用方法2
    • 行/列索引部分可以是常规索引、切片、布尔值索引、花式索引任意搭配。(注意:两部分都是花式索引时结果可能与预料的不同)

    通过标签获取:

    • df['A']
    • df[['A', 'B']]
    • df['A'][0]
    • df[0:10][['A', 'C']]
    • df.loc[:,['A','B']]
    • df.loc[:,'A':'C']
    • df.loc[0,'A']
    • df.loc[0:10,['A','C']]

    通过位置获取:

    • df.iloc[3]
    • df.iloc[3,3]
    • df.iloc[0:3,4:6]
    • df.iloc[1:5,:]
    • df.iloc[[1,2,4],[0,3]]

    通过布尔值过滤:

    • df[df['A']>0]
    • df[df['A'].isin([1,3,5])]
    • df[df<0] = 0

    DataFrame数据对齐与缺失数据
    DataFrame处理缺失数据的相关方法:

    • dropna(axis=0,where='any',…)
    • fillna()
    • isnull()
    • notnull()

    pandas常用方法(适用Series和DataFrame):

    • mean(axis=0,skipna=False)
    • sum(axis=1)
    • sort_index(axis, …, ascending) 按行或列索引排序
    • sort_values(by, axis, ascending) 按值排序
    • NumPy的通用函数同样适用于pandas
    • apply(func, axis=0) 将自定义函数应用在各行或者各列上 ,func可返回标量或者Series
    • applymap(func) 将函数应用在DataFrame各个元素上
    • map(func) 将函数应用在Series各个元素上

  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/niehaidong111/p/8098161.html
Copyright © 2011-2022 走看看