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

 1 import pandas as pd
 2 import numpy as np
 3
 4 df=pd.read_excel(‘南京银行.xlsx‘,index_col=‘Date‘)
 5 df1=df[:5]
 6
 7 In [38]:df1.head()
 8 Out[38]:
 9          Open  High   Low  Close  Trunover    Volume
10 Date
11 2017-09-15  8.06  8.08  8.03   8.04    195.43  24272800
12 2017-09-18  8.05  8.13  8.03   8.06    200.76  24867600
13 2017-09-19  8.03  8.06  7.94   8.00    433.76  54253100
14 2017-09-20  7.97  8.06  7.95   8.03    319.94  39909700
15 2017-09-21  8.02  8.10  7.99   8.04    241.94  30056600

--转置,转置以后DataFrame的index属性值为None

1 In [39]:  df1.T
2 Out[39]:
3 Date       2017-09-15   2017-09-18   2017-09-19   2017-09-20   2017-09-21
4 Open             8.06         8.05         8.03         7.97         8.02
5 High             8.08         8.13         8.06         8.06         8.10
6 Low              8.03         8.03         7.94         7.95         7.99
7 Close            8.04         8.06         8.00         8.03         8.04
8 Trunover       195.43       200.76       433.76       319.94       241.94
9 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

--获取行轴和列轴标签名

1 In [44]: df1.axes
2 Out[44]:
3 [DatetimeIndex([‘2017-09-15‘, ‘2017-09-18‘, ‘2017-09-19‘, ‘2017-09-20‘,
4                 ‘2017-09-21‘], dtype=‘datetime64[ns]‘, name=‘Date‘, freq=None),
5  Index([‘Open‘, ‘High‘, ‘Low‘, ‘Close‘, ‘Trunover‘, ‘Volume‘], dtype=‘object‘)]

--内置属性

 1 In[45]: df1.blocks
 2 Out[45]:
 3 {‘float64‘:     Open  High   Low  Close  Trunover
 4  Date
 5  2017-09-15  8.06  8.08  8.03   8.04    195.43
 6  2017-09-18  8.05  8.13  8.03   8.06    200.76
 7  2017-09-19  8.03  8.06  7.94   8.00    433.76
 8  2017-09-20  7.97  8.06  7.95   8.03    319.94
 9  2017-09-21  8.02  8.10  7.99   8.04    241.94,
10  ‘int64‘:               Volume
11  Date
12  2017-09-15  24272800
13  2017-09-18  24867600
14  2017-09-19  54253100
15  2017-09-20  39909700
16  2017-09-21  30056600}

--各列数据类型

1 In[46]:  df1.dtypes
2 Out[46]:
3 Open        float64
4 High        float64
5 Low         float64
6 Close       float64
7 Trunover    float64
8 Volume        int64
9 dtype: object

--判断DataFrame是否完全为空

1 In [47]: df1.empty
2 Out[47]: False

--返回稀疏或密集的标示及数据类型

1 In[48]:  df1.ftypes
2 Out[48]:
3 Open        float64:dense
4 High        float64:dense
5 Low         float64:dense
6 Close       float64:dense
7 Trunover    float64:dense
8 Volume        int64:dense
9 dtype: object

--快速整数标量定位(到具体元素,相当于给出坐标)

1 In[49]:  df1.iat[0,1] #第1行,第2列
2 Out[49]: 8.0800000000000001
3
4 In[50]:  df1.iat[1,0] #第2行,第1列
5 Out[50]: 8.0500000000000007

--用于位置选择的基于整数定位的索引(切片)

 1 In [2]:  df1.iloc[0:1]
 2 Out[2]:
 3             Open  High   Low  Close  Trunover    Volume
 4 Date
 5 2017-09-15  8.06  8.08  8.03   8.04    195.43  24272800
1 In [3]:  df1.iloc[0:1,2:]
2 Out[3]:
3              Low  Close  Trunover    Volume
4 Date
5 2017-09-15  8.03   8.04    195.43  24272800

--混合方式定位(基于整数位置或标签名以及它们的组合,可以只用行标签,但是不能只用列标签)

1 In [6]:  df1.ix[1,‘Open‘]
2 Out[6]: 8.0500000000000007
1 In [7]:  df1.ix[1]
2 Out[7]:
3 Open               8.05
4 High               8.13
5 Low                8.03
6 Close              8.06
7 Trunover         200.76
8 Volume      24867600.00
9 Name: 2017-09-18 00:00:00, dtype: float64

--选择位置的基于标签名的索引

1 In[7]:  df1.loc[date,‘Low‘]
2 Out[7]: 8.0299999999999994
3
4 In [8]: df1.loc[df1.index[0],‘Low‘]
5 Out[8]: 8.0299999999999994

--坐标轴个数

1 In [10]: df1.ndim
2 Out[10]: 2

--DataFrame的形状(行列数)

1 In [11]:  df1.shape
2 Out[11]: (5, 6)

--DataFrame的大小(元素个数)

1 In [12]:  df1.size
2 Out[12]: 30

--返回DataFrame样式对象

1 In [13]:  df1.style
2 Out[13]: <pandas.io.formats.style.Styler at 0x1c410cf8eb8>

--返回DataFrame里的数值(二维数组)

 1 In [14]: df1.values
 2 Out[14]:
 3 array([[  8.06000000e+00,   8.08000000e+00,   8.03000000e+00,
 4           8.04000000e+00,   1.95430000e+02,   2.42728000e+07],
 5        [  8.05000000e+00,   8.13000000e+00,   8.03000000e+00,
 6           8.06000000e+00,   2.00760000e+02,   2.48676000e+07],
 7        [  8.03000000e+00,   8.06000000e+00,   7.94000000e+00,
 8           8.00000000e+00,   4.33760000e+02,   5.42531000e+07],
 9        [  7.97000000e+00,   8.06000000e+00,   7.95000000e+00,
10           8.03000000e+00,   3.19940000e+02,   3.99097000e+07],
11        [  8.02000000e+00,   8.10000000e+00,   7.99000000e+00,
12           8.04000000e+00,   2.41940000e+02,   3.00566000e+07]])

以上为DataFrame的主要属性,后面继续介绍DataFrame的方法。

时间: 2024-08-19 20:54:49

pandas.DataFrame学习系列1——定义及属性的相关文章

pandas.DataFrame学习系列2——函数方法(1)

DataFrame类具有很多方法,下面做用法的介绍和举例. pandas.DataFrame学习系列2--函数方法(1) 1.abs(),返回DataFrame每个数值的绝对值,前提是所有元素均为数值型 1 import pandas as pd 2 import numpy as np 3 4 df=pd.read_excel('南京银行.xlsx',index_col='Date') 5 df1=df[:5] 6 df1.iat[0,1]=-df1.iat[0,1] 7 df1 8 Open

Pandas DataFrame学习笔记

对一个DF r1  r2  r3 c1 c2 c3 选行:  df['r1']  df['r2':'r2']  #包含r2  df[df['c1']>5] #按条件选 选列:  df['c1']  df[['c2','c3']]  df['c4']=5  #新列 任意区域:  df.ix[df.c1>5,['c2','c3']] 排序:  df.sort_index(by=['r2','r3'],ascending=False) 运算:  df<5  #得到bool型矩阵  df[df&

WPF学习系列之二 (依赖项属性)

依赖属性;(dependency property)  它是专门针对WPF创建的,但是WPF库中的依赖项属性都使用普通的.NET属性过程进行了包装.从而可能通过常规的方式使用它们,即使使用他们的代码不理解WPF依赖项属性系统也是如此,使用旧技术包装新技术看起来有些奇怪,但这正是WPF能够改变基础组成部分,而不会扰乱.NET领域中其他部分的原因.三步:一:定义依赖项属性.public static readonly DependencyProperty MarginProperty;二:.在静态构

React学习系列

React学习系列 系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是初学者,英语也不是很好,不过一直强迫自己看英文文档. 这是理解翻译,翻译的不好,请见谅!()中的是我翻译过程中理解,参考下,有什么说的不对的欢迎指点下! 第一节:如何开始react和了解react的概念 1.React是什么 react是Facebook 开发出来用于促进UI交互,创建带有状态的,可复

quick-cocos2d-x 学习系列之十四 测试用例

quick-cocos2d-x 学习系列之十四 测试用例 定义变量,创建13个场景名字 local items = { "framework.helper", "framework.native", "framework.display", "framework.crypto", "framework.network", "framework.luabinding", "fra

quick-cocos2d-x 学习系列之十六 塔防完结

quick-cocos2d-x 学习系列之十六 塔防完结 1.  math2d.lua文件 该文件实现了常用的数学函数. Dist函数实现两点的距离. radians4point求两点的夹角(弧度) pointAtCircle求圆上一个点的位置 pointAtLineToPoint求线段上与指定点距离最近的点 degrees2radians角度转换为弧度 radians2degrees弧度转换为角度 2.  utils.lua文件 2.1         drawCircle 返回newCirc

我的Android 4 学习系列之开始入手:配置开发环境与理解Hello World!

p { padding-left: 10px; } 目录 如何安装Android SDK.创建开发环境和调试项目 移动设计中一些注意事项 使用Android虚拟设备.模拟器和其他开发工具 如何安装Android SDK.创建开发环境和调试项目 下载和安装Android SDK : 我的是window7系统,当然下载 SDK starter package 最合适了: http://developer.android.com/sdk/index.html 下载完打开压缩包如下: 然后把这个包解压到

http协议学习系列

深入理解HTTP协议(转)  http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列   1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列

Gradle学习系列之一——Gradle快速入门(转)

这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin 请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git 和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作