数据分析之pandas模块
一、Series
类似于一位数组的对象,第一个参数为数据,第二个参数为索引(索引可以不指定,就默认用隐式索引)
Series(data=np.random.randint(1,50,(10,)))
Series(data=[1,2,3],index=('a','b','c'))
dic={'math':88,'chinese':99,'english':50}
Series(data=dic)
对于data来说,可以是列表、np数组、字典,当用字典时,字典的key会成为行索引
1,索引和切片
用中括号时,可以是显示索引,也可以是隐式索引
用句点符‘.’
用.loc[]时,只能有显示索引
用.iloc[]时,只能用隐式索引
2,属性
3,去重
4,加法
索引相同的加在一起,当索引不一致的项,就用NaN填充
5,数据清洗
主要用isnull()判断值是否为空,notnull()判断值是否不为空,返回的都是值为bool型的Series,然后把它作为索引,就可以把为False的值给删除。
二、DataFrame
DataFrame是一个表格型的数据结构,DataFrame由一定顺序排列的多列数据组成,设计初衷是将Series的使用场景从一维拓展到多维,DataFrame既有行索引index,也有列索引columns,值values。
1,DataFrame的创建
最常用的方法是传递一个字典,以字典的key为列索引,以每一个key对应的值作为对应列的数据,所以值应该是个列表。还可以指定行索引,但不可以指定列索引。
2,索引和切片
2.1 列索引
2.2 行索引
2.3 元素索引
2.4 切片
3,运算
要保证行索引和列索引都一致才能运算,否则用NaN填充
4,数据清洗
4.1 用isnull(),notnull(),any(),all()搭配使用,得到一组bool值的Series,然后把它作为索引,就可以清洗为False的行
4.2 还可以用drop(),drop系列的函数中,axis=1表示列,axis=0代表行,这和其他所有场景都是相反的
4.3 上面两种清洗方法都是删除整行或者,整列,有时是不允许这样子删除。我也可以用fillna()来把空值给填上。当inplace参数设为Ture时,表示修改后的数据映射到原数据,相当于修改原数据。
5,多层索引
5.1 隐式构造,最常用的方法是给DataFrame构造函数的index或columns传递两个或多个数组。
5.2 显式构造,用pd.MultiIndex.from_product
5.3 索引和切片
6,级联
pandas使用pd.concat(),与np.concatedate()类似,参数有些不同。
参数join:'outer'将所有的项进行级联(忽略匹配和不匹配),'inner'只会把匹配的项进行级联。
由于在以后的级联的使用很多,因此有一个函数append专门用于在后面添加。
7,合并
合并用merge().它和数据库中的链表差不多
merge和concat的区别在于,merge需要依据某一共同的列进行合并。
在使用merge时,会自动根据两者相同的columns,来合并
每一列元素不要求一致
参数:
how:out取并集,inner取交集
on:当两者有多列的名字相同时,我们想指定某一列进行合并,那我们就要把想指定列的名字赋给它
left_on和right_on:同时使用,当两者间没有共同的列名称时,可以分别指定
8,删除重复元素
使用duplicated()函数检测重复的行,返回元素为bool类型的Series对象,keep参数:指定保留哪一行重复的元素
还可以使用drop_duplicates(),这也是drop系列函数。
9 ,替换replace()
df.replace(to_replace=6,value='ww') #把所有的6换成‘ww’
df.replace(to_replace={2:6},value='ww') #把列索引为‘2’这列中‘6’换成‘ww’
df.replace(to_replace={2:6,3:9},value='ww')#把列索引为2中的6和列索引为3中的9换成‘ww’
df.replace(to_replace={6:'ww'}) #把所有的6换成‘ww’
df.replace(to_replace={6:'ww',1:'qq'}) #把所有的6换成‘ww’,把所有的1换成‘qq’
10,映射
10.1 用map()新建一列
10.2 map()中还可以跟自定义函数
11,排序
使用take()函数排序,take接受一个索引列表,用数字表示,使得df会根据列表中索引的顺序进行排序
还可以使用np.random.permutation()函数随机排序,它返回的是一个一维的随机数组,比如参数为10,就会产生0到9这10个数字,不重复的,顺序还是打乱的。
当DataFrame规模足够大时,我们就可以借助它帮我们把数据打乱,然后用take函数实现随机抽样
values = df.take(np.random.permutation(1000),axis=0).take(np.random.permutation(3),axis=1).values
上面的代码是把1000行随机打乱,然后3列随机打乱
DataFrame(data=values)这就会映射会原数据,此时的原数据就是行和列都打乱的数据
12,分类
分类就是把数据分为几个组,然后我可以对每个组进行操作,这和数据库分类是一样的效果。使用的是groupby()函数,参数by是分类的依据,groups属性可以查看分组情况
13,高级聚合
在分组后可以用sum(),mean()等聚合函数,其次还可以跟transform和apply函数,再给这两个函数传一个自定义函数,就可以是聚合函数以外的功能。
数据分析之pandas模块的更多相关文章
- 【Python 数据分析】pandas模块
上一节,我们已经安装了numpy,基于numpy,我们继续来看下pandas pandas用于做数据分析与数据挖掘 pandas安装 使用命令 pip install pandas 出现上图表示安装成 ...
- 关于Python pandas模块输出每行中间省略号问题
关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...
- Pandas模块:表计算与数据分析
目录 Pandas之Series Pandas之DataFrame 一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的. 3.p ...
- Python数据分析 Pandas模块 基础数据结构与简介(一)
pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二 ...
- Python数据分析之pandas学习
Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利 ...
- Python 数据处理扩展包: numpy 和 pandas 模块介绍
一.numpy模块 NumPy(Numeric Python)模块是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list str ...
- Pandas模块
前言: 最近公司有数据分析的任务,如果使用Python做数据分析,那么对Pandas模块的学习是必不可少的: 本篇文章基于Pandas 0.20.0版本 话不多说社会你根哥!开干! pip insta ...
- Python数据分析之pandas
Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利 ...
- 4 pandas模块,Series类
对gtx图像进行操作,使用numpy知识 如果让gtx这张图片在竖直方向上进行颠倒. 如果让gtx这张图片左右颠倒呢? 如果水平和竖直方向都要颠倒呢? 如果需要将gtx的颜色改变一下呢 ...
随机推荐
- 【APP测试(Android)】--用户体验
- 2019.02.21 bzoj2829: 信用卡凸包(凸包)
传送门 题意:给nnn个A∗BA*BA∗B的矩形,其中每个矩形的四个角被改造成了半径为rrr的四分之一 圆,问这些矩形的凸包周长. 思路:考虑求出圆心的凸包周长然后加上一个整圆的周长,证明很简单,略掉 ...
- Linux 第十一天
2)SetGID i只有可执行的二进制程序才能设置SGID权限 ii命令执行者要对该程序拥有x(执行)权限 iii命令执行在执行程序的时候,组身份升级为该程序文件的属组 iv SetGID权限同样只在 ...
- qhfl-6 购物车
购物车中心 用户点击价格策略加入购物车,个人中心可以查看自己所有购物车中数据 在购物车中可以删除课程,还可以更新购物车中课程的价格策略 所以接口应该有四种请求方式, get,post,patch,de ...
- 【手记】解决VS发布asp.net项目报错“该项目中不存在目标GatherAllFilesToPublish”及后续问题
办法在最后. 用VS2017打开一个以前用VS2010写的asp.net项目后,设置好发布选项(发布到文件夹),发布的时候报错如图: 搜索一番,找到的办法是: 在项目文件(xxx.csproj)中,在 ...
- 《Opencv 3 计算机视觉 python语言实现》· 第二遍 —— 读后笔记
概览 代码实战 https://github.com/xinghalo/ml-in-action/tree/master/book-opencv
- Linux pwn入门教程(6)——格式化字符串漏洞
作者:Tangerine@SAINTSEC 0x00 printf函数中的漏洞 printf函数族是一个在C编程中比较常用的函数族.通常来说,我们会使用printf([格式化字符串],参数)的形式来进 ...
- HashMap的源码分析
hashMap的底层实现是 数组+链表 的数据结构,数组是一个Entry<K,V>[] 的键值对对象数组,在数组的每个索引上存储的是包含Entry的节点对象,每个Entry对象是一个单链表 ...
- React.js 三周 -- 入门到搭建团队基础项目
吐槽 公司自己的产品,由于历史遗留问题,前端一直是和java放到一个项目里写的. 导致了,前端就被死死的绑在了IDEA战车上.想要看页面效果,先起几个java服务.想要调试一个改动,重启个java服务 ...
- [CocoaPods]使用Pod Lib创建
入门 我们将使用pod lib create引导过程来创建整个pod .那么让我们从初始命令开始: pod lib create MyLibrary 注意:要使用您自己的pod-template,您可 ...