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 ...
随机推荐
- 循环链表设计与API实现
基本概念 循环链表的定义:将单链表中最后一个数据元素的next指针指向第一个元素 循环链表拥有单链表的所有操作 创建链表 销毁链表 获取链表长度 清空链表 获取第pos个元素操作 插入元素到位置pos ...
- Java-ServletOutputStream
/** * Provides an output stream for sending binary data to the * client. A <code>ServletOutput ...
- DEVICE_ATTR
说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是 #define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device ...
- 【Python】模拟radius coa报文
Radius协议中网关设备NAS是client,实现radius协议的服务为服务端(例如freeradius),这种情况下radius server并不能主动给NAS发送信息.在 rfc3576 Dy ...
- 安卓笔记--Edittext禁止换行
直接在EditText的xml文件中通过配置android:singleLine="true"把虚拟键盘上的enter键禁止掉,不会显示 <edittext android: ...
- 字符编辑技术C语言实现
#include<string.h> #include<ctype.h> #include<stdio.h> /*插入函数 ccode待插入的字符 anystrin ...
- 简单开发Apple Watch的步骤
好久没写博客了,自己这两年自从孩子出世,也慢慢懈怠了.实在有点对不住了,换了个新公司,也有点时间可以写写东西了. 前几天苹果刚刚发布Apple Watch,Xcode6也更新了watchKit,正好 ...
- java finalize方法总结、GC执行finalize的过程
注:本文的目的并不是鼓励使用finalize方法,而是大致理清其作用.问题以及GC执行finalize的过程. 1. finalize的作用 finalize()是Object的protected方法 ...
- selenium获取百度账户cookies
[效果图] 效果图最后即为获取到的cookies,百度账户的cookies首次获取,需要手动登录,之后就可以注入cookies,实现免密登录. [代码] public class baiduCooki ...
- 从Freelancer的热门Skill看看你应该学什么?
以下数据是2012-1-31号数据. Websites, IT & Software: PHP (2402)HTML (1639)SEO(877)MySQL (836)Link Buildin ...