您现在的位置是:主页 > news > 网站访问速度跟服务器cpu和内存和带宽哪个重要/竞价点击软件工具
网站访问速度跟服务器cpu和内存和带宽哪个重要/竞价点击软件工具
admin2025/5/22 16:04:17【news】
简介网站访问速度跟服务器cpu和内存和带宽哪个重要,竞价点击软件工具,九龙坡区建设二校有网站吗,沈阳健网站文章目录简介1. ndarray数组对象2. Series对象3. DataFrame对象简介 在数据分析中,经常涉及numpy中的ndarray对象与pandas的Series和DataFrame对象之间的转换,让大家产生困惑。本文将简单介绍这三种数据类型,并以股票信息为例,给…
文章目录
- 简介
- 1. ndarray数组对象
- 2. Series对象
- 3. DataFrame对象
简介
在数据分析中,经常涉及numpy
中的ndarray
对象与pandas
的Series
和DataFrame
对象之间的转换,让大家产生困惑。本文将简单介绍这三种数据类型,并以股票信息为例,给出相关对象之间转换的具体示例。
1. ndarray数组对象
NumPy
中的ndarray
是一个多维数组对象,该对象由两部分组成:
- 实际的数据;
- 描述这些数据的元数据。
大部分的数组操作仅仅修改元数据部分,而不改变底层的实际数据。NumPy
数组一般是同质的(但有一种特殊的数组类型例外,它是异质的),即数组中的所有元素类型必须是一致的。这样有一个好处:如果我们知道数组中的元素均为同一类型,该数组所需的存储空间就很容易确定下来。
我们举一个简单的多维数组的例子。在这里,我们使用Numpy
提供的arange
函数来来方便的创建一维数组,其函数原型为arange([start,] stop[, step,], dtype=None)
。可以指定起始值、结束值、步长及数据类型参数,这里步长参数为整数值。如果要使用非整数值的步长,可以考虑使用linespace
函数。通过reshape()
函数将一维数组转换为多维数组。
>>> import numpy as np
>>> a = np.arange(10).reshape(2,5)
>>> print(a)
[[0 1 2 3 4][5 6 7 8 9]]
>>> type(a)
<type 'numpy.ndarray'>
>>> a[0,1]
1
>>> a[0][1]
1
>>> a[:, ::2]
array([[0, 2, 4],[5, 7, 9]])
>>> a[0]
array([0, 1, 2, 3, 4])
>>> a.shape
(2L, 5L)
>>> a.dtype
dtype('int32')
>>> a.dtype.itemsize
4
多维数组的操作也非常简单,可以参考list
类型对数组进行访问、切片操作。比较重要的是可以通过shape
属性获取数组的维数。
我们也可以通过多维数组来标识异构的数据类型,以股票数据为例,通过dtype
类来定义数据类型对象stock
, 其包括日期、开盘价、收盘价、最高价、最低价、成交量及股票编码信息:
from numpy import *if __name__ == '__main__':stock = dtype([('date', str_, 10), ('open', float32), ('close', float32), ('high', float32), ('low', float32), ('volume', float32), ('code', float32)])data = array([("2017-10-18", 11.53, 11.69, 11.70, 11.51, 871365.0, "000001"),("2017-10-19", 11.64, 11.63, 11.72, 11.57, 722764.0, "000001"),("2017-10-20", 11.59, 11.48, 11.59, 11.41, 461808.0, "000001"),("2017-10-23", 11.39, 11.19, 11.40, 11.15, 1074465.0, "000001")], dtype=stock)print(type(data))print(data)
显示结果:
<type 'numpy.ndarray'>
[ ('2017-10-18', 11.52999973, 11.68999958, 11.69999981, 11.51000023, 871365., 1.)('2017-10-19', 11.64000034, 11.63000011, 11.72000027, 11.56999969, 722764., 1.)('2017-10-20', 11.59000015, 11.47999954, 11.59000015, 11.40999985, 461808., 1.)('2017-10-23', 11.39000034, 11.18999958, 11.39999962, 11.14999962, 1074465., 1.)]
在实际应用中,我们很少使用ndarray
来定义异构的数据类型,而是使用pandas
中的Series
和DataFrame
来操作。
2. Series对象
从一般意义上来讲,Series
可以简单地被认为是一维的数组。Series
和一维数组最主要的区别在于Series
类型具有索引(index
)。Series
支持从列表和字典创建,这里仅举以列表创建的例子:
from pandas import Seriesif __name__ == '__main__':data = [["2017-10-18", 11.53, 11.69, 11.70, 11.51, 871365.0, 000001],["2017-10-19", 11.64, 11.63, 11.72, 11.57, 722764.0, 000001],["2017-10-20", 11.59, 11.48, 11.59, 11.41, 461808.0, 000001],["2017-10-23", 11.39, 11.19, 11.40, 11.15, 1074465.0, 000001]]series = Series(data, index=['a', 'b', 'c', 'd'])print(series)#将Series转换为ndarray类型arr = series.as_matrix()
可以调用as_matrix()
将其转换为ndarray
类型的对象。
3. DataFrame对象
DataFrame
是将数个Series
按列合并而成的二维数据结构,每一列单独取出来是一个Series
,这和SQL
数据库中取出的数据是很类似的。所以,按列对一个DataFrame
进行处理更为方便,用户在编程时注意培养按列构建数据的思维。DataFrame
的优势在于可以方便地处理不同类型的列,因此,就不要考虑如何对一个全是浮点数的DataFrame
求逆之类的问题了,处理这种问题还是把数据存成NumPy
的 matrix
类型比较便利一些。
我们仍平安银行的例子,创建DataFrame
对象,这里把日期提取出来作为index
,同时指定了列名。
from pandas import Series, DataFrame
from numpy import arrayif __name__ == '__main__':data = [[11.53, 11.69, 11.70, 11.51, 871365.0, 000001],[11.64, 11.63, 11.72, 11.57, 722764.0, 000001],[11.59, 11.48, 11.59, 11.41, 461808.0, 000001],[11.39, 11.19, 11.40, 11.15, 1074465.0, 000001]]df = DataFrame(data, index=["2017-10-18", "2017-10-19", "2017-10-20", "2017-10-23"], columns=["open", "close", "high", "low", "volume", "code"])print(df)print(df.as_matrix(['open', 'close']))print(df.values)print(array(df))
这里,我们展示了3种方法将DataFrame
获取ndarray
类型的方法。
as_matrix()
方法可以指定获取的列;
values
属性将使用所有的列转换为ndarray
对象,等同与无参数的as_matrix()
;
array()
接受将DataFrame
对象作为参数创建ndarray
对象。