DataFrame
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的更多相关文章
- Spark的DataFrame的窗口函数使用
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 SparkSQL这块儿从1.4开始支持了很多的窗口分析函数,像row_number这些,平时写程 ...
- 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作
一.reindex() 方法:重新索引 针对 Series 重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- pandas.DataFrame对行和列求和及添加新行和列
导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...
- pandas.DataFrame排除特定行
使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...
- Spark SQL 之 DataFrame
Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化 ...
- spark dataframe 类型转换
读一张表,对其进行二值化特征转换.可以二值化要求输入类型必须double类型,类型怎么转换呢? 直接利用spark column 就可以进行转换: DataFrame dataset = hive.s ...
- 数据分析(9):DataFrame介绍
DataFrame 表格型的数据结构 创建DataFrame 可以通过传入dict的方式,DataFrame会自动加上索引,并且列会有序排列 data = {'state':['a', 'b', 'c ...
- DataFrame格式化
1.如果是格式化成Json的話直接 val rdd = df.toJSON.rdd 2.如果要指定格式需要自定义函数如下: //格式化具体字段条目 def formatItem(p:(StructFi ...
- RDD/Dataset/DataFrame互转
1.RDD -> Dataset val ds = rdd.toDS() 2.RDD -> DataFrame val df = spark.read.json(rdd) 3.Datase ...
随机推荐
- C 语言内存区域分配(进程的各个段)详解
C语言可执行代码结构 名称 内容 代码段 可执行代码.字符串常量 数据段 已初始化全局变量.已初始化全局静态变量.局部静态变量.常量数据 BSS段 未初始化全局变量,未初始化全局静态变量 栈 ...
- Android下VideoView的研究
VideoView继承自SurfaceView,实现了MediaController.MediaPlayerControl的接口.在android系统中的包名为android.widget.Video ...
- Spring AOP (二)
下面介绍@AspectJ语法基础 一.切点表达式函数 AspectJ的切点表达式由关键字和操作参数组成,如execution(* greetTo(..)) 的切点表达式,execution为关键字,而 ...
- 安装nodejs中遇到的问题
make clean 出现时间不对的问题的时候,主要是系统时间设置错误. 用date -s 来分别设置日期和时间 用clock -w来写入CMS 安装g++ yum -y install gcc-c+ ...
- [转]Maven如何手动添加jar包到本地Maven仓库
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项 ...
- myBatis源码之Executor、BaseExecutor和CachingExecutor
接下来是mybatis的执行过程,mybatis提供了一个接口Executor,Executor接口主要提供了update.query方法及事物相关的方法接口 /** * @author Clinto ...
- myBatis源码之XMLConfigBuilder
XMLConfigBuilder是对mybatis的配置文件进行解析的类,会对myabtis解析后的信息存放在Configuration对象中,Configuration对象会贯穿整个mybatis的 ...
- 面试之路(28)-反转链表(reverse ListNode)
反转链表: java类 public class ListNode{ int key; ListNode next; } 思路分析: 需要三个指针,current,prev和next. current ...
- LeetCode(64)- Min Stack
题目: Design a stack that supports push, pop, top, and retrieving the minimum element in constant time ...
- linux中syscall调用号查看
可以用locate查找: locate unistd_32 //或者 locate unistd_64 以下是本猫在ubuntu下返回的结果: /usr/src/linux-headers-3.16. ...