时间:2021-05-22
前言
本文主要给大家介绍了关于python中Numpy和Pandas使用的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
它们是什么?
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
List、Numpy与Pandas
Numpy与List
相同之处:
不同之处:
Pandas与Numpy
相同之处:
不同之处:Pandas拥有Numpy一些没有的方法,例如describe函数。其主要区别是:Numpy就像增强版的List,而Pandas就像列表和字典的合集,Pandas有索引。
Numpy使用
1、基本操作
import numpy as np#创建Numpyp1 = np.array([1, 2, 3])print p1print p1.dtype[1 2 3]int64#求平均值print p1.mean()2.0#求标准差print p1.std()0.816496580928#求和、求最大值、求最小值print p1.sum()print p1.max()print p1.min()631#求最大值所在位置print p1.argmax()22、向量运算
p1 = np.array([1, 2, 3])p2 = np.array([2, 5, 7])#向量相加,各个元素相加print p1 + p2[ 3 7 10]#向量乘以1个常数print p1 * 2[2 4 6]#向量相减print p1 - p2[-1 -3 -4]#向量相乘,各个元素之间做运算print p1 * p2[ 2 10 21]#向量与一个常数比较print p1 > 2[False False True]3、索引数组
首先,看下面一幅图,理解下
然后,咱们用代码实现看下
a = np.array([1, 2, 3, 4, 5])print a[1 2 3 4 5]b = a > 2print b[False False True True True]print a[b][3 4 5]a[b]中,只会保留a中所对应的b位置为True的元素
4、原地与非原地
咱们先来看一组运算:
a = np.array([1, 2, 3, 4])b = aa += np.array([1, 1, 1, 1])print b[2 3 4 5]a = np.array([1, 2, 3, 4])b = aa = a + np.array([1, 1, 1, 1])print b[1 2 3 4]从上面结果可以看出来,+=改变了原来数组,而+没有。这是因为:
5、Numpy中的切片与List的切片
l1 = [1, 2, 3, 5]l2 = l1[0:2]l2[0] = 5print l2print l1[5, 2][1, 2, 3, 5]p1 = np.array([1, 2, 3, 5])p2 = p1[0:2]p2[0] = 5print p1print p2[5 2 3 5][5 2]从上可知,List中改变切片中的元素,不会影响原来的数组;而Numpy改变切片中的元素,原来的数组也跟着变了。这是因为:Numpy的切片编程不会创建一个新数组出来,当修改对应的切片也会更改原始的数组数据。这样的机制,可以让Numpy比原生数组操作更快,但编程时需要注意。
6、二维数组的操作
p1 = np.array([[1, 2, 3], [7, 8, 9], [2, 4, 5]])#获取其中一维数组print p1[0][1 2 3]#获取其中一个元素,注意它可以是p1[0, 1],也可以p1[0][1]print p1[0, 1]print p1[0][1]22#求和是求所有元素的和print p1.sum()41[10 14 17]但,当设置axis参数时,当设置为0时,是计算每一列的结果,然后返回一个一维数组;若是设置为1时,则是计算每一行的结果,然后返回一维数组。对于二维数组,Numpy中很多函数都可以设置axis参数。
#获取每一列的结果print p1.sum(axis=0)[10 14 17]#获取每一行的结果print p1.sum(axis=1)[ 6 24 11]#mean函数也可以设置axisprint p1.mean(axis=0)[ 3.33333333 4.66666667 5.66666667]Pandas使用
Pandas有两种结构,分别是Series和DataFrame。其中Series拥有Numpy的所有功能,可以认为是简单的一维数组;而DataFrame是将多个Series按列合并而成的二维数据结构,每一列单独取出来是一个Series。
咱们主要梳理下Numpy没有的功能:
1、简单基本使用
import pandas as pdpd1 = pd.Series([1, 2, 3])print pd10 11 22 3dtype: int64#也可以求和和标准偏差print pd1.sum()print pd1.std()61.02、索引
(1)Series中的索引
p1 = pd.Series( [1, 2, 3], index = ['a', 'b', 'c'])print p1a 1b 2c 3dtype: int64print p1['a'](2)DataFrame数组
p1 = pd.DataFrame({ 'name': ['Jack', 'Lucy', 'Coke'], 'age': [18, 19, 21]})print p1 age name0 18 Jack1 19 Lucy2 21 Coke#获取name一列print p1['name']0 Jack1 Lucy2 CokeName: name, dtype: object#获取姓名的第一个print p1['name'][0]Jack#使用p1[0]不能获取第一行,但是可以使用ilocprint p1.iloc[0]age 18name JackName: 0, dtype: object总结:
3、apply使用
apply可以操作Pandas里面的元素,当库里面没用对应的方法时,可以通过apply来进行封装
def func(value): return value * 3pd1 = pd.Series([1, 2, 5])print pd1.apply(func)0 31 62 15dtype: int64同样可以在DataFrame上使用:
pd2 = pd.DataFrame({ 'name': ['Jack', 'Lucy', 'Coke'], 'age': [18, 19, 21]})print pd2.apply(func) age name0 54 JackJackJack1 57 LucyLucyLucy2 63 CokeCokeCoke4、axis参数
Pandas设置axis时,与Numpy有点区别:
5、分组
pd2 = pd.DataFrame({ 'name': ['Jack', 'Lucy', 'Coke', 'Pol', 'Tude'], 'age': [18, 19, 21, 21, 19]})#以年龄分组print pd2.groupby('age').groups{18: Int64Index([0], dtype='int64'), 19: Int64Index([1, 4], dtype='int64'), 21: Int64Index([2, 3], dtype='int64')}6、向量运算
需要注意的是,索引数组相加时,对应的索引相加
pd1 = pd.Series( [1, 2, 3], index = ['a', 'b', 'c'])pd2 = pd.Series( [1, 2, 3], index = ['a', 'c', 'd'])print pd1 + pd2a 2.0b NaNc 5.0d NaNdtype: float64出现了NAN值,如果我们期望NAN不出现,如何处理?使用add函数,并设置fill_value参数
print pd1.add(pd2, fill_value=0)a 2.0b 2.0c 5.0d 3.0dtype: float64同样,它可以应用在Pandas的dataFrame中,只是需要注意列与行都要对应起来。
总结
这一周学习了优达学城上分析基础的课程,使用的是Numpy与Pandas。对于Numpy,以前在Tensorflow中用过,但是很不明白,这次学习之后,才知道那么简单,算是有一定的收获。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
参考
Pandas 使用指南(上) 基本数据结构
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就
在python中,用于数组拼接的主要来自numpy包,当然pandas包也可以完成。而,numpy中可以使用append和concatenate函数:1.建立数
环境:numpy,pandas,python3在机器学习和深度学习的过程中,对于处理预测,回归问题,有时候变量是时间,需要进行合适的转换处理后才能进行学习分析,
Pandas是Python中非常常用的数据处理工具,使用起来非常方便。它建立在NumPy数组结构之上,所以它的很多操作通过NumPy或者Pandas自带的扩展模
在此记录自己学习python数据分析过程中学到的一些数据处理的小技巧。1.数据的读取#导入numpy库和pandas库importnumpyasnpimport