DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等),DataFrame就行索引也有列索引,可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本上是平衡的。

构建DataFrame的方法有很多,最常用的一种是直接传入一个由等长列表或Numpy数组组成的字典。

结果DataFrame会自动加上索引,且全部列会被有序排列。

 In [10]: import pandas as ps

 In [11]: from pandas import DataFrame

 In [12]: data = {'state':['simple','simple','Python','Python'],'year':['','
...: 018','2019','2020'],'pop':['1','2','3','4']} In [13]: frame = DataFrame(data) In [14]: frame
Out[14]:
pop state year
0 1 simple 2017
1 2 simple 2018
2 3 Python 2019
3 4 Python 2020

如果指定列顺序,DataFrame的列就会按照指定顺序进行排列。

 In [15]: DataFrame(data,columns=['year','state','pop'])
Out[15]:
year state pop
0 2017 simple 1
1 2018 simple 2
2 2019 Python 3
3 2020 Python 4

与Series一样,如果传入的列在数据中找不到,就会产生NA值。

 In [17]: frame2 = DataFrame(data,columns=['year','state','pop','debt'],index=['o
...: ne','two','three','four']) In [18]: frame2
Out[18]:
year state pop debt
one 2017 simple 1 NaN
two 2018 simple 2 NaN
three 2019 Python 3 NaN
four 2020 Python 4 NaN In [19]: frame2.columns
Out[19]: Index([u'year', u'state', u'pop', u'debt'], dtype='object')

通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series。

 In [20]: frame2['state']
Out[20]:
one simple
two simple
three Python
four Python
Name: state, dtype: object In [21]: frame2.year
Out[21]:
one 2017
two 2018
three 2019
four 2020
Name: year, dtype: object

返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应地设置好了。行也可以通过位置或名称的方式进行获取,用索引字段ix

 In [23]: frame2.ix['three']
Out[23]:
year 2019
state Python
pop 3
debt NaN
Name: three, dtype: object

列可以通过赋值的方式进行修改,给空的‘debt’列附上一个标量值或一组值。

 In [24]: frame2['debt'] = ''

 In [25]: frame2
Out[25]:
year state pop debt
one 2017 simple 1 10
two 2018 simple 2 10
three 2019 Python 3 10
four 2020 Python 4 10

通过np.arange()为‘debt’列赋值

 In [29]: frame2['debt'] = np.arange(4.)

 In [30]: frame2
Out[30]:
year state pop debt
one 2017 simple 1 0.0
two 2018 simple 2 1.0
three 2019 Python 3 2.0
four 2020 Python 4 3.0

将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配,如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都会被填上缺失值。

 1 In [32]:  val = Series([1,3,4],index=['one','three','four'])
2
3 In [33]: frame2['debt'] = val
4
5 In [34]: frame2
6 Out[34]:
7 year state pop debt
8 one 2017 simple 1 1.0
9 two 2018 simple 2 NaN
10 three 2019 Python 3 3.0
11 four 2020 Python 4 4.0

为不存在的列赋值会创建出一个新列,关键字del用于删除列。。

 In [35]: frame2['eastern'] = frame2.state=='simple'

 In [36]: frame2
Out[36]:
year state pop debt eastern
one 2017 simple 1 1.0 True
two 2018 simple 2 NaN True
three 2019 Python 3 3.0 False
four 2020 Python 4 4.0 False In [37]: del frame2['eastern'] In [38]: frame2.columns
Out[38]: Index([u'year', u'state', u'pop', u'debt'], dtype='object')

通过索引方式返回的列知识相应数据的视图,并不是副本。因此,对返回的Series所做的任何就地修改全都会反应到源DataFrame上。通过Series的copy()即可显示地复制列

DataFrame的更多相关文章

  1. Spark的DataFrame的窗口函数使用

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 SparkSQL这块儿从1.4开始支持了很多的窗口分析函数,像row_number这些,平时写程 ...

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

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

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

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

  4. pandas.DataFrame对行和列求和及添加新行和列

    导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...

  5. pandas.DataFrame排除特定行

    使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...

  6. Spark SQL 之 DataFrame

    Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化 ...

  7. spark dataframe 类型转换

    读一张表,对其进行二值化特征转换.可以二值化要求输入类型必须double类型,类型怎么转换呢? 直接利用spark column 就可以进行转换: DataFrame dataset = hive.s ...

  8. 数据分析(9):DataFrame介绍

    DataFrame 表格型的数据结构 创建DataFrame 可以通过传入dict的方式,DataFrame会自动加上索引,并且列会有序排列 data = {'state':['a', 'b', 'c ...

  9. DataFrame格式化

    1.如果是格式化成Json的話直接 val rdd = df.toJSON.rdd 2.如果要指定格式需要自定义函数如下: //格式化具体字段条目 def formatItem(p:(StructFi ...

  10. RDD/Dataset/DataFrame互转

    1.RDD -> Dataset val ds = rdd.toDS() 2.RDD -> DataFrame val df = spark.read.json(rdd) 3.Datase ...

随机推荐

  1. (九)UIScrollView和PageControl的分页

    涉及到内容的滚动与拖拽,使用UIScrllView. 对于滚动的多张图片,由于超出屏幕,应该使用代码添加代码. 添加的细节是:图片的宽高即为滚动视图的宽高,图片的y=0,x=图片的序号乘以图片的宽度. ...

  2. Dynamics CRM 修改自定义实体名字及属性前缀(架构名称)

    本文章以2013为例(2011同理,4.0比较简单直接在系统设置的自定义中设置即可). 1.设置-->自定义项-->发布者,下图中的红框内的即为需要设置的前缀. 2.设置-->解决方 ...

  3. 《Oracle Applications DBA 基础》- 9 - Concurrent Processing

    来自:http://www.itpub.net/thread-1411293-1-4.html <Oracle Applications DBA 基础>- 9 - Concurrent P ...

  4. mysql进阶(二十一)删除表数据

    MySQL删除表数据 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句.DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNC ...

  5. Handler学习小结

    在android消息机制中Handler扮演着举足轻重的作用,(AsnyTask其实也是对Handler+Thread做了一层封装),ui线程超过5s就会报出ANR,一般耗时操作操作需要放在子线程中处 ...

  6. 打印机威胁:嵌入式Web服务有安全问题

    现在大多数打印机.扫描仪,以及VoIP系统等设备都会内建嵌入式的Web服务,这主要是为了方便管理.然而不幸的是,这些设备大多会由于设置问题而处在无保护状态下.有些服务甚至可以使用默认的帐号和密码访问, ...

  7. 【ROM修改教程】添加高级电源重启菜单(安卓4.0.4官方ROM)

    准备工作: 电脑上安装好JDK.下载smali和baksmali.下载apktools.要修改的ROM.adb工具(可选) 注:由于本教程面向的对象为有一定ROM修改基础的兄弟,所以对于如何使用电脑, ...

  8. using MR to compute PageRank

    In this post I explain how to compute PageRank using the MapReduce approach to parallelization. This ...

  9. sql中的case when then else end

    hive中的case when的用法举例 select * from (select id, count(distinct ] in ("Virus","Worm&quo ...

  10. jQuery之select的option怎样绑定事件

    HTML: <select id='select'> <option value='0'>上海</option> <option value='1'>北 ...