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 ...
随机推荐
- Spring - BeanPostProcessor接口(后处理器)讲解
概述: BeanPostProcessor接口是众多Spring提供给开发者的bean生命周期内自定义逻辑拓展接口中的一个,其他还有类似InitializingBean,DisposableBean, ...
- Git 基本命令有哪些
Git 相关命令 git init 初始化一个项目 git clone 利用url 从远程clone下来一个项目 git status 查看当前项目修改状态 git log 查看日志 查看历史记录 g ...
- 考了3年,工作四年,零基础在职终于拿到CFA证书
大家都知道CFA Charterholder是独有的全球公认的投资管理从业人员高职业水平和道德水准的有力证明,是金融界卓越专业成就的象征:CFA资格强调和遵循极其严格的职业操守和道德准则,世界各主要发 ...
- URL不能过长,否则summit方法提交失败
MVC5.0+EF6.0,和浏览器的版本有关系.IE最多1024KB. URL不能过长,否则summit方法提交失败.
- Fix “Could not flush the DNS Resolver Cache: Function failed during execution” When Flushing DNS
ipconfig /flushdns It is possible that you’re getting an error message “Could not flush the DNS Reso ...
- 通过npm写一个cli命令行工具
前言 如果你想写一个npm插件,如果你想通过命令行来简化自己的操作,如果你也是个懒惰的人,那么这篇文章值得一看. po主的上一篇文章介绍了定制自己的模版,但这样po主还是不满足啊,项目中我们频繁的需要 ...
- 【转】TCP/IP报文格式
1.IP报文格式 IP协议是TCP/IP协议族中最为核心的协议.它提供不可靠.无连接的服务,也即依赖其他层的协议进行差错控制.在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送.而所有 ...
- centos 7.3二进制安装mariadb10.2.8完美步骤
(1)在centos7系统上,yum info mariadb可以找到提供mariadb包的官方网站,在到官方网站下载最新的mariadb包,然后rz到linux系统上去 (2)准备用户 1.user ...
- 1.ElasticSearch介绍及基本概念
一.ElasticSearch介绍 一个采用RESTful API标准的高扩展性的和高可用性的实时性分析的全文搜索工具 基于Lucene[开源的搜索引擎框架]构建 ElasticSearch是一个面向 ...
- linux上redis安装配置及其防漏洞配置及其攻击方法
Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令: yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...