定义:

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——定义及属性的更多相关文章

  1. 【Spring源码深度解析学习系列】复杂标签属性解析(四)

    一.创建用于属性承载的BeanDefinition BeanDefiniton是一个接口,在Spring中存在三种实现:RootBeanDefinition.ChildBeanDefinition.G ...

  2. 32 ArcToolBox学习系列之数据管理工具箱——属性域(Domains)的两种创建及使用方式

    属性域分为两类,一种是范围域,一种是编码的值,下面将两个一起介绍,其中涉及到的编码,名称,只是试验,并非真实情况. 一.首先新建一个文件型地理数据库,将数据导入或者是新建要素类都可以 二.打开ArcT ...

  3. Pandas DataFrame学习笔记

    对一个DF r1  r2  r3 c1 c2 c3 选行:  df['r1']  df['r2':'r2']  #包含r2  df[df['c1']>5] #按条件选 选列:  df['c1'] ...

  4. 《C# 语言学习笔记》——定义属性

    属性定义的方式与字段类似,但包含的内容比较多. 属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个块用于设置属性的值.这两个块也称访问器,分别用于get和set关键字定义,可以用于控制对属性的 ...

  5. Py之pandas:dataframe学习【转载】

    转自:https://www.tutorialspoint.com/python_pandas/python_pandas_dataframe.htm 1.数据框4特性 列是不同类型的数据元素. 每列 ...

  6. RabbitMQ学习系列(三): C# 如何使用 RabbitMQ

    上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实 ...

  7. 1、HTML学习 - IT软件人员学习系列文章

    本文做为<IT软件人员学习系列文章>的第一篇,将从最基本的开始进行描述,了解的人完全可以跳过本文(后面会介绍一些工具). 今天讲讲Web开发中最基础的内容:HTML(超文本标记语言).HT ...

  8. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  9. http协议学习系列

    深入理解HTTP协议(转)  http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列   1. 基础概念篇 1.1 介绍 H ...

随机推荐

  1. webservice05#soap消息

    1, SOAPMessage结构图 2, SOAP消息的创建 1>前面的一个简单WebService  服务 package com.yangw.soap.service; import jav ...

  2. Linux 环境下 MySQ导入和导出MySQL的sql文件

    将服务器上的文件导入或导出还需要使用工具传输到本机中,推荐使用winscp,与xshell搭配使用 1 导入数据库 两种方法 .首先建空数据库 mysql>create database abc ...

  3. gephi安装后无法打开

    具体解决的方法是找到gephi.conf文件(在“gephi安装目录\etc”中)文件,添加下面的一行,指定jdkhome的路径. jdkhome="C:\Program Files (x8 ...

  4. StringBuffer的添加与删除功能

    StringBuffer的添加功能A* public StringBuffer append(String str): * 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 B* pu ...

  5. iOS开发中KVC、KVO简介

    在iOS开发中,KVC和KVO是经常被用到的.可以使用KVC对对象的属性赋值和取得对象的属性值,可以使用KVO监听对象属性值的变化.简单介绍一下KVC和KVO. 一:键值编码(KVC) KVC,全称 ...

  6. win7系统Myeclipse下切换SVN用户

     Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后 ...

  7. load data(sql)

    一般对于数据库表的插入操作,我们都会写程序执行插入sql,插入的数据少还可以,如果数据多了.执行效率上可能就不太理想了.load data语句用于高速地从一个文本文件中读取数据,装载到一个表中,相比于 ...

  8. 687. Repeats spoj (后缀数组 重复次数最多的连续重复子串)

    687. Repeats Problem code: REPEATS A string s is called an (k,l)-repeat if s is obtained by concaten ...

  9. PHP字符串函数-trim()实例用法

    string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )此函数返回字符串 str 去除首尾空白字符后的 ...

  10. Ionic3学习笔记(二)主题化

    本文为原创文章,转载请标明出处 目录 CSS实用属性 文本相关 位置相关 padding & margin 自定义颜色 平台样式 覆写Ionic Sass变量 RTL支持 1. CSS实用属性 ...