一、numpy
1、ndarray:
import numpy as np
data = np.random.randn(2, 3) #随机生成2 * 3的数组
print(data.shape) #输出维度
print(data.dtype) #输出数据类型,默认float64
2、生成ndarray:
import numpy as np
data1 = [[6, 4.5, 5, 2],[2, 4.5, 4, 0]]
arr1 = np.array(data1) #接收任意序列对象,生成一个新的numpy数组
print(arr1)
print(arr1.ndim) #输出维数,嵌套了二层
print(np.zeros(8)) #创建全0一维数组
print(np.ones((3, 4)))#创建全1二维数组, 3 * 4
print(np.empty((2, 3 ,2))) #创建没有初始化的3维数组 ,2 * 3 * 2
print(np.arange(20)) #range数组版,返回一个指定范围的数组序列
3、numpy数组可以实现无需for循环的批量操作,也就是向量化。任何两个等尺寸数组之间的算术操作都应用了逐元素操作的方式。ex:两个数组可以按照逐元素进行各种运算。
arr1 = np.array([[2, 3, 4], [5, 3, 9]])
arr2 = np.array([[2, 3, 4], [5, 3, 9]])
arr3 = arr1 ** 2
arr4 = arr1 * arr2
4、索引和切片:
主要是对多维数组的切片操作。之前文章有已有分析。例如:
arr1 = np.array([[[2, 3, 4], [5, 3, 9]], [[2, 3, 4], [5, 3, 9]]])
print(arr1[0, 1]) # [5 3 9]
print(arr1[0, 1, 2]) #9
print(arr1[0, 1, 1:3]) #[3 9]
[a, b, c, ....] 切片符第一个a表示多维数组第一层选择范围, b表示第二层, 以此类推。
5、reshape方法。把数组调整为指定的维数。
arr = np.arange(32).reshape((8, 4)) #生成一个32长度的一维数组,调整为8 * 4的数组
print(arr)
输出:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]
6、转置和换轴:
arr.T #转置
np.dot(arr1, arr2) #计算两个矩阵内积,等价于arr1.dot(arr2)
arr1 * arr2 :计算两个矩阵逐元素乘积
7、
二、pandas
1、Series数组:一种包含索引和值的数组序列,也可以看成是一种字典。
(1)基本创建
import pandas as pd
obj = pd.Series([1,2 ,3]) #定义一个数组,默认采用0开始的序号
print(obj)
obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'c', 'a']) #定义一个数组,并且定义了其索引
print(obj2)
输出:索引和值以及类型
0 1
1 2
2 3
dtype: int64
d 4
b 7
c -5
a 3
dtype: int64
(2)使用字典生成Series
import pandas as pd
sdata = {'a':"dfdf", 'b':"dfdd", 'c':"dffsf"}
obj3 = pd.Series(sdata)
print(obj3)
输出:
a dfdf
b dfdd
c dffsf
dtype: object
(3)索引可以使用index属性重新定义,会对应改变为定义后的样子
import pandas as pd
sdata = {'a':"dfdf", 'b':"dfdd", 'c':"dffsf"}
obj3 = pd.Series(sdata)
obj3.index = ['1', '2', '3']
2、DataFrame矩阵的数据表
本身是二维的,但是可以采用分层(嵌套)索引的方式实现更高维数的数据。
最常用的创建方式是利用包含等长度列表或Numpy数组的字典形成DataFrame。
如:
import pandas as pd
data = {'state':['ds', 'fd', 'dfkf'], 'year':['fdfd', 'djkf', 'fdds'], 'pop':['fss', 'fdsfs', '333']}
frame = pd.DataFrame(data)
print(frame)
输出:
state year pop #列名就是原字典的key,行号是自动索引生成的
0 ds fdfd fss
1 fd djkf fdsfs
2 dfkf fdds 333
3、重建索引:reindex
(1)serires调用reindex方法时,会将数据按照新的索引进行排列,如果某个索引之前并不存在,则会引入缺省值NaN。
>>> obj = pd.Series([4.5, 3.4, 1.2], index=['d', 'a', 'c'])
>>> obj
d 4.5
a 3.4
c 1.2
>>> obj2 = obj.reindex(['a', 'f', 'g', 'h'])
>>> obj2
a 3.4
f NaN
g NaN
h NaN
dtype: float64
(2)轴向上删除条目
>> obj3 = obj.drop('a')
4、DataFrame类型数据遍历: