利用pandas进行数据分析之二:DataFrame与Series数据结构对比
Series与DataFrame对比学习
文章为本人原创,未经同意请勿转载,http://www.cnblogs.com/smallcrystal/
Series:构建的方法,一组数组(列表或元组),利用Series(),自动生成索引。或Series(字典),值只有一列,无列索引,只有行索引
属性: .index、.values .name .index.name .values.name
>> data={'state':['ohio','ohio','ohio','nev','nev'],'year':[2000,2001,2002,2003,2004],'pop':[1.5,1.3,1.7,2.0,3.5]}
>>> pd.Series(data)
pop [1.5, 1.3, 1.7, 2.0, 3.5]
state [ohio, ohio, ohio, nev, nev]
year [2000, 2001, 2002, 2003, 2004]
dtype: object
DataFrame:构建方法:直接传入一个由等长列表或Numpy数组组成的字典,利用DataFrame(),值有多列,并有列索引
1、由数组、列表或元组组成的字典:,每个序列变成DataFrame的一列,所有序列的长度必须相同
>>> data={'state':['ohio','ohio','ohio','nev','nev'],'year':[2000,2001,2002,2003,2004],'pop':[1.5,1.3,1.7,2.0,3.5]}
>>> pd.DataFrame(data)
pop state year
0 1.5 ohio 2000
1 1.3 ohio 2001
2 1.7 ohio 2002
3 2.0 nev 2003
4 3.5 nev 2004
2、二维ndarray,可以传入行标和列标
>>> ARR=np.array([[1,2,3,4],[5,6,7,8]])
>>> ff=pd.DataFrame(ARR,columns=list('abcd'),index=['first','second'])
>>> ff
a b c d
first 1 2 3 4
second 5 6 7 8
arr=pd.DataFrame(np.arange(12).reshape(4,3),index=[],columns) #利用np.arange(12).reshape(n,m)生成二维ndarray
3、由字典组成的字典:各内层字典会成为一列,键会被合并成结果的行索引
4、由Series组成的字典,每个Series会成为一列,如果没有显示指定索引,则各Series的索引会被合并成结果的行索引
DataFrame:是一个表格型的数据结构,包含一组有序的列,每列可以是不同的值类型,既有行索引,又有列索引。
属性有DataFrame:.columns、 .index、.values
>>> pd.DataFrame(data,columns=['pop','year','state'])#指定列,则DataFrame的列就会按照指定顺序进行排列,和Series指定索引一样;
pop year state
0 1.5 2000 ohio
1 1.3 2001 ohio
2 1.7 2002 ohio
3 2.0 2003 nev
4 3.5 2004 nev
>>> pd.Series(data,index=['pop','year','state'])
pop [1.5, 1.3, 1.7, 2.0, 3.5]
year [2000, 2001, 2002, 2003, 2004]
state [ohio, ohio, ohio, nev, nev]
>>> pd.DataFrame(data,columns=['pop','other','state','add'])#如果传入的列正在数据中找不到,就会产生NA,和Series一样
pop other state add
0 1.5 NaN ohio NaN
1 1.3 NaN ohio NaN
2 1.7 NaN ohio NaN
3 2.0 NaN nev NaN
4 3.5 NaN nev NaN
>>> pd.Series(data,index=['pop','year','state','ADD'])
pop [1.5, 1.3, 1.7, 2.0, 3.5]
year [2000, 2001, 2002, 2003, 2004]
state [ohio, ohio, ohio, nev, nev]
ADD NaN
>>> pd.DataFrame(data,index=list('abcde'))#更改索引
pop state year
a 1.5 ohio 2000
b 1.3 ohio 2001
c 1.7 ohio 2002
d 2.0 nev 2003
e 3.5 nev 2004
属性
>>> f=pd.DataFrame(data,index=list('abcde'))
>>> f.index ###pandas的索引对象负责管理周标签和其他元数据(比如轴名称),index对象是不可修改的。
Index([u'a', u'b', u'c', u'd', u'e'], dtype='object')
>>> f.columns
Index([u'pop', u'state', u'year'], dtype='object')
>>> f.values#以二维ndarray的形式返回数据
array([[1.5, 'ohio', 2000],
[1.3, 'ohio', 2001],
[1.7, 'ohio', 2002],
[2.0, 'nev', 2003],
[3.5, 'nev', 2004]], dtype=object)
>>> s=pd.Series(data,index=['pop','year','state','ADD'])
>>> s.index
Index([u'pop', u'year', u'state', u'ADD'], dtype='object')
>>> s.values
array([[1.5, 1.3, 1.7, 2.0, 3.5], [2000, 2001, 2002, 2003, 2004],
['ohio', 'ohio', 'ohio', 'nev', 'nev'], nan], dtype=object)
获取列:通过类似字典标记的方式或属性的方式,将DataFrame的列获取为一个Series,返回的Series拥有原DataFrame相同的索引
>>> f['pop']#指定列,
a 1.5
b 1.3
c 1.7
d 2.0
e 3.5
>>> f.year#利用属性获取
a 2000
b 2001
c 2002
d 2003
e 2004
>>> s.year
[2000, 2001, 2002, 2003, 2004]
>>> s['year']
[2000, 2001, 2002, 2003, 2004]
>>> s[1]
[2000, 2001, 2002, 2003, 2004]
获取行:行可以通过位置或名称的方式进行索引,比如用索引字段ix
>>> f.ix['a']
pop 1.5
state ohio
year 2000
Name: a, dtype: object
#列可以通过赋值方式进行修改,或增加列,将列表或者数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配
如果是Series,就会精确匹配DataFrame的索引,所有空位都将被填上缺失值
>>> f['add']=[10,20,30,40,50]
>>> f
pop state year add
a 1.5 ohio 2000 10
b 1.3 ohio 2001 20
c 1.7 ohio 2002 30
d 2.0 nev 2003 40
e 3.5 nev 2004 50
>>> s['add']=(1,2,3,4,5)
>>> s
pop [1.5, 1.3, 1.7, 2.0, 3.5]
year [2000, 2001, 2002, 2003, 2004]
state [ohio, ohio, ohio, nev, nev]
ADD NaN
add (1, 2, 3, 4, 5)
#删除列
>>> del f['add']
#转置
>>> f.T
a b c d e
pop 1.5 1.3 1.7 2 3.5
state ohio ohio ohio nev nev
year 2000 2001 2002 2003 2004
利用pandas进行数据分析之二:DataFrame与Series数据结构对比的更多相关文章
- 利用pandas进行数据分析之三:DataFrame与Series基本功能
未经同意请勿转载http://www.cnblogs.com/smallcrystal/ 前文已经详细介绍DataFrame与Series两种数据结构,下面介绍DataFrame与Series的数据基 ...
- 利用python 学习数据分析 (学习二)
内容学习自: Python for Data Analysis, 2nd Edition 就是这本 纯英文学的很累,对不对取决于百度翻译了 前情提要: 各种方法贴: https://w ...
- 利用pandas进行数据分析之ndarray结构
Numpy的重要特点就是其N维数组对象, 1.ndarray每个元素是相同的,每个数组都有一个两个对象: .shape:用于表示维度大小的元组 .dtype:用户表示数组类型的对象 2.创建数组 ar ...
- 利用pandas进行数据分析之一:pandas数据结构Series
Series是一种类似于一维数组的对象,又一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即是索引)组成. 可以将Series看成是一个定长的有序字段,因为它是索引值到数据值的一个映射. ...
- Pandas 快速入门(二)
本文的例子需要一些特殊设置,具体可以参考 Pandas快速入门(一) 数据清理和转换 我们在进行数据处理时,拿到的数据可能不符合我们的要求.有很多种情况,包括部分数据缺失,一些数据的格式不正确,一些数 ...
- 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作
一.reindex() 方法:重新索引 针对 Series 重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析:【Pandas】(Series+DataFrame)
一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的.3.pandas的主要功能 --具备对其功能的数据结构DataFrame.S ...
- 利用python进行数据分析之pandas库的应用(二)
本节介绍Series和DataFrame中的数据的基本手段 重新索引 pandas对象的一个重要方法就是reindex,作用是创建一个适应新索引的新对象 >>> from panda ...
随机推荐
- 简单破解 Sencha Architect 2.2 (ExtJs Designer)
Sencha Architect 2是ExtJS和Sencha Touch的官方可视化IDE工具.最新版本是2.2,说是破解,其实是修改License来实现无限试用而已. 1.先下载安装官方软件,大约 ...
- OpenWrt包管理软件opkg的使用(极路由)
说明: 1.OpenWrt本身系统没什么问题,关键点是一些路由器尝试的限制,比如一些厂商设置成内存分区为只读,那么这个安装软件就变得没什么意义了. 2.opkg的操作有点反人类,正常步骤是查询,安装: ...
- 移动应用安全开发指南(Android)--完结篇
如果IE显示格式不正常,请使用chrome浏览器 1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP ...
- HDU 4687 Boke and Tsukkomi (一般图匹配带花树)
Boke and Tsukkomi Time Limit: 3000/3000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Othe ...
- Spring+JDBC实例
1. Customer 表 在这个例子中,我们使用的是MySQL数据库. CREATE TABLE `customer` ( `CUST_ID` int(10) unsigned NOT NULL A ...
- arcengine帮助http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/what_s_new_for_developers_at_10_/0001000002zp000000/
http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/what_s_new_for_develope ...
- chromium的安装程序
转自:http://www.xue163.com/182/6/1822338.html#pinglun 这篇文章主要简单讲解chromium的安装程序mini_installer 在编译mini_in ...
- WEB渗透之对于开了3389远程连接不上的总结
对于开了3389,连接不上,有几个方面的原因,我来总结下,哇咔咔,这几天提好几台服务器都TM这样,分析下, 原因1.远程桌面端口被更改.2.对方服务器处于内网. 3.防火墙拦截.4.TCP/IP安全限 ...
- win8自带输入法如何切换全角、半角操作流程
原文参考:http://jingyan.baidu.com/article/066074d6620c45c3c21cb0d3.html 曾经不知道怎么切换半角全角的时候非常抓狂(原因是不知道是半角全角 ...
- idea maven 报-source 1.5 中不支持 diamond 运算符
需要修改 project setting 中的