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 ...
随机推荐
- 《java入门第一季》之类String类小案例
案例一: /* * 需求:把数组中的数据按照指定个格式拼接成一个字符串 * 举例: * int[] arr = {1,2,3}; * 输出结果: * "[1, 2, 3]" * 分 ...
- 一个简单的多机器人编队算法实现--PID
用PID进行领航跟随法机器人编队控制 课题2:多机器人编队控制研究对象:两轮差动的移动机器人或车式移动机器人研究内容:平坦地形,编队的保持和避障,以及避障和队形切换算法等:起伏地形,还要考虑地形情况对 ...
- Chrome浏览器开发调试系列(一)
// 计划写一个 Chrome 浏览器以及 调试器的系列文章,我慢慢写. 边写边改,发觉博客真是个打草稿的好地方. // 本文针对的是当前最新的浏览器Chrome34,如果你的版本不够新,希望你能够更 ...
- RTMPdump 使用说明
RTMPDump v2.4 2012-07-24RTMPDUMP(1) 名称 rtmpdump - (RTMP流媒体客户端)RTMP streaming media client 使用参数 rtmpd ...
- android本地音乐播放器
乐乐音乐播放器更新到2.0版本了,之前1.0版本更多的是试验性实践,这次更新的2.0版本,更多的是将1.0的功能移植到2.0,在界面和皮肤风格上,参考了 天天动听 界面,在歌词显示方面 与 1.0 版 ...
- Dijkstra算法 c语言实现
Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法能得出最短路径的最优 ...
- 根据isbn获得图书的所有信息
几点说明 1这个豆瓣的api https://api.douban.com/v2/book/isbn/:9787549208869 可以以json的形式返回书籍的所有信息 2最开始的时候是我自己写的用 ...
- 【51】java设计模式-工厂设计模式剖析
工厂设计设计模式的分类: 工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method) ...
- AndroidUI之绘图机制和原理 最完整的文章
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/39961171,作者:skay 导读: 熟悉javaGUI的朋友对java绘图必定 ...
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...