pandas.DataFrame学习系列1——定义及属性
定义:
DataFrame是二维的、大小可变的、成分混合的、具有标签化坐标轴(行和列)的表数据结构。基于行和列标签进行计算。可以被看作是为序列对象(Series)提供的类似字典的一个容器,是pandas中主要的数据结构。
形式:
class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
参数含义:
data : numpy ndarray(多维数组)(结构化或同质化的), dict(字典), or DataFrame(数据表)如果是字典类型,该字典可以包含序列,数组,常量或类列表型对象
index : Index or array-like 索引或数组类型,如果输入数据中没有索引信息以及没有提供索引时默认赋值为arange(n)即从0开始的等差数组
columns : Index or array-like 索引或数组类型,没有提供列标签时默认赋值为0开始的等差数组
dtype : dtype, default None 数据类型,默认为空。只允许有一种数据类型,如果为空,自动推断类型
copy : boolean, default False 布尔类型,默认为False。从输入值中拷贝数据,只对输入为DataFrame或者二维数组时有影响
其他构建DataFrame类型的方法:
classmethod DataFrame.from_records(data, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)[source] classmethod DataFrame.from_dict(data, orient='columns', dtype=None)pandas.read_csv
, pandas.read_table,pandas.read_clipboard,pandas.read_excel等
举例:
从字典构建DataFrame
>>> d = {'col1': [1, 2], 'col2': [3, 4]}
>>> df = pd.DataFrame(data=d)
>>> df
col1 col2
0 1 3
1 2 4
推断类型为int64
>>> df.dtypes
col1 int64
col2 int64
dtype: object
强制设置为单一类型
>>> df = pd.DataFrame(data=d, dtype=np.int8)
>>> df.dtypes
col1 int8
col2 int8
dtype: object
从numpy多维数组类型构建DataFrame
>>> df2 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),
... columns=['a', 'b', 'c', 'd', 'e'])
>>> df2
a b c d e
0 2 8 8 3 4
1 4 2 9 0 9
2 1 0 7 8 0
3 5 1 7 1 3
4 6 0 2 4 2
属性:
获取和创建DataFrame
import pandas as pd
import numpy as np df=pd.read_excel('南京银行.xlsx',index_col='Date')
df1=df[:5] In [38]:df1.head()
Out[38]:
Open High Low Close Turnover Volume
Date
2017-09-15 8.06 8.08 8.03 8.04 195.43 24272800
2017-09-18 8.05 8.13 8.03 8.06 200.76 24867600
2017-09-19 8.03 8.06 7.94 8.00 433.76 54253100
2017-09-20 7.97 8.06 7.95 8.03 319.94 39909700
2017-09-21 8.02 8.10 7.99 8.04 241.94 30056600
--转置,转置以后DataFrame的index属性值为None
In [39]: df1.T
Out[39]:
Date 2017-09-15 2017-09-18 2017-09-19 2017-09-20 2017-09-21
Open 8.06 8.05 8.03 7.97 8.02
High 8.08 8.13 8.06 8.06 8.10
Low 8.03 8.03 7.94 7.95 7.99
Close 8.04 8.06 8.00 8.03 8.04
Turnover 195.43 200.76 433.76 319.94 241.94
Volume 24272800.00 24867600.00 54253100.00 39909700.00 30056600.00
--基于标签快速访问
In [35]: date=pd.to_datetime('2017-09-15')
In [36]: date
Out[36]: Timestamp('2017-09-15 00:00:00')
In [37]: df1.at[date,'Open']
Out[37]: 8.0600000000000005
--获取行轴和列轴标签名
In [44]: df1.axes
Out[44]:
[DatetimeIndex(['2017-09-15', '2017-09-18', '2017-09-19', '2017-09-20',
'2017-09-21'], dtype='datetime64[ns]', name='Date', freq=None),
Index(['Open', 'High', 'Low', 'Close', 'Turnover', 'Volume'], dtype='object')]
--内置属性
In[45]: df1.blocks
Out[45]:
{'float64': Open High Low Close Turnover
Date
2017-09-15 8.06 8.08 8.03 8.04 195.43
2017-09-18 8.05 8.13 8.03 8.06 200.76
2017-09-19 8.03 8.06 7.94 8.00 433.76
2017-09-20 7.97 8.06 7.95 8.03 319.94
2017-09-21 8.02 8.10 7.99 8.04 241.94,
'int64': Volume
Date
2017-09-15 24272800
2017-09-18 24867600
2017-09-19 54253100
2017-09-20 39909700
2017-09-21 30056600}
--各列数据类型
In[46]: df1.dtypes
Out[46]:
Open float64
High float64
Low float64
Close float64
Turnover float64
Volume int64
dtype: object
--判断DataFrame是否完全为空
In [47]: df1.empty
Out[47]: False
--返回稀疏或密集的标示及数据类型
In[48]: df1.ftypes
Out[48]:
Open float64:dense
High float64:dense
Low float64:dense
Close float64:dense
Turnover float64:dense
Volume int64:dense
dtype: object
--快速整数标量定位(到具体元素,相当于给出坐标)
In[49]: df1.iat[0,1] #第1行,第2列
Out[49]: 8.0800000000000001 In[50]: df1.iat[1,0] #第2行,第1列
Out[50]: 8.0500000000000007
--用于位置选择的基于整数定位的索引(切片)
In []: df1.iloc[:]
Out[]:
Open High Low Close Turnover Volume
Date
-- 8.06 8.08 8.03 8.04 195.43
In []: df1.iloc[:,:]
Out[]:
Low Close Turnover Volume
Date
-- 8.03 8.04 195.43
--混合方式定位(基于整数位置或标签名以及它们的组合,可以只用行标签,但是不能只用列标签)
In []: df1.ix[,'Open']
Out[]: 8.0500000000000007
In []: df1.ix[]
Out[]:
Open 8.05
High 8.13
Low 8.03
Close 8.06
Turnover 200.76
Volume 24867600.00
Name: -- ::, dtype: float64
--选择位置的基于标签名的索引
In[7]: df1.loc[date,'Low']
Out[7]: 8.0299999999999994 In [8]: df1.loc[df1.index[0],'Low']
Out[8]: 8.0299999999999994
--坐标轴个数
In [10]: df1.ndim
Out[10]: 2
--DataFrame的形状(行列数)
In [11]: df1.shape
Out[11]: (5, 6)
--DataFrame的大小(元素个数)
In [12]: df1.size
Out[12]: 30
--返回DataFrame样式对象
In [13]: df1.style
Out[13]: <pandas.io.formats.style.Styler at 0x1c410cf8eb8>
--返回DataFrame里的数值(二维数组)
In [14]: df1.values
Out[14]:
array([[ 8.06000000e+00, 8.08000000e+00, 8.03000000e+00,
8.04000000e+00, 1.95430000e+02, 2.42728000e+07],
[ 8.05000000e+00, 8.13000000e+00, 8.03000000e+00,
8.06000000e+00, 2.00760000e+02, 2.48676000e+07],
[ 8.03000000e+00, 8.06000000e+00, 7.94000000e+00,
8.00000000e+00, 4.33760000e+02, 5.42531000e+07],
[ 7.97000000e+00, 8.06000000e+00, 7.95000000e+00,
8.03000000e+00, 3.19940000e+02, 3.99097000e+07],
[ 8.02000000e+00, 8.10000000e+00, 7.99000000e+00,
8.04000000e+00, 2.41940000e+02, 3.00566000e+07]])
以上为DataFrame的主要属性,后面继续介绍DataFrame的方法。
pandas.DataFrame学习系列1——定义及属性的更多相关文章
- 【Spring源码深度解析学习系列】复杂标签属性解析(四)
一.创建用于属性承载的BeanDefinition BeanDefiniton是一个接口,在Spring中存在三种实现:RootBeanDefinition.ChildBeanDefinition.G ...
- 32 ArcToolBox学习系列之数据管理工具箱——属性域(Domains)的两种创建及使用方式
属性域分为两类,一种是范围域,一种是编码的值,下面将两个一起介绍,其中涉及到的编码,名称,只是试验,并非真实情况. 一.首先新建一个文件型地理数据库,将数据导入或者是新建要素类都可以 二.打开ArcT ...
- Pandas DataFrame学习笔记
对一个DF r1 r2 r3 c1 c2 c3 选行: df['r1'] df['r2':'r2'] #包含r2 df[df['c1']>5] #按条件选 选列: df['c1'] ...
- 《C# 语言学习笔记》——定义属性
属性定义的方式与字段类似,但包含的内容比较多. 属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个块用于设置属性的值.这两个块也称访问器,分别用于get和set关键字定义,可以用于控制对属性的 ...
- Py之pandas:dataframe学习【转载】
转自:https://www.tutorialspoint.com/python_pandas/python_pandas_dataframe.htm 1.数据框4特性 列是不同类型的数据元素. 每列 ...
- RabbitMQ学习系列(三): C# 如何使用 RabbitMQ
上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实 ...
- 1、HTML学习 - IT软件人员学习系列文章
本文做为<IT软件人员学习系列文章>的第一篇,将从最基本的开始进行描述,了解的人完全可以跳过本文(后面会介绍一些工具). 今天讲讲Web开发中最基础的内容:HTML(超文本标记语言).HT ...
- Gradle学习系列之一——Gradle快速入门
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- http协议学习系列
深入理解HTTP协议(转) http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列 1. 基础概念篇 1.1 介绍 H ...
随机推荐
- Hibernate的注解方法的使用
1.配置映射关系的xml方式 我们知道,Hibernate是一个典型的ORM框架,用以解决对象和关系的不匹配.其思想就是将关系数据库中表的记录映射成为对象,以对象形式展现,这样一来,就可以把对数据库的 ...
- python装饰器练习题
练习题1. 请使用python, 对下面的函数进行处理, def hello(name): print "hello, %s" % name 在函数被调用时打印耗时详情 <f ...
- 只用一招让你Maven依赖下载速度快如闪电
一.背景 众所周知,Maven对于依赖的管理让我们程序员感觉爽的不要不要的,但是由于这货是国外出的,所以在我们从中央仓库下载依赖的时候,速度如蜗牛一般,让人不能忍,并且这也是大多数程序员都会遇到的问题 ...
- bootstrap 表单样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 比较JqGrid与XtraGrid
此只能比较两者的功能优劣,实现某种功能.效果的方便性和效率.首先分别粗略介绍XtraGrid和jqGrid DevExpress是目前.net下最为强大和完整的UI控件库, XtraGrid是这个控件 ...
- C++ Primer Plus 6 第二章
// myfirst.cpp--displays a message #include <iostream> // a PREPROCESSOR directive int main() ...
- HDU 1754 I Hate It(线段树区间求最值)
很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有 ...
- JS或jQuery实现一组复选框的全选和取消全选?
//1.JS方式实现:checkbox 全选/取消全选 var isCheckAll = false; function swapCheck() { if (isCheckAll) { ...
- [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件
隔行变色功能,不用js,直接用css伪类就可以做,这个实例可以作为js插件开发很好的入门级实例.本文实现的隔行变色包括以下功能: 1,支持2种常用结构共存( div元素 和 表格类型 ) 2,一个页面 ...
- 组件 layui 表单抓取数据四步走
注意事项: layui 中提交按钮是基于"监听"机制实现的. form.on() 的调用需置于 layui.use 的回调函数中. 末尾的 'return false' 不可或缺, ...