python⼆维数组长度_Python基础数据处理库
Numpy 简介
import numpy as np
Numpy是应⽤ Python进⾏科学计算的基础库。它的功能包括多维数组、基本线性代数、基本统计计算、随机模拟等。 Numpy的核⼼功能
是 ndarray 类,即多维数组。多维数组是线性代数中⾮常⼴泛的概念,如⼀维数组就是向量,⼆维数组是矩阵。在数组中,要求所有元素excel加减乘除混合运算函数
必须是同⼀类型,这是与列表与字典的区别之⼀⼀。针对数组,通过Numpy可以实现的基本操作包括数组的创建、数组切⽚、数组重组、
数组运算等。
01
数组的创建
常见的创建数组的⽅法之⼀:转换Python的列表、元组等数据结构为数组类型。下⾯实例给出了创建数组的常⽤命令。
>>> import numpy as np  # 载⼊Numpy库简写为"np">>> arr1 = np.array([1,2,3,4,5,6])>>> arr1array([1, 2, 3, 4, 5, 6])>>> type(arr1) # 查看数据类型numpy.ndarray
另外,还可以利⽤Numpy的内置函数来直接创建数组。
>>> arr3 = np.arange(0,1,0.1)>>> arr3array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])# 创建⼀维长度为2,⼆维长度为3的元素全为0的数组>>> arr4 = np
注意这⾥的  np.arange () 可以指定步长为(0,1)为⼩数,⽽Python内置函数 range  ⽆此功能。另外, np.random 中包括多种概率分布
的随机样本,是数据分析辅助的重点⼯具之⼀。
02
数组的切⽚与索引
数组的截取与 list 相同,可以通过 [] 来指定每个维度的索引。
>>> import numpy as np>>> a = np.array([[1,2,3,4,5],[6,7,8,9,10]])>>> print(a)[[ 1  2  3  4  5] [ 6  7  8  9 10]]>>> print(a[0:1])  # 截取第⼀⾏[[1 2 3 4 5]]>>> print(a[1
另外,在应⽤中经常需要返回满⾜给定条件的数组元素。为此,下⾯介绍⼀个按照条件索引的数组操作。
>>> b = a[a>6] # 截取矩阵中⼤于6的元素,范围是⼀维数组>>> print(b)[ 7  8  9 10]
03
数组重组
数组重组主要是指对原来数组进⾏修改,具体包括数组类型修改、数组维度修改与数组元素修改。
>>> # 数组元素的数据类型为字符串>>> num_str1 = np.array(['1.2','2.4','3.6'],dtype=np.string_)>>> # 利⽤astype转换为浮点型>>> num_str1.astype(float)array([ 1.2
这⾥  np.where (c ondi tion,x ,y )  函数是三元表达式:满⾜条件 (c ondi tion ),输出 x ,不满⾜输出 y 。
04
数组运算
数学中的加减乘除运算同样也使⽤于数组。在数组中是按照元素级进⾏批量运算的,下⾯挑选⼏个实例来说明这⼀点:
>>> arr7 = np.array([[1,2,3],[4,5,6]])>>> arr7array([[1, 2, 3],      [4, 5, 6]])>>> arr7 * 2    # 数组的每个每个元素都乘以2array([[ 2,  4,  6],      [ 8, 10, 12]])>>> arr7*ar
除了上述简单的元素级运算,数组也可以进⾏各种矩阵运算,如矩阵向量的混合运算、矩阵求逆、矩阵⾏列式、矩阵特征值。
>>> A = np.array([[0,1],[2,3]])>>> Aarray([[0, 1],      [2, 3]])>>> v = np.array([1,2])>>> varray([1, 2])>>> v.dot(A)  # dot是内积运算,运算规则与线性代数相同array([ Numpy 库为Python中的数组运算提供了很多便捷,这⾥只列举了常⽤的少数⼏个操作命令。其实,Numpy可以看作计算科学的基础模
块,⽽接下来介绍的pandas库是在Numpy基础上的拓展,也具备Numpy中的许多功能,⽽且不要求数据类型必须单⼀。
pandas 简介
import pandas as pd
Pamdas是建⽴在 Numpy库之上的,是使得数据分析⼯作变得更简单更快的⾼级操作⼯具。pandas的进⾏数据处理主要针对两种数据结
构:Series 和 DataFrame 。
Series
Series 是建⽴在 pandas 库之上的,是使得数据分析⼯作变得更简单更快的⾼级操作⼯具。 引⼊索引的⼀⼤作⽤是数据对其功能,使得进
⾏数据处理后不会发⽣数据错⾏。 最简单的 Series 可以由⼀个列表类型的数据⽣成:
>>> import pandas as pd>>> ser1 = pd.Series([1,3,5,7])>>> ser10    11    32    53    7dtype: int64
S e ries的数据变现形式:索引在左侧,值在右边,默认的索引是从0开始的整数型序列。我们也可以在创建的时候通过 index 参数指定索
引数据。
>>> ser2 = pd.Series([1,3,5,7], index=['a','b','c','d'])>>> ser2a    1b    3c    5d    7dtype: int64
在创建 S e ries 后可以对它们的⼀些属性进⾏修改,如下所⽰:
>>> ser2.indexIndex(['a', 'b', 'c', 'd'], dtype='object')>>> ser2.index = ['A','B','C','D']>>> ser2A    1B    3C    5D    7dtype: int64
对 S e ries 中特定数据的查,可以通过以下⼏种⽅式来实现:
>>> ser2['A']  # 通过索引值查值1>>> ser2[1] # 通过⾏号查值3>>> ser2[0:2] # 通过切⽚来查⼦序列A    1B    3dtype: int64
在 S e ries 类型运算中,输出结果会⾃动对齐不同索引的数据。当序列中没有共同的索引时,则输出缺失值符号 NaN :
>>> ser3 = pd.Series([1,3,5],index=['a','b','c'])>>> ser4 = pd.Series([2,4,6],index=['c','d','b'])>>> ser3 + ser4a    NaNb    9.0c    7.0d    NaNdtype: float64
上述这种运算机制在数据处理中⾮常有⽤,按照索引来进⾏运算可以避免错误分⾏。总结: S e ries 基本操作类似数组和字典,它们之间
可以相互转换。但是,序列是顺序指定的、具有索引的数据类型。数组是没有索引的,⽽字典的元素是⽆序的。
Dataframe
DataFrame是将若⼲个 Series 按列合并⽽成的⼆维数据结构,每⼀列单独取出来就是⼀个 Series 。数据框  DataFrame是⽤于存储多⾏
和多列的数据集合,是机器学习算法读取数据的最常⽤格式。就像⽇常见到的⼆维 Excel 表格⼀样,第⼀⾏默认表⽰变量名,后续每⾏为⼀
个样本,⽽每列表⽰变量(特征)的取值。利⽤数据框之前需要导⼊处理数据的核⼼库 pandas 。下列⼏⾏代码基本包括了 DataFrame 的创
建。
>>> import pandas as pd  # 导⼊ Python 库 pandas>>> dic1 = {"age":[18,20,22],"name":["xiaoming","wanghan","hanwei"],"Chinese":[90,78,97],"Math":[87,69,89],"
从上⾯实例可以看出,数据框是由字典 data 直接转化⽽来。实际数据分析中,采集到的数据结构往往是多种类型的,⽽数据框恰好可以存
放不同类型的数据。另外,利⽤ Python 读取的数据往往⾃动转化为数据框类型的,如前⾯介绍的读取本地数据命令 pd.read_csv() 。
01
了解数据全貌
⼀旦把数据载⼊到 Python 中,⾸先要做的是了解数据的全貌与基本特征。例如,要知道数据框⼤⼩(⾏和列)、列变量名、索引号、数据类
型等。如果想知道数据框的列变量与索引名称,可以使⽤如下命令
>>> lumns)  # 列变量名称Index(['age', 'name', 'Chinese', 'Math', 'English', 'History', 'Physics'], dtype='object')>>> print(df.index)  # 索引序列Index(['a', 'b'
另外,Python 中存在⼀些内置函数可以输出许多数据框属性,例如:
>>> df.info()  # 整体汇总<class 'frame.DataFrame'>Index: 3 entries, a to cData columns (total 7 columns):age        3 non-null int64name      3 non-n
02
访问数据
访问数据框⼀列与若⼲列的常⽤的⽅法有如下两种:
>>> df["name"]  # 按列变量访问a    xiaomingb    wanghanc      hanweiName: name, dtype: object>>> df.iloc[:,3]  # 按照列数访问,这⾥表⽰第⼆列对应的所有⾏a
类似的,访问数据框的⾏有如下⼏种⽅法:
>>> df[1:2]  # 取第⼆⾏  age    name  Chinese  Math  English  History  Physicsb  20  wanghan      78    69      78      79      78>>> df.iloc[1,:] # 按照⾏数访问,这03
数字特征统计
既然数据框是个数据集合,那么我们经常需要对其进⾏⼀些基本统计描述。下⾯⼏⾏代码给出了常⽤的统计描述的操作:
>>> an()) # 默认对数值型的所有列分布求平均age        20.000000Chinese    88.333333Math      81.666667English    86.333333History    81.666667Ph

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。