5.3 DataFrame对象

5.3.1 DataFrame介绍

DataFrame对象是Pandas最常用的数据对象。一个DataFrame是一个二维的表结构,它可以存储多种不同的数据类型,并且每一个坐标轴都有自己的标签。简单的说,DataFrame就是在pandas中组织数据的表格。

5.3.2 创建DataFrame对象

下面创建一个DataFrame对象,示例代码:

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(6,4), index = np.arange(0,6), columns = list("ABCD"))
print(df)

运行结果

          A         B         C         D
0 -0.846645  1.520671 -0.381286 -1.120017
1  0.448834  0.287758  0.207721 -0.459574
2  0.140812 -1.151756 -0.629771  0.501368
3 -1.757895 -0.311795 -0.023981 -0.433921
4 -2.666680  0.162864  1.905826  0.312644
5  0.841167 -1.883985  0.473520 -0.061960

我们创建一个6*4的数据,numpy.random的randn函数用于创建服从正态分布的随机数;index参数表示行标索引,即数据行记录从0到5;colunms参数表示列标索引,即数据列属性从A到B。
此外,我们也可以用字典创建DataFrame对象,例如创建一个列名分别为A和B的数据框,索引是自动创建的整数,示例代码:

df2 = pd.DataFrame( { 'A' : np.random.randn(6), 'B' : np.random.randn(6),} )
print(df2)

运行结果

          A         B
0  0.086054  0.033148
1 -0.350087 -1.116980
2  1.448491 -0.216606
3  0.023093 -0.750871
4 -0.391246  1.312327
5  0.767756 -0.803959

假如字典内的数据长度不同,以最长的数据为准,比如A列有1行,B列有4行,示例代码:

df3 = pd.DataFrame( { 'A' : pd.Timestamp("20170415"), 'B' : pd.Series(1, index=list(range(4))), } )
print(df3)

运行结果

           A  B
0 2017-04-15  1
1 2017-04-15  1
2 2017-04-15  1
3 2017-04-15  1

5.3.3 DataFrame对象的属性

DataFrame对象创建之后,具备了描述其数据及结构特征的相关属性,主要有index,columns,values,dtypes和shape等。
info主要用来对DataFrame对象基本信息的描述,index和columns分别表示行索引和列名,示例代码:

print(df.index)
print("\n")
print(df.columns)

运行结果:

Int64Index([0, 1, 2, 3, 4, 5], dtype='int64')


Index(['A', 'B', 'C', 'D'], dtype='object')

values属性用来查看数据值,示例代码:

print(df.values)

运行结果:

[[-0.84664486  1.52067103 -0.38128625 -1.12001714]
 [ 0.44883372  0.28775841  0.20772062 -0.45957372]
 [ 0.1408116  -1.15175558 -0.62977112  0.50136828]
 [-1.75789514 -0.3117948  -0.02398082 -0.43392136]
 [-2.66668042  0.16286389  1.90582602  0.31264409]
 [ 0.8411672  -1.88398537  0.47351964 -0.06196017]]

dtypes属性用来获取每行变量的数据类型,shape属性与NumPy的ndarray数组类似,可以得到DataFrame的行数和列数。示例代码:

print(df.dtypes)
print("\n")
print(df.shape)

运行结果:

A    float64
B    float64
C    float64
D    float64
dtype: object


(6, 4)

5.3.4 DataFrame对象的方法

我们可以通过DataFrame具备的方法观察数据值的相关信息,主要方法有info()、count()、head()、tail()、sort()、decribe()等。
info()方法是对DataFrame对象一个基本信息的描述,而count()方法是返回每一列变量中所有非缺失数据的个数,示例代码:

print(df.info())
print("\n")
print(df.count())

运行结果:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 6 entries, 0 to 5
Data columns (total 4 columns):
A    6 non-null float64
B    6 non-null float64
C    6 non-null float64
D    6 non-null float64
dtypes: float64(4)
memory usage: 240.0 bytes
None


A    6
B    6
C    6
D    6
dtype: int64
head()方法用来查看前几行数据(默认是前5行),不过也可以通过括号内的参数指定前几行,示例代码:
```python
print(df.head())

运行结果:

          A         B         C         D
0 -0.846645  1.520671 -0.381286 -1.120017
1  0.448834  0.287758  0.207721 -0.459574
2  0.140812 -1.151756 -0.629771  0.501368
3 -1.757895 -0.311795 -0.023981 -0.433921
4 -2.666680  0.162864  1.905826  0.312644

指定显示前3行数据,示例代码:

print(df.head(3))

运行结果:

          A         B         C         D
0 -0.846645  1.520671 -0.381286 -1.120017
1  0.448834  0.287758  0.207721 -0.459574
2  0.140812 -1.151756 -0.629771  0.501368

使用tail()方法则用来查看最后几行数据(默认也是5行),示例代码:

print(df.tail())

运行结果:

          A         B         C         D
1  0.448834  0.287758  0.207721 -0.459574
2  0.140812 -1.151756 -0.629771  0.501368
3 -1.757895 -0.311795 -0.023981 -0.433921
4 -2.666680  0.162864  1.905826  0.312644
5  0.841167 -1.883985  0.473520 -0.061960

describe()方法用于获取数据集的常用统计量信息,包括计数、平均数、标准差、最大值、最小值及4分位差。需要注意的是,该方法仅会返回数值型变量的信息,示例代码:

print(df.describe())

运行结果:

              A         B         C         D
count  6.000000  6.000000  6.000000  6.000000
mean  -0.640068 -0.229374  0.258671 -0.210243
std    1.370322  1.189895  0.898960  0.590199
min   -2.666680 -1.883985 -0.629771 -1.120017
25%   -1.530083 -0.941765 -0.291960 -0.453161
50%   -0.352917 -0.074465  0.091870 -0.247941
75%    0.371828  0.256535  0.407070  0.218993
max    0.841167  1.520671  1.905826  0.501368

我们也可以通过sort()方法对数据进行排序,其中sort()括号内参数可以指定根据哪一列数据进行排序,默认是首列,以从小到大顺序方式排列。示例代码:

print(df.sort(columns='C'))

运行结果:

          A         B         C         D
2  0.140812 -1.151756 -0.629771  0.501368
0 -0.846645  1.520671 -0.381286 -1.120017
3 -1.757895 -0.311795 -0.023981 -0.433921
1  0.448834  0.287758  0.207721 -0.459574
5  0.841167 -1.883985  0.473520 -0.061960
4 -2.666680  0.162864  1.905826  0.312644

此外,DataFrame与ndarray类似,也提供了大T方法,即对表格数据进行转置操作,示例代码:

print(df.T)

运行结果:

          0         1         2         3         4         5
A -0.846645  0.448834  0.140812 -1.757895 -2.666680  0.841167
B  1.520671  0.287758 -1.151756 -0.311795  0.162864 -1.883985
C -0.381286  0.207721 -0.629771 -0.023981  1.905826  0.473520
D -1.120017 -0.459574  0.501368 -0.433921  0.312644 -0.061960
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值