本节介绍Series和DataFrame中的数据的基本手段

  1. 重新索引

  pandas对象的一个重要方法就是reindex,作用是创建一个适应新索引的新对象

'''
Created on 2016-8-10
@author: xuzhengzhu
'''
'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------obj result:-----------------"
obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])
print obj print "--------------obj2 result:-----------------"
obj2=obj.reindex(['a','b','c','d','e'])
print obj2 print "--------------obj3 result:-----------------"
obj3=obj.reindex(['a','b','c','d','e'],fill_value=0)
print obj3

reindex

#reindex对索引值进行重排,如果当前索引值不存在,就引入缺失值
 #可以指定fill_value=0来进行缺失值的替换

--------------obj result:-----------------
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64
--------------obj2 result:-----------------
a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
--------------obj3 result:-----------------
a -5.3
b 7.2
c 3.6
d 4.5
e 0.0
dtype: float64

reindex_index

  2.插值

  对于时间序列这样的有序数据,重新索引时可能需要做一些插值处理,method选项即可达到此目的:

对于时间序列这样的有序数据,重新索引时可能需要做一些插值处理,method选项即可达到此目的:

method参数介绍
参数 说明
ffill或pad 前向填充
bfill或backfill 后向填充
'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------obj3 result:-----------------"
obj3=Series(['blue','red','yellow'],index=[0,2,4])
print obj3 print "--------------obj4 result:-----------------"
obj4=obj3.reindex(range(6),method='ffill') print obj4

ffill前向填充

--------------obj3 result:-----------------
0 blue
2 red
4 yellow
dtype: object
--------------obj4 result:-----------------
0 blue
1 blue
2 red
3 red
4 yellow
5 yellow
dtype: object

ffill结果:

  对于DataFrame数据类型,reindex可以修改行与列索引,但如果仅传入一个序列,则优先重新索引行:

'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------frame result:-----------------"
frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'],columns=['ohio','texas','california'])
print frame print "--------------frame2 result:-----------------"
frame2=frame.reindex(['a','b','c','d'])
print frame2 print "--------------frame3 result:-----------------"
frame3=frame.reindex(columns=['texas','utah','california'])
print frame3 print "--------------frame3 result:-----------------"
frame4=frame.ix[['a','b','c','d'],['texas','utah','california']]
print frame4

reindex_dataframe

--------------frame result:-----------------
ohio texas california
a 0 1 2
c 3 4 5
d 6 7 8
--------------frame2 result:-----------------
ohio texas california
a 0.0 1.0 2.0
b NaN NaN NaN
c 3.0 4.0 5.0
d 6.0 7.0 8.0
--------------frame3 result:-----------------
texas utah california
a 1 NaN 2
c 4 NaN 5
d 7 NaN 8
--------------frame3 result:-----------------
texas utah california
a 1.0 NaN 2.0
b NaN NaN NaN
c 4.0 NaN 5.0
d 7.0 NaN 8.0

reindex结果:

  3.指定轴上的项

'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------Series drop item by index:-----------------"
obj=Series(np.arange(3,8),index=['a','b','c','d','e'])
print obj obj1=obj.drop('c')
print obj1 print "--------------DataFrame drop item by index :-----------------"
frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'],columns=['ohio','texas','california'])
print frame frame1=frame.drop(['ohio'],axis=1)
print frame1

指定轴上的项

--------------Series drop item by index:-----------------
a 3
b 4
c 5
d 6
e 7
dtype: int32
a 3
b 4
d 6
e 7
dtype: int32
--------------DataFrame drop item by index :-----------------
ohio texas california
a 0 1 2
c 3 4 5
d 6 7 8
texas california
a 1 2
c 4 5
d 7 8

drop_item

#对于DataFrame,可以删除任意轴上的索引值

  4.索引,选取和过滤

  Series利用标签的切片运算与普通的python切片运算不同,其末端是包含的,

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

'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------DataFrame drop item by index :-----------------"
frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'],columns=['ohio','texas','california'])
print frame frame1=frame.drop(['ohio'],axis=1)
print frame1 print "--------------DataFrame filter item by index :-----------------"
#也可通过切片和布尔型来选取
print frame['ohio']
print frame[:2]
print frame[frame['ohio']>=3] print "--------------DataFrame filter item by index :-----------------"
#在DateFrame上进行标签索引,引入ix: 注意行标签在前,列标签在后
print frame.ix['a',['ohio','texas']]

索引选取和过滤

--------------DataFrame drop item by index :-----------------
ohio texas california
a 0 1 2
c 3 4 5
d 6 7 8
texas california
a 1 2
c 4 5
d 7 8
--------------DataFrame filter item by index :-----------------
a 0
c 3
d 6
Name: ohio, dtype: int32
ohio texas california
a 0 1 2
c 3 4 5
ohio texas california
c 3 4 5
d 6 7 8
--------------DataFrame filter item by index :-----------------
ohio 0
texas 1
Name: a, dtype: int32

结果:

 

  5.算术运算和数据对齐

'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------DataFrame drop item by index :-----------------"
s1=Series([7.3,-2.5,3.4,1.5],index=['a','c','d','e'])
s2=Series([-2.1,3.6,-1.5,4,3.1],index=['a','c','e','f','g'])
print s1+s2

算术运算和数据对齐

--------------DataFrame drop item by index :-----------------
a 5.2
c 1.1
d NaN
e 0.0
f NaN
g NaN
dtype: float64

结果:

'''
Created on 2016-8-10
@author: xuzhengzhu
'''
from pandas import * print "--------------DataFrame drop item by index :-----------------"
df1=DataFrame(np.arange(9).reshape((3,3)),columns=list('bcd'),index=['ohio','texas','colorado'])
df2=DataFrame(np.arange(12).reshape((4,3)),columns=list('bde'),index=['utah','ohio','texas','oregon']) print df1
print "--------------------" print df2 #只返回行列均匹配的数值
print "-------df1+df2-------------"
print df1+df2 #在对不同的索引对象进行算术运算时,当一个对象中某个轴标签在另一个对象中找不到时填充一个特殊值
print "-------df3-------------"
df3=df1.add(df2,fill_value=0)
print df3

对齐操作

--------------DataFrame drop item by index :-----------------
b c d
ohio 0 1 2
texas 3 4 5
colorado 6 7 8
--------------------
b d e
utah 0 1 2
ohio 3 4 5
texas 6 7 8
oregon 9 10 11
-------df1+df2-------------
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
-------df3-------------
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

结果:

python数据分析之pandas库的DataFrame应用二的更多相关文章

  1. python数据分析之pandas库的DataFrame应用一

    DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔型).DateFrame既有行索引也有列索引,可以被看作为由Series组成的字典. 构建Dat ...

  2. 利用python进行数据分析之pandas库的应用(二)

    本节介绍Series和DataFrame中的数据的基本手段 重新索引 pandas对象的一个重要方法就是reindex,作用是创建一个适应新索引的新对象 >>> from panda ...

  3. Python数据分析:pandas玩转Excel (二)

    1 对Excel文件的操作 方法一: 使用xlrd库或者xlwt库进行对excel表格的操作读与写: 方法二: pandas库同样支持excel的读写操作:且更加简便. 2 pd.read_excel ...

  4. python数据分析之pandas库的Series应用

    一.pandas的数据结构介绍 1. Series 1.1 Series是由一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据索引构成.仅由一组数据可产生最简单的Series. from p ...

  5. Python数据分析之pandas基本数据结构:Series、DataFrame

    1引言 本文总结Pandas中两种常用的数据类型: (1)Series是一种一维的带标签数组对象. (2)DataFrame,二维,Series容器 2 Series数组 2.1 Series数组构成 ...

  6. Python之使用Pandas库实现MySQL数据库的读写

      本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写.首先我们需要了解点ORM方面的知识. ORM技术   对象关系映射技术,即ORM(Object-Relational ...

  7. Pandas库之DataFrame

    Pandas库之DataFrame 1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab ...

  8. Python 数据分析:Pandas 缺省值的判断

    Python 数据分析:Pandas 缺省值的判断 背景 我们从数据库中取出数据存入 Pandas None 转换成 NaN 或 NaT.但是,我们将 Pandas 数据写入数据库时又需要转换成 No ...

  9. 【Python学习笔记】Pandas库之DataFrame

    1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matla ...

随机推荐

  1. Source Insight简介及下载破解

    对于长期混迹于.net平台的开发人员来说,研究C源码不是很常见,但是有时候我们不得不涉及c的研究,因为许多优秀的开源软件是用C/C++写就.查看C源码的利器除了VS外,还有另一个,那就是Source ...

  2. 【必备】史上最全的浏览器 CSS & JS Hack 手册(转)

    浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技能.如果有一份浏览器 Hack 手册,那查询起来就方便多了.这篇文章就向 ...

  3. ASP.NET中使用代码来进行备份和还原数据库

    ASP.NET中使用代码来进行备份和还原数据库  SQL代码: 1 2 3 4 5 -- 备份数据库 backup database db_CSManage to disk='c:\backup.ba ...

  4. 通过MD5排除重复文件

    今天下载了好多美女图片壁纸,可是看了一下发现好多图片重复了,有强迫症的我必须把重复的都给剔除掉,首先想到的当然是百度了,问问度娘有没有什么图片去重的工具,搜了一下还真有.奈何本人智商捉急用不来这高级的 ...

  5. enmo_day_07

    数据备份 物理备份 : 底层数据块 逻辑备份 :exp(export), imp(import) 导入导出工具,提取成dump文件,再将dump文件放入数据库 expdp, impdp 数据蹦 uti ...

  6. ASP.NET——生成验证码

    实现:随机生成四位数字的验证码,点击验证码可无刷新生成新的验证码,最后点击按钮进行检验 PS:本实例使用UpdatePanel实现无刷新. 前台代码: <asp:ScriptManager ID ...

  7. C# 6.0新特性(转载)

    简介 VS 2015中已经包含C# 6.0. C#在发布不同版本时,C#总是会有新特性,比如C#3.0中出现LINQ,C#4.0中的动态特性,c#5.0中的异步操作等.. C# 6.0中与增加了不少新 ...

  8. HBase with MapReduce (SummaryToFile)

    上一篇文章是实现统计hbase单元值出现的个数,并将结果存放到hbase的表中,本文是将结果存放到hdfs上.其中的map实现与前文一直,连接:http://www.cnblogs.com/ljy20 ...

  9. github的注册过程

    带着疑问打开了github.这是一个神奇的网站,因为它到处都是英语,对于我这种英语盲这简直太痛苦了.借助了百度翻译,我还是马马虎虎的完成了github的制作. 首先在它的登录界面下面有一个sign u ...

  10. RedHat不能使用ifconfig命令

    安装RedHat后,使用ifconfig命令,结果报错command not found,解决方法如下: 1.cat ~/.bash_profile     查看path 2.vi /etc/prof ...