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

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

(我看的是英文新版,针对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'})

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

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

  1. python中装饰器的作用_如何理解Python装饰器

    展开全部 理解Python中的装饰器 @makebold @makeitalic def say(): return "Hello" 打印出如2113下的输出: Hello 你会怎 ...

  2. python中list作为函数参数_在python中list作函数形参,防止被实参修改的实现方法

    0.摘要 我们将一个list传入函数后,函数内部对实参修改后,形参也会随之改变.本文将主要介绍这种错误的现象.原因和解决方法. 1.代码示例 def fun(inner_lst): inner_lst ...

  3. python中怎么做分组问题_详解Python中的分组函数groupby和itertools)

    具体代码如下所示: from operator import itemgetter #itemgetter用来去dict中的key,省去了使用lambda函数 from itertools impor ...

  4. python中index方法详解_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  5. python中的怎么打出来_如何在Python中打印上标?

    我知道python中的\ xb函数,但它似乎对我不起作用.我知道我可能需要下载第三方模块来完成此任务,如果是这样,哪个是最好的?我是Python和StackOverflow的新手,因此是我的基本问题. ...

  6. python中filepath路径怎么写_详解Python中的路径问题

    1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...

  7. python中的方法什么意思_什么是Python中的“方法”?

    方法是以类实例作为其第一个参数的函数.方法是类的成员.class C: def method(self, possibly, other, arguments): pass # do somethin ...

  8. python中静态变量的作用_小白必读文章之全局变量与静态变量

    全局变量与静态变量 static 声明的变量在C语言中有两方面的特征: 1.变量被放在程序的全局存储区中,这样在下一次调用的时候还可以保持原来的赋值.这一点是它与堆栈变量和堆变量的区别. 2.变量用s ...

  9. python中var是什么变量_一、 Python概述、变量

    一.        Python概述 1.python是一门面向对象,解释型的脚本语言.语法简洁,编写效率高,但是执行(底层运行)效率低(总的来说解释语言执行效率低于编译语言). 注意:本博客所有的代 ...

最新文章

  1. c# Invoke和BeginInvoke 区别详解
  2. 论文页眉奇偶页不同怎么设置_什么!论文排版这么简单的吗?!
  3. 创建MSN界面式的Ext JS布局
  4. 数据分析师还是算法工程师|用数据多角度解读如何选择
  5. 名帖55 隋代 楷书《苏孝慈墓志》
  6. 分部积分出现积回去的情况
  7. VCC,VDD,VSS,VEE区别
  8. Android基础之十八显示gif动画,动态图片
  9. PostgreSql pg_rewind
  10. 都说it是吃青春饭的,那些35岁左右的it女技术人员(测试)都在做啥呢?转行了吗?
  11. MT6755原理图,MT6755数据表分析下载
  12. 大姨妈在运营方面积累的一些经验(3点)
  13. 程序大牛必备精品社区
  14. 前端下载xlsx文件
  15. 使用国密函数读取金税盘信息-Delphi 版
  16. 主成分分析结果成分不显著_SPSS完不成主成分分析,那就换
  17. 魔方网表CEO邵苏毅:无代码带来的一系列质变才是真正的革命
  18. IC验证学习顺序与知识点
  19. 蚂蚁算法matlab,蚁群算法(ACA)及其Matlab实现
  20. 瑞波Ripple概念解析-XRP账本业务(官方文档不完全翻译)

热门文章

  1. CSDN中的如何转载博文
  2. nn.Sequential(*modules)
  3. mysql connect by_Mysql主从库搭建
  4. JavaScript——XMLHttpResquest的简单封装
  5. BugKuCTF 杂项 签到题
  6. Codeforces 1196E Connected Component on a Chessboard
  7. Thief in a Shop
  8. java函数ao活动对象_JavaScript中的执行上下文和变量对象
  9. 【java学习】Arraylist和LinkedList使用场景与性能对比
  10. Oracle中TO_DATE格式的使用小结