前言

本文主要给大家介绍了关于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 #创建Numpy p1 = np.array([1, 2, 3]) print p1 print 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()
6 3 1
#求最大值所在位置 print p1.argmax()
2
2、向量运算
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 > 2 print 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 = a a += np.array([1, 1, 1, 1]) print b
[2 3 4 5]
a = np.array([1, 2, 3, 4]) b = a a = 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] = 5 print l2 print l1
[5, 2] [1, 2, 3, 5]
p1 = np.array([1, 2, 3, 5]) p2 = p1[0:2] p2[0] = 5 print p1 print 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]
2 2
#求和是求所有元素的和 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函数也可以设置axis print p1.mean(axis=0)
[ 3.33333333 4.66666667 5.66666667]
Pandas使用
Pandas有两种结构,分别是Series和DataFrame。其中Series拥有Numpy的所有功能,可以认为是简单的一维数组;而DataFrame是将多个Series按列合并而成的二维数据结构,每一列单独取出来是一个Series。
咱们主要梳理下Numpy没有的功能:
1、简单基本使用
import pandas as pd pd1 = pd.Series([1, 2, 3]) print pd1
0 1 1 2 2 3 dtype: int64
#也可以求和和标准偏差 print pd1.sum() print pd1.std()
6 1.0
2、索引
(1)Series中的索引
p1 = pd.Series( [1, 2, 3], index = ['a', 'b', 'c'] ) print p1
a 1 b 2 c 3 dtype: int64
print p1['a']
(2)DataFrame数组
p1 = pd.DataFrame({
'name': ['Jack', 'Lucy', 'Coke'],
'age': [18, 19, 21]
})
print p1
age name 0 18 Jack 1 19 Lucy 2 21 Coke
#获取name一列 print p1['name']
0 Jack 1 Lucy 2 Coke Name: name, dtype: object
#获取姓名的第一个 print p1['name'][0]
Jack
#使用p1[0]不能获取第一行,但是可以使用iloc print p1.iloc[0]
age 18 name Jack Name: 0, dtype: object
总结:
3、apply使用
apply可以操作Pandas里面的元素,当库里面没用对应的方法时,可以通过apply来进行封装
def func(value): return value * 3 pd1 = pd.Series([1, 2, 5])
print pd1.apply(func)
0 3 1 6 2 15 dtype: int64
同样可以在DataFrame上使用:
pd2 = pd.DataFrame({
'name': ['Jack', 'Lucy', 'Coke'],
'age': [18, 19, 21]
})
print pd2.apply(func)
age name 0 54 JackJackJack 1 57 LucyLucyLucy 2 63 CokeCokeCoke
4、axis参数
Pandas设置axis时,与Numpy有点区别:
pd2 = pd.DataFrame({
'weight': [120, 130, 150],
'age': [18, 19, 21]
})
0 138 1 149 2 171 dtype: int64
#计算每一行的值 print pd2.sum(axis='columns')
0 138 1 149 2 171 dtype: int64
#计算每一列的值 print pd2.sum(axis='index')
age 58 weight 400 dtype: int64
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 + pd2
a 2.0 b NaN c 5.0 d NaN dtype: float64
出现了NAN值,如果我们期望NAN不出现,如何处理?使用add函数,并设置fill_value参数
print pd1.add(pd2, fill_value=0)
a 2.0 b 2.0 c 5.0 d 3.0 dtype: float64
同样,它可以应用在Pandas的dataFrame中,只是需要注意列与行都要对应起来。
总结
这一周学习了优达学城上分析基础的课程,使用的是Numpy与Pandas。对于Numpy,以前在Tensorflow中用过,但是很不明白,这次学习之后,才知道那么简单,算是有一定的收获。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
参考
Pandas 使用指南(上) 基本数据结构
# python
# numpy
# pandas
# numpy和pandas
# 使用
# Python Numpy实现计算矩阵的均值和标准差详解
# Python中的pandas库简介及其使用教程
# NumPy.npy与pandas DataFrame的实例讲解
# pandas中std和numpy的np.std区别及说明
# 可以使用
# 更快
# 的是
# 创建一个
# 就像
# 多个
# 之处
# 遍历
# 有一定
# 数据结构
# 它可以
# 设置为
# 这是因为
# 需要注意
# 多维
# 不同之处
# 组中
# 是一个
# 这一
# 好了
相关文章:
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在局域网内绑定自建网站域名?
如何获取上海专业网站定制建站电话?
如何制作网站标识牌,动态网站如何制作(教程)?
建站主机选购指南:核心配置优化与品牌推荐方案
javascript中的try catch异常捕获机制用法分析
网站制作企业,网站的banner和导航栏是指什么?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
建站主机SSH密钥生成步骤及常见问题解答?
广州营销型建站服务商推荐:技术优势与SEO优化解析
css网站制作参考文献有哪些,易聊怎么注册?
如何快速上传建站程序避免常见错误?
如何快速选择适合个人网站的云服务器配置?
个人网站制作流程图片大全,个人网站如何注销?
如何配置IIS站点权限与局域网访问?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
,sp开头的版面叫什么?
详解jQuery中基本的动画方法
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何在云指建站中生成FTP站点?
网站制作的步骤包括,正确网址格式怎么写?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何在云主机快速搭建网站站点?
,想在网上投简历,哪几个网站比较好?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何在阿里云高效完成企业建站全流程?
5种Android数据存储方式汇总
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
网站制作需要会哪些技术,建立一个网站要花费多少?
制作公司内部网站有哪些,内网如何建网站?
实现虚拟支付需哪些建站技术支撑?
c# 在ASP.NET Core中管理和取消后台任务
如何在建站宝盒中设置产品搜索功能?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何将凡科建站内容保存为本地文件?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
详解jQuery停止动画——stop()方法的使用
招商网站制作流程,网站招商广告语?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
红河网站制作公司,红河事业单位身份证如何上传?
大型企业网站制作流程,做网站需要注册公司吗?
如何在Windows环境下新建FTP站点并设置权限?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
北京网站制作的公司有哪些,北京白云观官方网站?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
香港服务器部署网站为何提示未备案?
做企业网站制作流程,企业网站制作基本流程有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。