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数据结构对比的更多相关文章

  1. 利用pandas进行数据分析之三:DataFrame与Series基本功能

    未经同意请勿转载http://www.cnblogs.com/smallcrystal/ 前文已经详细介绍DataFrame与Series两种数据结构,下面介绍DataFrame与Series的数据基 ...

  2. 利用python 学习数据分析 (学习二)

    内容学习自: Python for Data Analysis, 2nd Edition         就是这本 纯英文学的很累,对不对取决于百度翻译了 前情提要: 各种方法贴: https://w ...

  3. 利用pandas进行数据分析之ndarray结构

    Numpy的重要特点就是其N维数组对象, 1.ndarray每个元素是相同的,每个数组都有一个两个对象: .shape:用于表示维度大小的元组 .dtype:用户表示数组类型的对象 2.创建数组 ar ...

  4. 利用pandas进行数据分析之一:pandas数据结构Series

    Series是一种类似于一维数组的对象,又一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即是索引)组成. 可以将Series看成是一个定长的有序字段,因为它是索引值到数据值的一个映射. ...

  5. Pandas 快速入门(二)

    本文的例子需要一些特殊设置,具体可以参考 Pandas快速入门(一) 数据清理和转换 我们在进行数据处理时,拿到的数据可能不符合我们的要求.有很多种情况,包括部分数据缺失,一些数据的格式不正确,一些数 ...

  6. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  7. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  8. 利用Python进行数据分析:【Pandas】(Series+DataFrame)

    一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的.3.pandas的主要功能 --具备对其功能的数据结构DataFrame.S ...

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

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

随机推荐

  1. HDU 5292 Pocket Cube 结论题

    Pocket Cube 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5292 Description Pocket Cube is the 2×2× ...

  2. VK Cup 2015 - Round 1 E. Rooks and Rectangles 线段树 定点修改,区间最小值

    E. Rooks and Rectangles Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/problemse ...

  3. 人脸对齐SDM原理----Supervised Descent Method and its Applications to Face Alignment

    最近组里研究了SDM算法在人脸对齐中的应用,是CMU的论文<Supervised Descent Method and its Applications to Face Alignment> ...

  4. x64 寄存器使用

    http://blog.csdn.net/cosmoslife/article/details/8771773 http://blog.csdn.net/herx1/article/details/3 ...

  5. Unity3d之ScrollView实现图片浏览切换功能----折磨的学习

    由于项目需要,需要用NGUi实现一个图片浏览切换的功能,于是参考官方NGUI例子的ScrollView做了一个例子,初始看上去基本实现了自己想要的功能. 但是测试后发现当隐藏其中一张图片后,后面图片不 ...

  6. hdu 1272 小希的迷宫(java实现)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. 3月题外:关于JS实现图片缩略图效果的一个小问题

    由于3月可能要结束实习,所以应该不会有特别固定的主题,另外我会在月初陆续补上上个月的番外篇Projection和TMS,作为介绍性的内容对矢量切片部分进行补充,剩下时间不定期写一些杂烩. 最近两天在做 ...

  8. 角摩网发布在线制作Epub、Mobi格式的电子书

    原来cn的域名没有及时续约被人用了,现在用www.joymo.cc开始新的电子书制作之路. 目前支持Epub和Mobi格式,会陆续加入PDF和APK的电子书.

  9. Python学习(一)安装、环境配置及IDE推荐

    Python的安装.环境配置及IDE推荐 官网:https://www.python.org/ 版本:2.x 和 3.x 差别较大:python3是不向下兼容:版本区别可参考网官网介绍 至于选择 Py ...

  10. java中读取配置文件中的数据

    1.先在项目中创建一个包(如:config),再创建一个配置文件(如:a.properties),添加配置信息如下:比如:name=kakaage=28 2.代码:import java.io.IOE ...