博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandas模块学习笔记2--基本功能
阅读量:5970 次
发布时间:2019-06-19

本文共 4447 字,大约阅读时间需要 14 分钟。

一、重新索引

obj = Series([1,2,3,4],index=['a','b','c','d'])输出为:a    1b    2c    3d    4
Series有一个reindex函数,可以将索引重排,以致元素顺序发生变化
obj.reindex(['a','c','d','b','e'],fill_value = 0)  #fill_value 填充空的index的值输出为:a    1c    3d    4b    2e    0
obj2 = Series(['red','blue'],index=[0,4])  输出为:0     red4    blueobj2.reindex(range(6),method='ffill')   #method = ffill,意味着前向值填充 输出为:0     red1     red2     red3     red4    blue5    blue
对于DataFrame,reindex可以修改行(索引)、列或者两个都改。
frame = DataFrame(np.arange(9).reshape((3,3)),index = ['a','c','d'],columns = ['Ohio','Texas','California']) 输出为:   Ohio  Texas  Californiaa     0      1           2c     3      4           5d     6      7           8frame2 = frame.reindex(['a','b','c','d'])   #只是传入一列数,是对行进行reindex 输出为:   Ohio  Texas  Californiaa   0.0    1.0         2.0b   NaN    NaN         NaNc   3.0    4.0         5.0d   6.0    7.0         8.0frame4 = frame.reindex(columns=states)  # 使用columns关键字即可重新索引列输出为:   Texas  Utah  Californiaa      1   NaN           2c      4   NaN           5d      7   NaN           8frame5 = frame.reindex(index = ['a','b','c','d'],columns=states)  #同时对行、列进行重新索引输出为:   Texas  Utah  Californiaa    1.0   NaN         2.0b    NaN   NaN         NaNc    4.0   NaN         5.0d    7.0   NaN         8.0

二、丢弃指定轴上的项:

obj = Series(np.arange(3.),index = ['a','b','c']) 输出为:a    0.0b    1.0c    2.0obj.drop(['a','b'])输出为:c    2.0
frame = DataFrame(np.arange(9).reshape((3,3)),index = ['a','c','d'],columns = ['Ohio','Texas','California']) 输出为:   Ohio  Texas  Californiaa     0      1           2c     3      4           5d     6      7           8frame.drop(['a'])  #删除行输出为:   Ohio  Texas  Californiac     3      4           5d     6      7           8frame.drop(['Ohio'],axis = 1)  #删除列输出为:   Texas  Californiaa      1           2c      4           5d      7           8

三、索引、选取和过滤

Series的索引的工作方式类似于Numpy数组的索引,只不过Series的索引值不只是整数。

obj = Series([1,2,3,4],index=['a','b','c','d'])   >>>a    1b    2c    3d    4obj['b']>>> 2obj[1]>>> 2obj[0:3]>>>a    1b    2c    3obj[[0,3]]>>>a    1d    4obj[obj<2]>>>a    1

利用标签的切片运算与普通的Python切片运算不同,其末端是包含的,即封闭区间:

obj['b':'d']>>>b    2c    3d    4

DataFrame索引:对DataFrame进行索引就是获取一个或多个列:

frame = DataFrame(np.arange(16).reshape((4,4)),index = ['Ohio','Colorado','Utah','New York'],columns = ['one','two','three','four'])>>>          one  two  three  fourOhio        0    1      2     3Colorado    4    5      6     7Utah        8    9     10    11New York   12   13     14    15frame['two']>>>Ohio         1Colorado     5Utah         9New York    13frame[:2]     # 通过切片选得到的是行>>>          one  two  three  fourOhio        0    1      2     3Colorado    4    5      6     7

四、算术运算和数据对齐

pandas最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集。

s1 = Series([1,2,3],['a','b','c'])             s2 = Series([4,5,6],['b','c','d'])             s1 + s2                               >>>a    NaNb    6.0c    8.0d    NaN

对于DataFrame,对齐操作会同时发生在行和列上:

df1 = DataFrame(np.arange(12.).reshape(3,4),columns=list('abcd'))   df2 = DataFrame(np.arange(20.).reshape(4,5),columns=list('abcde'))  df1>>>     a    b     c     d0  0.0  1.0   2.0   3.01  4.0  5.0   6.0   7.02  8.0  9.0  10.0  11.0df2>>>      a     b     c     d     e0   0.0   1.0   2.0   3.0   4.01   5.0   6.0   7.0   8.0   9.02  10.0  11.0  12.0  13.0  14.03  15.0  16.0  17.0  18.0  19.0df1 + df2>>>      a     b     c     d   e0   0.0   2.0   4.0   6.0 NaN1   9.0  11.0  13.0  15.0 NaN2  18.0  20.0  22.0  24.0 NaN3   NaN   NaN   NaN   NaN NaN
下面看一下DataFrame和Series之间的计算过程:
arr = DataFrame(np.arange(12.).reshape((3,4)),columns = list('abcd'))arr>>>     a    b     c     d0  0.0  1.0   2.0   3.01  4.0  5.0   6.0   7.02  8.0  9.0  10.0  11.0Series = arr.ix[0]  #如果写arr[0]是错的,因为只有标签索引函数ix后面加数字才表示行>>>a    0.0b    1.0c    2.0d    3.0arr - Series  #默认情况下,DataFrame和Series的计算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播>>>     a    b    c    d0  0.0  0.0  0.0  0.01  4.0  4.0  4.0  4.02  8.0  8.0  8.0  8.0Series2 = Series(range(3),index = list('cdf'))>>>c    0d    1f    2arr + Series2   # #按照规则,在不匹配的列会形成NaN值>>>    a   b     c     d   f0 NaN NaN   2.0   4.0 NaN1 NaN NaN   6.0   8.0 NaN2 NaN NaN  10.0  12.0 NaNSeries3 = arr['d']>>>0     3.01     7.02    11.0# 如果想匹配行且在列上广播,需要用到算术运算方法# 传入的轴号就是希望匹配的轴,这里是匹配行索引并进行广播# axis = 0 表示按照第0轴  二维情况下表示列arr.sub(Series3,axis = 0)>>>     a    b    c    d0 -3.0 -2.0 -1.0  0.01 -3.0 -2.0 -1.0  0.02 -3.0 -2.0 -1.0  0.0

五、函数应用和映射

 

 
 

转载于:https://www.cnblogs.com/weimusan/p/7599583.html

你可能感兴趣的文章
全球范围快速成长未来十年是SaaS发展的黄金时期
查看>>
英国伯明翰大学首席教授姚新:人工智能研究应从三个问题重新考虑
查看>>
《区块链原理、设计与应用》一1.4 潜在的商业价值
查看>>
超图软件:以用户价值为源点做精准化的研发
查看>>
大数据时代 我们还有隐私吗?
查看>>
Linus Torvalds将中国亮相LinuxCon + ContainerCon + CloudOpen
查看>>
国家物流信息平台签约阿里云挖掘大数据
查看>>
SOA与云计算相结合推动企业发展
查看>>
【10大专利看iPhone未来】全息图、虚拟卷轴,移动AR……苹果还有哪些黑科技?...
查看>>
MongoDB干货篇之查询数据
查看>>
中国云计算市场加速发展 今年有望突破3000亿
查看>>
万物互联时代 能效管理是怎样一个玩法?
查看>>
alloc、init你弄懂50%了吗?
查看>>
Chrome开始集成图形识别 API(Shape Detection API)
查看>>
RFID采用率迟迟不涨,原因何在?
查看>>
重磅 |“金砖”电商报告:5年后金砖五国网络零售将超3万亿美元
查看>>
Windows Server 2016软件定义存储:Storage Spaces Direct介绍
查看>>
寄快递要在面单上写身份证号?市民担心个人信息泄露
查看>>
读懂这篇文章就懂大数据,3000字概括《大数据时代》
查看>>
Facebook市值赶超股神巴菲特公司 全美排名第五
查看>>