一、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,属性

数据分析之pandas模块 Python 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  3,去重

数据分析之pandas模块 Python 第2张

  4,加法

  索引相同的加在一起,当索引不一致的项,就用NaN填充

数据分析之pandas模块 Python 第3张

  5,数据清洗

  主要用isnull()判断值是否为空,notnull()判断值是否不为空,返回的都是值为bool型的Series,然后把它作为索引,就可以把为False的值给删除。

数据分析之pandas模块 Python 第4张

  二、DataFrame

  DataFrame是一个表格型的数据结构,DataFrame由一定顺序排列的多列数据组成,设计初衷是将Series的使用场景从一维拓展到多维,DataFrame既有行索引index,也有列索引columns,值values。

  1,DataFrame的创建

  最常用的方法是传递一个字典,以字典的key为列索引,以每一个key对应的值作为对应列的数据,所以值应该是个列表。还可以指定行索引,但不可以指定列索引。

数据分析之pandas模块 Python 第5张

  2,索引和切片

  2.1 列索引

数据分析之pandas模块 Python 第6张

  2.2 行索引

数据分析之pandas模块 Python 第7张

  2.3 元素索引

数据分析之pandas模块 Python 第8张

  2.4 切片

数据分析之pandas模块 Python 第9张

  3,运算

  要保证行索引和列索引都一致才能运算,否则用NaN填充

数据分析之pandas模块 Python 第10张

  4,数据清洗

  4.1 用isnull(),notnull(),any(),all()搭配使用,得到一组bool值的Series,然后把它作为索引,就可以清洗为False的行

数据分析之pandas模块 Python 第11张

  4.2 还可以用drop(),drop系列的函数中,axis=1表示列,axis=0代表行,这和其他所有场景都是相反的

数据分析之pandas模块 Python 第12张

  4.3 上面两种清洗方法都是删除整行或者,整列,有时是不允许这样子删除。我也可以用fillna()来把空值给填上。当inplace参数设为Ture时,表示修改后的数据映射到原数据,相当于修改原数据。

数据分析之pandas模块 Python 第13张

  5,多层索引

  5.1 隐式构造,最常用的方法是给DataFrame构造函数的index或columns传递两个或多个数组。

数据分析之pandas模块 Python 第14张

  5.2 显式构造,用pd.MultiIndex.from_product

数据分析之pandas模块 Python 第15张

  5.3 索引和切片

数据分析之pandas模块 Python 第16张

  6,级联

pandas使用pd.concat(),与np.concatedate()类似,参数有些不同。
参数join:'outer'将所有的项进行级联(忽略匹配和不匹配),'inner'只会把匹配的项进行级联。

数据分析之pandas模块 Python 第17张

  由于在以后的级联的使用很多,因此有一个函数append专门用于在后面添加。

数据分析之pandas模块 Python 第18张

  7,合并

合并用merge().它和数据库中的链表差不多
merge和concat的区别在于,merge需要依据某一共同的列进行合并。
在使用merge时,会自动根据两者相同的columns,来合并
每一列元素不要求一致
参数:
how:out取并集,inner取交集
on:当两者有多列的名字相同时,我们想指定某一列进行合并,那我们就要把想指定列的名字赋给它
left_on和right_on:同时使用,当两者间没有共同的列名称时,可以分别指定

数据分析之pandas模块 Python 第19张

数据分析之pandas模块 Python 第20张

数据分析之pandas模块 Python 第21张

数据分析之pandas模块 Python 第22张

  8,删除重复元素

  使用duplicated()函数检测重复的行,返回元素为bool类型的Series对象,keep参数:指定保留哪一行重复的元素

数据分析之pandas模块 Python 第23张

  还可以使用drop_duplicates(),这也是drop系列函数。

数据分析之pandas模块 Python 第24张

  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()新建一列

数据分析之pandas模块 Python 第25张

  10.2 map()中还可以跟自定义函数

数据分析之pandas模块 Python 第26张

  11,排序

  使用take()函数排序,take接受一个索引列表,用数字表示,使得df会根据列表中索引的顺序进行排序

数据分析之pandas模块 Python 第27张

  还可以使用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属性可以查看分组情况

数据分析之pandas模块 Python 第28张

  13,高级聚合

  在分组后可以用sum(),mean()等聚合函数,其次还可以跟transform和apply函数,再给这两个函数传一个自定义函数,就可以是聚合函数以外的功能。

数据分析之pandas模块 Python 第29张

数据分析之pandas模块 Python 第30张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄