![f71efdb0f75e5e84e2b27a384f968968.png](https://img-blog.csdnimg.cn/img_convert/f71efdb0f75e5e84e2b27a384f968968.png)
Numpy和Pandas的关系:
- 二者都是Python的三方库
- Numpy是基本的数值计算库
- Pandas是处理不同变量的表格计算的库
- Pandas有两个核心数据结构series 和 dataFrame 一个dataframe可以包含多个series
- 两者相辅相成,pandas一些数据处理库是建立在numpy基础上的。
Numpy
为什么需要用到它?
因为Python中的array模块,不支持多维和运算模块,不适合做数值计算;
Numpy提供两种基本对象:
- ndarray N维数组对象,是存储单一数据类型的多维数组;
- ufunc,是对数组进行处理的函数。
输入数组并打印:
![8d0c518892f22c154eda29752d22ccca.png](https://img-blog.csdnimg.cn/img_convert/8d0c518892f22c154eda29752d22ccca.png)
指定数组类型:
![5b39bd9fb66ccd05a635c3e150903e08.png](https://img-blog.csdnimg.cn/img_convert/5b39bd9fb66ccd05a635c3e150903e08.png)
查看这个数组的类别:
![3d19bc1864b46b63d297e06639d91b33.png](https://img-blog.csdnimg.cn/img_convert/3d19bc1864b46b63d297e06639d91b33.png)
可以看到数组是ndarray。
查看到它其实是一个序列:
![0d280e77b7df0a90f275d3794477f263.png](https://img-blog.csdnimg.cn/img_convert/0d280e77b7df0a90f275d3794477f263.png)
索引数组中的元素:
![1e4afa6bb6480c23ea41f0b3d2cb40db.png](https://img-blog.csdnimg.cn/img_convert/1e4afa6bb6480c23ea41f0b3d2cb40db.png)
这个数组中第0个元素是1。
重新给第0个元素赋值,并打印:
![cfbe316f161fa41cbadbf885c42a83c5.png](https://img-blog.csdnimg.cn/img_convert/cfbe316f161fa41cbadbf885c42a83c5.png)
建立数组,打印,并查看数组类型:
![a174c384953b2506faeda25820dabd59.png](https://img-blog.csdnimg.cn/img_convert/a174c384953b2506faeda25820dabd59.png)
查看shape:
![8e025a9d8838aa4b3390b63cfd2b68dc.png](https://img-blog.csdnimg.cn/img_convert/8e025a9d8838aa4b3390b63cfd2b68dc.png)
2行3列。
二维数组索引 a[行号,列号]:
![f0cbb491f94b1519e46b1b28e9a17742.png](https://img-blog.csdnimg.cn/img_convert/f0cbb491f94b1519e46b1b28e9a17742.png)
特殊数组:
Numpy.zeros()
分别生成一维序列,和二维(2行4列)
![9e8aafe0eb8c00a66578f9b3030b53a0.png](https://img-blog.csdnimg.cn/img_convert/9e8aafe0eb8c00a66578f9b3030b53a0.png)
D = numpy.zeros([2,4]) 和D = numpy.zeros((2,4))一样
Numpy.ones()
全1数组:
![133b9f596062e96926e4d12c978f0ff9.png](https://img-blog.csdnimg.cn/img_convert/133b9f596062e96926e4d12c978f0ff9.png)
Numpy.full():
生成全是某个值的数组
![6ec454e429942594fe7c5df9e62368ea.png](https://img-blog.csdnimg.cn/img_convert/6ec454e429942594fe7c5df9e62368ea.png)
Numpy.eye():
单位矩阵,由于单位矩阵行列相同,所以只需要输入一个数字:
![aa2ee81c614b1813a641b6c580c174f4.png](https://img-blog.csdnimg.cn/img_convert/aa2ee81c614b1813a641b6c580c174f4.png)
numpy.random.random():
随机数组:
![73c3ec03a9d047203f303fa090d0bf74.png](https://img-blog.csdnimg.cn/img_convert/73c3ec03a9d047203f303fa090d0bf74.png)
切片和索引:
![65984c6fcef07addfe383db5717539eb.png](https://img-blog.csdnimg.cn/img_convert/65984c6fcef07addfe383db5717539eb.png)
a[0:2,0:4],意思是索引从第0行到第1行,第0列到第3列。
间隔提取:
![e6a74deed7abd0ceae879114754e9b69.png](https://img-blog.csdnimg.cn/img_convert/e6a74deed7abd0ceae879114754e9b69.png)
第一个冒号前后表示开始和结束位置,第二个冒号后面表示间隔的大小。
使用其他序列来索引:
![b40909dff235a120e4d01f58ed21f98d.png](https://img-blog.csdnimg.cn/img_convert/b40909dff235a120e4d01f58ed21f98d.png)
冒号写法不同的区别:
![0d157315ddd68e961e6090f5c30ec9e7.png](https://img-blog.csdnimg.cn/img_convert/0d157315ddd68e961e6090f5c30ec9e7.png)
可以看到上面一种方式,输出的是2维数组,下面一种却是1维序列。
分别输出第0个元素:
![4c08458ed6894efead616b286828ae44.png](https://img-blog.csdnimg.cn/img_convert/4c08458ed6894efead616b286828ae44.png)
四种读取多维数组元素的方式:
![36e3da4fa03136a2928701d895928bd1.png](https://img-blog.csdnimg.cn/img_convert/36e3da4fa03136a2928701d895928bd1.png)
![dd4b5e90460d15c2a1eded9642ff8a26.png](https://img-blog.csdnimg.cn/img_convert/dd4b5e90460d15c2a1eded9642ff8a26.png)
总结这4种方法,原则就是定义清楚行列号。
Bool索引:
![6e982ababb614543becbe2489316308c.png](https://img-blog.csdnimg.cn/img_convert/6e982ababb614543becbe2489316308c.png)
创建数组函数:
Numpy.arange(start , stop, step, dtype)
生成序列:
![82fbf39d8dad70d3feeec9982f0e4b21.png](https://img-blog.csdnimg.cn/img_convert/82fbf39d8dad70d3feeec9982f0e4b21.png)
numpy.linspace(start,stop,num,endpoint,retstep,dtype):
![a8d2fc3f1d3c61777c9de16c69c8e216.png](https://img-blog.csdnimg.cn/img_convert/a8d2fc3f1d3c61777c9de16c69c8e216.png)
numpy.logspace(start,stop,num,endpoint,base,dtype):
![a8d30d500d8de5a4d113a33ac6d3a017.png](https://img-blog.csdnimg.cn/img_convert/a8d30d500d8de5a4d113a33ac6d3a017.png)
Pandas:
pandas的数据类型主要是:Series和DataFrame:
Series:
可以和pandas生成的序列对比查看:
![22f4c2777f73bbe97f3385cb5540bdb9.png](https://img-blog.csdnimg.cn/img_convert/22f4c2777f73bbe97f3385cb5540bdb9.png)
DataFrame:
生成一个3行4列dataframe
![ae4b06c047100b08a0155f448bca320b.png](https://img-blog.csdnimg.cn/img_convert/ae4b06c047100b08a0155f448bca320b.png)
取第0列两种方法:
![c633b24b1b1492fcacdeac9add21800b.png](https://img-blog.csdnimg.cn/img_convert/c633b24b1b1492fcacdeac9add21800b.png)
生成数据时制定列名和index:
![3f936c4f93e8e15e028606376a352373.png](https://img-blog.csdnimg.cn/img_convert/3f936c4f93e8e15e028606376a352373.png)
拼接序列:
![605a06ed809424eab04ef6054532260e.png](https://img-blog.csdnimg.cn/img_convert/605a06ed809424eab04ef6054532260e.png)
给dataframe添加列:
![5104abf021839e98ea5c8e2fd9a304ce.png](https://img-blog.csdnimg.cn/img_convert/5104abf021839e98ea5c8e2fd9a304ce.png)
查看列名、index和值:
![f530f29740ca78e3d5e22733739d5cff.png](https://img-blog.csdnimg.cn/img_convert/f530f29740ca78e3d5e22733739d5cff.png)
Loc和iloc的区别:loc通过索引访问,iloc通过行和列标访问:
![d62b5aa80380bc2376bf419b85a5d02a.png](https://img-blog.csdnimg.cn/img_convert/d62b5aa80380bc2376bf419b85a5d02a.png)
![0e0ca4525ec332048c4d2ed9755a8633.png](https://img-blog.csdnimg.cn/img_convert/0e0ca4525ec332048c4d2ed9755a8633.png)
重命名列名:
![3329149571e7121f6c691e4e9b2b63c4.png](https://img-blog.csdnimg.cn/img_convert/3329149571e7121f6c691e4e9b2b63c4.png)
dropna(axis=1,how=’all’):这个意思是,删除列,当这列所有为空时才删除。当how=’any’,表示只要有空就删除,且注意,dropna并不是删除原数据,只是新生成了一个dataframe。
fillna(0):表示用0去替换。
fillna(note[‘5’.mean()]):用这列的均值去填充空值。
以上即为pandas和numpy的数据结构总结,再花点时间学习一下各自的计算函数,这两个包就熟悉得差不多了。