python中的array函数作用_数据分析的python基底(3)——array、Series、DataFrame笔记...

《利用python进行数据分析》的第4、5章介绍了两个非常重要的包,NumPy和Pandas,这篇文章是我看这两章做的笔记,只列了要点和我觉得要留意的地方。

电子书和配套代码,还有一些学习资源,猴子在这里都提供拉:猴子:如何学习《利用python进行数据分析》这本书?​zhuanlan.zhihu.comv2-549ed25a36def7a04f915f6d57768971_120x160.jpg

(我看的是英文新版,针对Python3,信我,英语过四级的绝对能看懂,别怕!)

Ch4. NumPy

NumPy包中最重要的对象是多维数组(ndarray),数组里的数据叫元胞(cell)。

ndarray(简称array)

数组内元胞必须是同种数据类型,shape-查看行列,.dtype-查看元胞类型,.ndim-查看维度。修改元胞类型可用.astype(np.float64),这个方法可以把string类型的数值转换成纯数值。

构造方法

(不加dtype参数的话默认创建float64类型)list转array,np.array,指定元素类型:arr = np.array([1,1,2], dtype = np.int32),注:元素等长的list转换成array会变成多维

np.zeros(shape),单个数字就是一维的,两个是二维(行,列)

np.empty((length,shape)),例np.empty((2,2,3)),只分配地址,不赋初值

np.full((shape),fill_value)

np.arange(5),结果是array([0,1,2,3,4])

arr2 = np.ones_like(arr1) 或zeros_like(arr1),

np.random.normal(size=(4,4)),标准正态分布array最重要的特征是“向量化”,等长的array间能进行数学运算。

array的切片和list不同,array的切片不是copy,而是映射view,提取切片修改它的数值原始的array也会被修改!要想复制可用arr[5:8].copy()。切片里可以直接用判断语句,如data[data < 0]

一个神奇的功能:可以用boolean判断得到的True作为数组的下标,但boolean数组必须与目标数组等长,返回的是copy,例子:

4. “fancy index” :arr[[1, 5, 7, 2], [0, 3, 1, 2]],这里选择的是(1,0),(5,3),(7,1),(2,2)

5. array.T,最正常的转置。transpose和swapaxes用shape去理解,<详细例子理解> 如:transpose(2,1,0) = shape[0,1,3]—>[3,1,0] , swapaxes(2,1) = shape[0,1,3]—>[0,3,1]

array里一些好用的函数np.where(条件con,替代值x,替代值y),相当于语句x if con else y. 例如np.where(arr>0, 2, arr),数组arr中大于0的元胞变成2,其他不变。

求统计值系列:.mean/sum/cumsum(累加)/cumprod(累乘)/min/max/std/var(方差)…...可带参数axis指定计算方向,0列1行。(这样能实现统计学上的降维,估计是为了建模时拟合度更好。)

排序sort(1),参数0列1行

集合属性系列:仅对一维数组有效

Ch5. Pandas

Series

Series就是带索引(index)的一维array,开头的S必须大写。

构造方法obj = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])。不带参数的话默认使用数字索引0、1、2….(这里,为了避免数字索引和行数混淆,如果索引是int,在切片时默认[]内是索引而不是行数)

.Series(dict) 传入字典,key自动作为索引

关于索引注意,用[索引]切片时左右都是闭区间,如obj['b':'c']是b和c行,用行数切片时是左闭右开,如obj[1:3]是1、2行

可以通过索引访问、修改元素,多个索引这样表示:s[['a','c']]

可以直接新增元素,obj['d'] = 6

s.index查看索引和类型(索引不是非要int)对Series使用函数,作用的是Series的copy,要赋值后才会改变Series本尊,比如s.reindex(['b','a','d','c'])修改下标,s本身不会变,要s=s.reindex(['b','a','d','c'])才行。

常用isnull, notnull查缺失值,.sort_index默认按行升序

关于axis的特别提醒

看了一些例子后搞不清楚axis=1到底是按行还是按列。。其实正确来记axis应该被当做动词理解,就是axis=0代表往跨行(down),而axis=1代表跨列(across),

换句话说:使用0值表示沿着每一列或行标签\索引值向下执行方法

使用1值表示沿着每一行或者列标签方向执行对应的方法

DataFrame

理解成“表”,每一列的数据可以是不同类型,每一列是一个Series。列索引叫column,行索引叫index,它们还能有更具体的名字表达实际含义,(看起来更像一张表了)例子:

构造方法np.DataFrame(),传入等长字典(嵌套字典也行)、list或者array,可指定参数column与index

读取文件,比如.read_csv(),.read_Excel()

增删改查由列索引读取某列数据:df.name或df['name']。'name'列不存在的话直接df['name']=[…]就会创建,但df.name不行。

由行、列索引读取:df.loc['a':'c',’age‘],a\c是行索引,age列索引

由行数、列数读取:如df.iloc[1]是第二行,df.iloc[2,[0,1]]是第三行的一、二列

df[(df.class =='second') & (df.age < 20)],[]里写查询条件,或者用query函数里写SQL语句:df.query('(age < 20) and (class=="second")')

联合起来用,df.iloc[ :,:3 ][ df.age>5 ],在指定区域查找

粗暴地删除某列用 del df['age']或 df.drop('age',axis=1),删除某行 df.drop(行索引)。如果想只删除age列为14,15,16的某几行可以这样写:df=df[(True-df['age'].isin([14,15,16]))] ,参考自<这里>

修改某列Series的类型,df.age = df.age.astype('str') (牢记上面提到的函数对Series的copy起作用)。

一些函数

排序 .sort_value(by=[索引])

.rename(index= ,columns= ),实际上当做“复制df”来用而不是中文字面的重命名。会创建copy而不是更改本尊,如果想直接改本尊请带上inplace=True参数。还可以在参数中更改特定的index,如

data.rename(index={'OHIO': 'INDIANA'},

columns={'three': 'peekaboo'})

在实际练习中遇到疑难会再补充

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值