python科学运算库numpy,pandas学习记录

13 篇文章 1 订阅

Python中对数组修剪至少可以通过两种方式:

>>> import numpy as np
>>> 
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[a>5] = 5   #方法1:通过布尔判断剔除不合要求的值
>>> a
array([0, 1, 2, 3, 4, 5, 5, 5, 5, 5])
>>> b = np.arange(10)
>>> b.clip(0,5)  #方法2:通过clip(上区间,下区间),将不在区间内的值修剪掉,
                 #小于下区间的用下区间值代替,大于上区间的用上区间值代替
array([0, 1, 2, 3, 4, 5, 5, 5, 5, 5])
>>> 

对csv数据中不符合值的删除,小搜了一下,发现大多只讲了删除已知索引或已知columns的值的删除,我想做的是如果一行中有不符合的值,则删除整行,当然,这是在数据比较大的情况下的操作,不然删除整行就容易造成数据缺失。
我采取的是这样的操作。

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

data = pd.read_csv('myData.csv')
data.describe()
#根据desceibe()统计数据,发现某一列,假设为该列column='wherecn',最大值和75%比例的值相差很大,因此
#以该列的75%值为最大值,假设为100,如果data中'wherecn'中的某个数值大于该75%值,则删该值所在的行。
data[data['wherecn'] > 100] = np.nan
cleanedData = data.dropna() #此时的cleanedData即是所要的去除了不合要求的值所在的行的数据了。

我用的是先利用bool值将不合要求的值改变为NAN,然后再利用drop.na()将其删除,用了一次转换,其实应该有直接舍弃的方法,但是目前还没get到,这是我现在能想到的最好的方法了,记录之。

需要读入中文数据时,如果乱码则可能是编码问题可以通过加入encoding解决:

data = pd.read_csv('myData.csv',encoding='gb2312')

用pandas中的DataFrame时选取行或列:

import numpy as np
import pandas as pd
from pandas import Sereis, DataFrame
data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
data['w']  #选择表格中的'w'列,使用类字典属性,返回的是Series类型
data.w    #选择表格中的'w'列,使用点属性,返回的是Series类型
data[['w']]  #选择表格中的'w'列,返回的是DataFrame属性
data[['w','z']]  #选择表格中的'w'、'z'列
data[0:2]  #返回第1行到第2行的所有行,前闭后开,包括前不包括后
data[1:2]  #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
       #如果采用data[1]则报错
data.ix[1]  #返回第2行的另一种方法,不过与上一种方法不同的是该方法返回的是一个series
data.ix[1:2] #返回第2行的第三种方法,返回的是DataFrame,跟data[1:2]同
data['a':'b']  #利用index值进行切片,返回的是**前闭后闭**的DataFrame, 
        #即末端是包含的  

数组创建函数

array     将输入数据(列表,元组,数组或其他序列类型)转换为ndarray。要么推断出dtype,要么显式指定dtype。默认直接复制输入数据

asarray    将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制

arange  类似于内置的range,但返回的是一个ndarray而不是列表

ones、ones_like 根据指定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组

zeros、zeros_like  类似于ones和ones_like,只不过产生的是全0数组

empty、empty_like 创建新数组,只分配内存空间但不填充任何值

eye、identity  创建一个正方的N*N单位矩阵(对角线为1,其余为0

numpy中的通用函数:

一元函数
abs   fabs   计算整数,浮点数或复数的绝对值,对于非复数值,可以使用更快的fabs

sqrt          计算各元素的平方根,相当于 arr ** 0.5

square        计算各元素的平方,相当于 arr ** 2

exp      计算各元素的指数e^x

log,log10,log2,log1p    分别为自然对数(底数为e)、底数为10log、底数为2loglog1+x)

sign  计算各元素的正负号:1(正数)、0(零)、-1(负数)

ceil 计算各元素的ceiling值,即大于等于该值的最小整数

floor 计算各元素的floor值,即小于该值的最大整数

rint  将各元素值四舍五入到最接近的整数,保留dtype

modf  将数组的小数和整数部分以两个独立的数组的形式返回

isnan  返回一个表示“哪些值是NaN(这不是一个数字not a number)”的布尔型数组

isfinite/isinf  分别返回一个表示“哪些元素是有穷的(非inf非NaN)”或“哪些元素是
无穷的”的布尔型数组

cos/cosh/sin/sinh/tan/tanh  普通型和双曲型三角函数

arccos/arccosh/arcsin/arcsinh/arctan/arctanh  反三角函数

logical_not   计算各元素not x的真值,相当于-arr


二元函数
add   将数组中对应的元素相加

subtract   从第一个数组中减去第二个数组中的元素

multiply  数组元素相乘

divide、floor_divide  除法或向下圆整除法(丢弃余数)

power    对第一个数组中的元素A,根据第二个数组中的相应元素B,计算A^B

maximum、fmax  元素级的最大值计算。fmax将忽略NaN

minimum、fmin 元素级的最小值计算。fmin将忽略NaN

mod    元素级的求模计算(除法的余数)

copysign    将第二个数组中的值得符号复制给第一个数组中的值

greater、greater_equal、less、less_equal、equal、not_equal  执行元素级的比较运算,最终产生布尔型数组、相当于缀运算符>、>=、<、<=、==、!=

logical_and、logical_or、logical_xor 执行元素级的真值逻辑运算。相当于中缀运算符&、|、^

numpy基本数组统计方法

sum     对数组中全部或某轴向的元素求和,零长度的数组的sum0

mean   算数平均数。零长度的数组的mean为NaN

std、var   分别为标准差和方差,自由度可调,默认为n

minmax   最大值和最小值

argmin、argmax   分别为最大和最小元素的索引

cumsum  所有元素的累积和

cumprod   所有元素的累积积

数组的集合运算

unique(x) 计算x中的唯一蒜素,并返回有序结果

intersect1d(x,y)  计算xy中的公共元素,并返回有序结果

union1d(x,y)  计算xy的并集,并返回有序结果

in1d(x,y)  得到一个表示“x的元素是否包含于y”的布尔型数组

setdiff1d(x,y)  集合的差,即元素在x中且不在ysetxor1d(x,y)  集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素,即抑或

常见的numpy.linalg函数

diag   以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0dot  矩阵乘法

trace  计算对角线元素的和

det   计算矩阵行列式

eig  计算方阵的本征值和本征向量

inv   计算方阵的逆

pinv  计算矩阵的Moore-Penrose伪逆

qr    计算QR分解

svd   计算奇异值分解(SVDsolve  解线性方程组Ax=b,其中A为一个方阵

lstsq   计算Ax=b的最小二乘解

部分numpy.random函数
(numpy.random.normal(size=(4,4)))

seed  确定随机数生成器的种子

permutation   返回一个序列的随机排列或返回一个随机排列的范围

shuffle    对一个序列就地随机排列

rand   产生均匀分布的样本值

randint   从给定的上下限范围内随机选取整数

randn    产生正态分布(平均值为0,标准差为1)的样本值

binomial    产生二项分布的样本值

normal    产生正态(高斯)分布的样本值

beta   产生Beta分布的样本值

chisquare 产生卡方分布的样本值

gamma  产生Gamma分布的样本值

uniform   产生在[0,1)中均匀分布的样本值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值