1.重新索引

如果reindex会根据新索引重新排序,不存在的则引入缺省:
In [3]: obj = Series([4.5,7.2,-5.3,3.6], index=["d","b","a","c"])
In [4]: obj
Out[4]:
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64
In [6]: obj2 = obj.reindex(["a","b","c","d","e"])
In [7]: obj2
Out[7]:
a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
ffill可以实现前向值填充:
In [8]: obj3 = Series(["blue","purple","yellow"], index=[0,2,4])
In [9]: obj3.reindex(range(6), method="ffill")
Out[9]:
0 blue
1 blue
2 purple
3 purple
4 yellow
5 yellow
dtype: object
2.丢弃指定轴上的项
drop方法返回在指定轴上删除了指定值的新对象:
In [12]: obj = Series(np.arange(5.), index=["a","b","c","d","e"])
In [13]: new_obj = obj.drop("c")
In [14]: new_obj
Out[14]:
a 0.0
b 1.0
d 3.0
e 4.0
dtype: float64

DataFrame可以删除任意轴上的索引值

 
3.索引,选取和过滤
Series的索引可以不止是整数:
In [4]: obj = Series(np.arange(4.), index=["a","b","c","d"])Out[6]:
a 0.0
b 1.0
dtype: float64
In [7]: obj[obj<2]
Out[7]:
a 0.0
b 1.0
dtype: float64
Series切片与普通的python切片不一样,末端也是包含的:
In [8]: obj["b":"c"]
Out[8]:
b 1.0
c 2.0
dtype: float64
DataFrame进行索引:
In [10]: data
Out[10]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
In [11]: data['two']
Out[11]:
Ohio 1
Colorado 5
Utah 9
New York 13
Name: two, dtype: int32
In [12]: data[:2]
Out[12]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
布尔型DataFrame进行索引:
In [13]: data > 5
Out[13]:
one two three four
Ohio False False False False
Colorado False False True True
Utah True True True True
New York True True True True
利用ix可以选取行和列的子集:
In [18]: data.ix['Colorado',['two','three']]
Out[18]:
two 5
three 6
Name: Colorado, dtype: int32
In [19]: data.ix[['Colorado','Utah'],[3,0,1]]
Out[19]:
four one two
Colorado 7 4 5
Utah 11 8 9
4.算数运算和数据对齐
对不同索引的对象进行算数运算,如果存在不同的索引,则结果的索引取其并集:
In [20]: s1 = Series([7.3,-2.5,3.4,1.5],index=['a','c','d','e'])
In [21]: s2 = Series([-2.1, 3.6, -1.5, 4, 3.1],index=['a','c','e','f','g'])
In [22]: s1+s2
Out[22]:
a 5.2
c 1.1
d NaN
e 0.0
f NaN
g NaN
dtype: float64
对于DataFrame,对齐操作会同时发生在行和列上:
In [26]: df1
Out[26]:
b d e
Utah 0.0 1.0 2.0
Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0
In [27]: df2
Out[27]:
b c d
Ohio 0.0 1.0 2.0
Texas 3.0 4.0 5.0
Colorado 6.0 7.0 8.0
In [28]: df1+df2
Out[28]:
b c d e
Colorado NaN NaN NaN NaN
Ohio 3.0 NaN 6.0 NaN
Oregon NaN NaN NaN NaN
Texas 9.0 NaN 12.0 NaN
Utah NaN NaN NaN NaN
使用add方法相加:
In [30]: df2.add(df1,fill_value=0)
Out[30]:
b c d e
Colorado 6.0 7.0 8.0 NaN
Ohio 3.0 1.0 6.0 5.0
Oregon 9.0 NaN 10.0 11.0
Texas 9.0 4.0 12.0 8.0
Utah 0.0 NaN 1.0 2.0
5.DataFrame和Series之间的运算:
计算二维数组和某一行的差:
In [31]: arr = np.arange(12.).reshape((3,4))
In [32]: arr
Out[32]:
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]])
In [33]: arr - arr[1]
Out[33]:
array([[-4., -4., -4., -4.],
[ 0., 0., 0., 0.],
[ 4., 4., 4., 4.]])
DataFrame和Series之间的运算:
In [35]: frame = DataFrame(np.arange(12.).reshape((4,3)),columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])
In [39]: series = frame.iloc[0]
In [40]: frame
Out[40]:
b d e
Utah 0.0 1.0 2.0
Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0
In [41]: series
Out[41]:
b 0.0
d 1.0
e 2.0
Name: Utah, dtype: float64
In [43]: frame - series
Out[43]:
b d e
Utah 0.0 0.0 0.0
Ohio 3.0 3.0 3.0
Texas 6.0 6.0 6.0
Oregon 9.0 9.0 9.0
如果某个索引值找不到,则与运算的两个对象会被重新索引以形成并集:
In [45]: frame + series2
Out[45]:
b d e f
Utah 0.0 NaN 3.0 NaN
Ohio 3.0 NaN 6.0 NaN
Texas 6.0 NaN 9.0 NaN
Oregon 9.0 NaN 12.0 NaN
匹配列并在列上广播:
In [46]: series3 = frame['d']
In [47]: frame.sub(series3, axis=0)
Out[47]:
b d e
Utah -1.0 0.0 1.0
Ohio -1.0 0.0 1.0
Texas -1.0 0.0 1.0
Oregon -1.0 0.0 1.0
6.函数应用和映射
Numpy的ufuncs也可用于操作pandas对象:
In [49]: frame = DataFrame(np.random.randn(4,3), columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])
In [50]: frame
Out[50]:
b d e
Utah 0.913051 -1.289725 -0.590573
Ohio 1.417612 -1.835357 -0.010755
Texas 0.328839 -0.121878 -1.209583
Oregon 1.315330 -1.026557 -1.777427 In [51]: np.abs(frame)
Out[51]:
b d e
Utah 0.913051 1.289725 0.590573
Ohio 1.417612 1.835357 0.010755
Texas 0.328839 0.121878 1.209583
Oregon 1.315330 1.026557 1.777427
DataFrame的apply方法可以实现将函数应用到由各行或列形成的一维数组上:
In [52]: f = lambda x:x.max() - x.min()
In [53]: frame.apply(f)
Out[53]:
b 1.088773
d 1.713479
e 1.766671
dtype: float64
In [54]: frame.apply(f, axis=1)
Out[54]:
Utah 2.202776
Ohio 3.252969
Texas 1.538421
Oregon 3.092757
dtype: float64
7.排序和排名
sort_index方法可以返回一个已排序的对象
In [57]: obj = Series(range(4), index=['d','a','b','c'])
In [58]: obj
Out[58]:
d 0
a 1
b 2
c 3
dtype: int64
In [59]: obj.sort_index
Out[59]:
<bound method Series.sort_index of d 0
a 1
b 2
c 3
dtype: int64>
In [62]: frame.sort_index()
Out[62]:
b d e
Ohio 1.417612 -1.835357 -0.010755
Oregon 1.315330 -1.026557 -1.777427
Texas 0.328839 -0.121878 -1.209583
Utah 0.913051 -1.289725 -0.590573
In [63]: frame.sort_index(axis=1)
Out[63]:
b d e
Utah 0.913051 -1.289725 -0.590573
Ohio 1.417612 -1.835357 -0.010755
Texas 0.328839 -0.121878 -1.209583
Oregon 1.315330 -1.026557 -1.777427
倒序查看:
In [65]: frame.sort_index(axis=1,ascending=False)
Out[65]:
e d b
Utah -0.590573 -1.289725 0.913051
Ohio -0.010755 -1.835357 1.417612
Texas -1.209583 -0.121878 0.328839
Oregon -1.777427 -1.026557 1.315330
按某一列的值进行排序:
In [67]: frame.sort_values(by='b')
Out[67]:
b d e
Texas 0.328839 -0.121878 -1.209583
Utah 0.913051 -1.289725 -0.590573
Oregon 1.315330 -1.026557 -1.777427
Ohio 1.417612 -1.835357 -0.010755
排名(rank)与排序类似,它会设置一个排名值,并且可以根据某种规则破坏平级关系
In [70]: obj
Out[70]:
0 7
1 -5
2 7
3 4
4 2
5 0
6 4
dtype: int64
In [71]: obj.rank()
Out[71]:
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64
根据值在原数据中出现的顺序给出排名
In [72]: obj.rank(method='first')
Out[72]:
0 6.0
1 1.0
2 7.0
3 4.0
4 3.0
5 2.0
6 5.0
dtype: float64
8.带有重复值的轴索引
使用is_unique查看值是否唯一
In [73]: obj = Series(range(5),index=['a','a','b','b','c'])
In [74]: obj
Out[74]:
a 0
a 1
b 2
b 3
c 4
dtype: int64
In [75]: obj.index.is_unique
Out[75]: False
对重复索引选取数据:
In [76]: obj['a']
Out[76]:
a 0
a 1
dtype: int64

DataFrame也是同样的道理

pandas知识点(基本功能)的更多相关文章

  1. 机器学习-Pandas 知识点汇总(吐血整理)

    Pandas是一款适用很广的数据处理的组件,如果将来从事机械学习或者数据分析方面的工作,咱们估计70%的时间都是在跟这个框架打交道.那大家可能就有疑问了,心想这个破玩意儿值得花70%的时间吗?咱不是还 ...

  2. pandas的基本功能(一)

    第16天pandas的基本功能(一) 灵活的二进制操作 体现在2个方面 支持一维和二维之间的广播 支持缺失值数据处理 四则运算支持广播 +add - sub *mul /div divmod()分区和 ...

  3. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  4. pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。

    Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questi ...

  5. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  6. pandas知识点脑图汇总

    参考文献: [1]Pandas知识点脑图汇总

  7. (数据科学学习手札134)pyjanitor:为pandas补充更多功能

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 pandas发展了如此多年,所包含的功能已 ...

  8. Python之Pandas知识点

    很多人都分不清Numpy,Scipy,pandas三个库的区别. 在这里简单分别一下: NumPy:数学计算库,以矩阵为基础的数学计算模块,包括基本的四则运行,方程式以及其他方面的计算什么的,纯数学: ...

  9. python数据分析之Pandas:基本功能介绍

    Pandas有两个主要的数据结构:Series和DataFrame. Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签构成.来看下它的使用过程 In [1]: from  ...

随机推荐

  1. 从Flux到Redux详解单项数据流

    从Flux到Redux是状态管理工具的演变过程,但两者还是有细微的区别的.但是最核心的都还是观察者模式的应用. 一.Flux 1. Flux的处理逻辑 通俗来讲,应用的状态被放到了store中,组件是 ...

  2. JS for循环删除数组元素

    $(function(){ var aa = [1,1,2,3,3,4,4,5]; alert(aa); for (var i = aa.length-1;i >= 0 ;i--) { if ( ...

  3. java与模式读后总结

    一 老规则边看边写书上的代码,磨磨蹭蹭三个多星期终于把一本1000+的java与模式看完了. 于是,在这里贴上自己对每个模式的思考和总结,其实这个东西在我边看边写的时候已经写了一大半,博文再写一次算是 ...

  4. spring boot注入error,Consider defining a bean of type 'xxx' in your configuration问题解决方案

    经常出现这问题一定是非spring生态圈的@标签 没被spring引入,如mybatis等 因为在默认情况下只能扫描与控制器在同一个包下以及其子包下的@Component注解,以及能将指定注解的类自动 ...

  5. 批量 多个JPG生产PDF .net C#

    using iTextSharp.text; using iTextSharp.text.pdf; using System; using System.Collections.Generic; us ...

  6. 使用pycharm 运行python的django项目时报错“Quit the server with CTRL-BREAK.”

    Quit the server with CTRL-BREAK.Error: [Errno 10013] 1昨晚测试时还好好的,怎么突然出现这个错误,于是GOOLE,找到个帖子说可能是端口占用了,用工 ...

  7. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )(转载)

    本文转自http://www.cnblogs.com/zery/p/3315889.html 对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本 ...

  8. SpringBoot2.0之三 优雅整合Spring Data JPA

      在我们的实际开发的过程中,无论多复杂的业务逻辑到达持久层都回归到了"增删改查"的基本操作,可能会存在关联多张表的复杂sql,但是对于单表的"增删改查"也是不 ...

  9. linux启动mysql报错 Starting MySQL... ERROR! The server quit without updating PID file (XXXX pid文件位置)

    最近在云服务器上安装mysql  启动时报错了,从错误中可以看出,定位在pid文件上,有三种解决方案 1.重启服务器:因为服务器更新时,可能会禁用某些守护进程,重启后即可恢复 2.删除配置文件,重启试 ...

  10. hibernate课程 初探单表映射1-4 hibernate开发前准备

    开发前准备: 1 eclipse 2 hibernate tools的安装(需要相关的jar包)(可以简化orm框架) hibernate tools的安装步骤: 1 到官网下载 https://so ...