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 ...
随机推荐
- Struts2第九篇【OGNL、valueStack详解】
什么是OGNL表达式? OGNL是Object Graphic Navigation Language 是操作对象属性的开源表达式. Struts2框架使用OGNL作为默认的表达式语言. 为什么我们学 ...
- 改用Struts2.5 出现404 错误
这个是因为现在Struts 使用 2.5 只需要8 个 jar 包 Xworks-core 已经加到 struts-core中了 原因 是 Jar 包 冲突 导致 的 其次 如果 使用 ...
- stl 和并查集应用
抱歉这么久才写出一篇文章,最近进度有点慢.这么慢是有原因的,我在想如何改进能让大家看系列文章的时候更方便一些,现在这个问题有了答案,在以后的推送中,我将尽量把例题和相关知识点在同一天推出,其次在代码分 ...
- spring依赖注入中接口的问题
问题描述:一个接口,有俩个实现类当注入时候名字不同时,会出现不同的情况 action层: @Controller("userAction") @Scope("protot ...
- Android中Parcelable接口
1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...
- 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具
Java学习路线图引言: 黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...
- 7-21(排序) PAT排名汇总
计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才, ...
- struts jar包
这些错误很让我摸不着头脑,经多方查阅资料后,在Struts 2.2.x中应该导入如下7个JAR文件 1) commons-fileupload-1.2.1.jar 2) commons-io- ...
- How many Knight Placing? UVA - 11091
How many Knight Placing? Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %l ...
- Easy sssp
Easy sssp 时间限制: 1 Sec 内存限制: 128 MB提交: 103 解决: 20[提交][状态][讨论版] 题目描述 输入数据给出一个有N(2 < = N < = ...