python数据分析

利用numpy进行统计分析

1.二进制数据存储

import numpy as np  # 导入NumPy库
arr = np.arange(100).reshape(10, 10)  # 创建一个数组
np.save('save_arr', arr) # 保存数组
print('保存的数组为:\n', arr)

使用了NumPy库中的函数来创建一个10x10的二维数组arr,然后使用np.save函数将数组保存在指定位置(‘save_arr.npy’)。最后打印出保存的数组内容

2.多个数组存储

arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.arange(0,1.0,0.1)
np.savez('E:\Pythons数据/savez_arr', arr1,arr2)
print('保存的数组1为:\n', arr1)
print('保存的数组2为:\n', arr2)

使用了NumPy库中的函数来创建两个数组arr1和arr2,然后使用np.savez函数将这两个数组以压缩的格式保存在指定位置(‘savez_arr.npz’)。最后打印出数组的内容

3.二进制文件读取

loaded_data = np.load('E:\Pythons数据/save_arr.npy')
print('读取的数组为:\n', loaded_data)

loaded_data1 = np.load('E:\Pythons数据/savez_arr.npz')
print('读取的数组1为:\n', loaded_data1['arr_0'])
print('读取的数组2为:', loaded_data1['arr_1'])

使用NumPy库中的函数np.load从文件中加载之前保存的数组。第一个例子读取了一个.npy格式的数组文件(‘E:\Pythons数据/save_arr.npy’),然后使用print函数打印读取的数组内容。第二个例子读取了一个.npz格式的数组文件(‘E:\Pythons数据/savez_arr.npz’),使用索引方式读取其中数组的内容,并使用print函数打印出来

4.存储与读取

arr = np.arange(0,12,0.5).reshape(4,-1)
print('创建的数组为:\n', arr)

np.savetxt('E:\Pythons数据/arr.txt',arr, fmt='%f', delimiter=',')

loaded_data = np.loadtxt('E:\Pythons数据/arr.txt', delimiter=',')
print('读取的数组为:\n', loaded_data)

使用NumPy库中的函数np.savetxt将NumPy数组保存为文本格式。arr是一个使用arange函数创建的二维数组,然后使用reshape函数将其形状变为4行8列。接着使用np.savetxt函数将数组以文本格式保存在位置’E:\Pythons数据/arr.txt’中,使用delimiter指定数组中各个元素的分隔符。 最后使用np.loadtxt函数从文本文件’E:\Pythons数据/arr.txt’中加载数组,然后使用print函数打印读取到的数组内容

5.用genfromtxt函数读取

loaded_data = np.genfromtxt('E:\Pythons数据/arr.txt', delimiter=',')
print('读取的数组为:\n',loaded_data)

使用NumPy库中的函数np.genfromtxt从文本文件’E:\Pythons数据/arr.txt’中读取数组,使用delimiter指定数组中各个元素的分隔符。然后使用print函数打印读取到的数组内容

6.用sort函数排序

np.random.seed(42)  # 设置随机种子
arr = np.random.randint(1, 10, size=10)  # 生成随机数组
print('创建的数组为:', arr)

arr.sort()  # 直接排序
print('排序后数组为:', arr)

np.random.seed(42)  # 设置随机种子
arr = np.random.randint(1, 10, size=(3, 3))  # 生成3行3列的随机数组
print('创建的数组为:\n', arr)

arr.sort(axis=1)  # 沿着横轴排序
print('排序后数组为:\n', arr)

arr.sort(axis=0)  # 沿着纵轴排序
print('排序后数组为:\n', arr)

使用np.random.randint函数生成一个1到10之间的长度为10的一维随机整数数组,然后使用sort函数直接对其排序。接着使用np.random.randint函数生成一个3行3列的二维随机整数数组,然后使用sort函数指定axis参数对其进行排序,axis = 1代表沿着横轴排序,axis = 0代表沿着纵轴排序

7.数组内数据去重

names = np.array(['小明', '小黄', '小花', '小明', 
    '小花', '小兰', '小白'])
print('创建的数组为:', names)

print('去重后的数组为:', np.unique(names))

# 跟np.unique函数等价的Python代码实现过程
print('去重后的数组为:', sorted(set(names)))

ints = np.array([1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10])
print('创建的数组为:', ints)
print('去重后的数组为:', np.unique(ints))

使用NumPy库中的unique函数对数组中的重复元素进行去重。首先创建一个包含重复元素的字符串数组names,使用np.unique函数去掉其中的重复元素,然后打印去重后的数组。也可以采用Python常规的去重方法(转换为集合set,然后排序),将去重结果打印出来验证结果。接着创建一个包含重复元素的整数数组ints,同样使用np.unique函数去掉其中的重复元素,然后打印去重后的数组

8.使用tile函数实现数据重复

arr = np.arange(5)
print('创建的数组为:', arr)
print('重复后数组为:', np.tile(arr, 3))

使用NumPy库中的tile函数来将数组进行重复。首先创建一个一维数组arr,使用np.arange函数生成0到4的连续整数。然后使用np.tile函数,将数组arr沿着第一个轴(即axis=0)复制3次,得到新数组,然后打印输出

9.numpy常用统计函数的使用

arr = np.arange(20).reshape(4, 5)
print('创建的数组为:\n', arr)
print('数组的和为:', np.sum(arr)) 
print('数组横轴的和为:', arr.sum(axis=0)) 
print('数组纵轴的和为:', arr.sum(axis=1)) 
print('数组的均值为:', np.mean(arr))
print('数组横轴的均值为:', arr.mean(axis=0)) 
print('数组纵轴的均值为:', arr.mean(axis=1))
print('数组的标准差为:', np.std(arr))
print('数组的方差为:', np.var(arr))
print('数组的最小值为:', np.min(arr))
print('数组的最大值为:', np.max(arr))
print('数组的最小元素为:', np.argmin(arr))
print('数组的最大元素为:', np.argmax(arr))

使用NumPy库中的各种函数来计算数组的各种统计信息。首先创建一个4行5列的二维数组arr,元素从0到19。然后使用np.sum函数计算数组中所有元素的和,使用arr.sum(axis=0)计算数组横轴上每列元素的和,使用arr.sum(axis=1)计算数组纵轴上每行元素的和。接着使用np.mean函数计算数组中所有元素的平均值,使用arr.mean(axis=0)计算数组横轴上每列元素的平均值,使用arr.mean(axis=1)计算数组纵轴上每行元素的平均值。然后使用np.std函数计算数组中所有元素的标准差,使用np.var函数计算数组中所有元素的方差。最后使用np.min和np.max函数求出数组中的最大值和最小值,使用np.argmin和np.argmax函数分别返回数组中最小元素和最大元素的索引

10.cumsum函数和cumprod函数的使用

arr = np.arange(2, 10)
print('创建的数组为:', arr)
print('数组元素的累计和为:', np.cumsum(arr))
print('数组元素的累计积为:\n', np.cumprod(arr))

用NumPy库中的cumsum和cumprod函数分别计算数组元素的累计和和累计积。首先创建一个一维数组arr,元素从2到9。然后使用np.cumsum函数计算数组元素的累计和,使用np.cumprod函数计算数组元素的累计积

总结起来,学习Python是一段有趣而充实的旅程。通过不断学习和实践,建立了坚实的编程基础,并且对Python的应用领域有了更深入的了解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值