python数据分析与挖掘(一)
程序员文章站
2024-03-17 14:31:10
...
python数据分析与挖掘(一)
目录
一、数组
1.numpy库导入
import numpy as np #起一个别名
arr = np.array([1,2,3,4]) #创建一个一维数组
print('创建的数组是:',arr)
2.数组基本属性
print('数组的维数是:',arr.ndim)
print('数组的长度是:',arr.shape)
print('数组的元素个数是:',arr.size)
print('数组中每个元素的类型是:',arr.dtype)
print('元素类型所占字节数是:',arr.itemsize)
3.数组元素类型转换
arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype = np.float32) #设置为32位浮点型数据
print('创建的二维数组是:\n',arr2)
a = np.array([1,2,3],dtype = np.int8) #创建数组,定义数据类型
print('源数据类型为:',a.dtype)
b = np.int32(a) #将类型改为int32
print('更改后的类型为:',b.dtype)
print(np.float64(42))
print(np.int8(42))
print(np.bool(42))
print(np.bool(0))
print(np.float(True))
print(np.float(False))
4.改变数组形状
arr2.shape = (4,3) #改变数组形状,重新设置行列数
arr2
a = np.arange(12) #创建一个一维数组
print('创建的数组为:',a)
b = a.reshape(3,4) #改变数组形状为3行4列的二维数组
print('改变形状后数组为:\n',b)
print('二维数组按横向展平:',b.ravel())
print('二维数组按纵向展平',b.flatten(order = 'F'))
5.使用arange函数创建数组
arr3 = np.arange(1,10,1) #1-10之间的数步长为1
print(arr3)
arr4 = np.arange(0,1,0.1) #0-1之间的数步长为0.1
print(arr4)
6.使用linspace函数创建数组
arr5 = np.linspace(0,100,20,endpoint = False) #从0到100之间取20个元素,是一个等差数列,设置取不到100,不显示小数
print(arr5)
7.使用logspace函数创建数组
arr6 = np.logspace(0,2,20) #10º到10²之间产生的20个数,是一个等比数列
print(arr6)
arr6.shape = 4,5 #改变形状成二维数组
print('改变形状后的数组是:\n',arr6)
8.使用zeros函数创建数组
arr7 = np.zeros((4,5)) #创建4行5列,数组元素全是0的二维数组
print(arr7)
9.使用eye函数创建数组
arr8 = np.eye(3) #3×3的数组,斜对角是1
print(arr8)
10.使用diag函数创建数组
arr9 = np.diag([1,2,3,4]) #4×4的数组,斜对角是1 2 3 4
print(arr9)
11.使用ones函数创建数组
arr10 = np.ones((3,5)) #创建3行5列,数组元素只有1的二维数组
print(arr10)
12.使用random函数生成随机数
print('生成随机数是:\n',np.random.random(10)) #生成0-1之间,随机的浮点数10个
13.使用rand函数生成随机数
print(np.random.rand(7,5)) #随机生成0-1之间的7行5列的二维数组
14.使用randint函数生成随机数
print(np.random.randint(2,10,size = [2,5])) #2-10之间,2行5列的随机整数
15.自定义数据类型
df = np.dtype([('name',np.str_,40),('numitems',np.int64),('price',np.float64)]) #创建数据类型
print('数据类型为:',df['name'])
print('数据类型为:',df['numitems'])
itemz = np.array([('tomatoes',42,4.14),('cabbages',13,1.72)],dtype = df) #自定义数据类型
print('自定义数据为:',itemz)
16.使用randn函数生成随机数
print(np.random.randn(2,3,2)) #随机生成两个3行2列符合正太分布的二维数组
17.数组的切片操作
arr = np.arange(10)
print('创建的数组为:',arr)
print('数组切片第5个元素为:',arr[5])
print('数组切片结果:',arr[3:5]) #3-5之间的元素,不包括5
print('数组切片结果:',arr[:5]) #起始位置到5之间的元素
print('数组切片结果:',arr[-1]) #最后一个元素
arr[3:5] = [100,200]
print(arr) #改变数组内元素
print('数组切片结果:',arr[1:9:2]) #1-9之间的元素,步长为2
a = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print('创建的多维数组为:\n',a)
print('数组切片结果:',a[1,2:4]) #行下标为1,列下标为2-4的数据
print('数组切片结果:\n',a[1:3,2:4]) #行下标为1-3,列下标为2-4的数据
18.数组组合操作
a1 = np.arange(12).reshape(3,4) #创建一个3行4列的二维数组
a2 = a1 * 3
print('第一个数组为:\n',a1)
print('第二个数组为:\n',a2)
print(np.hstack((a1,a2))) #给两个数组横向组合
print(np.vstack((a1,a2))) #给两个数组纵向组合
c1 = np.concatenate((a1,a2),axis = 1) #给两个数组横向组合
print(c1)
c2 = np.concatenate((a1,a2),axis = 0) #给两个数组纵向组合
print(c2)
19.数组分割操作
print(np.hsplit(c2,2)) #数组横向分割
print(np.vsplit(c2,3)) #数组纵向分割
print(np.split(c2,2,axis = 1)) #数组横向分割
print(np.split(c2,3,axis = 0)) #数组纵向分割