0%

PYTHON-造数

前言

利用PYTHON按规定概率生成数据,并保存到EXCEL

项目背景

本项目尝试利用PYTHON按规定概率生成数据,方便后续进行数据分析

关键技术

numpy xlwt

项目流程

基本思路

首先利用numpy进行造数,再利用xlwt将数据保存到EXCEL

import module

1
2
import numpy as np
import xlwt

设置总数据条数

1
count = 600   				#总计600条数据

需要生成的数值为1,2,3,4

1
2
3
#初始化
num = [1, 2, 3, 4]
list = []

利用random.choice产生随机数,如下:

num为数值的范围,即:随机抽取1,2,3,4

size:每次抽取数值的个数

replace:如果一次抽取多个数值,是否可以重复?例如size=2,replace=True,则可能抽取到2个相同的数字;如果size=2,replace=False,则这两个数字必然不会相同

p:生成每个数值的概率。p=None表示每个数值的概率相同。p=[0.1, 0.52, 0.26, 0.12],生成1,2,,3,4的概率依次为:0.1,0.52,0.26,0.12。注意这些概率相加必须为1,不然会报错

append是在list后添加一个新的数值,expend是在list后衔接另一个链表

1
2
3
for i in range(count):
a = np.random.choice(num, size=1, replace=True, p=[0.1, 0.52, 0.26, 0.12])
list1.append(int(a))

写入文件

1
2
3
4
5
6
7
workbook = xlwt.Workbook(encoding = 'utf-8')                  #设置一个workbook,其编码是utf-8
worksheet = workbook.add_sheet("test_sheet") #新增一个sheet
worksheet.write(0,0,label='生成的随机数') #将‘生成的随机数’作为标题,0,0:第0行第0列的表格
for i in range(count):
worksheet.write(i + 1, 0, label=list1[i]) #将生成的数据依次填入

workbook.save(r"D:\python_workspace\create_data\test_data.xls") #这里save需要特别注意,文件格式只能是xls,不能是xlsx,不然会报错

上述生成效果大概如下

生成的随机数
1
2
3
4

拓展

上述只是生成的简单的数据,那么如果我想要以下的效果呢?

随机数范围1~10,每次生成的数据个数随机,生成数据不重复,并用逗号分隔

1,2,3,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,3,4,5,8
10
2,6,9
1
2
3
4
5
6
7
8
9
10
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list = []

for i in range(count):
list_1 = [] #存储每一个生成的随机数
b = np.random.choice(num, size=1, replace=True, p=None) #生成随机数个数
a = np.random.choice(num, size=int(b), replace=False, p=None) #按照个数不重复生成随机数
a1 = np.sort(a) #排序
list_1.append(a1) #填入list
list.extend(list_1) #list衔接

写入EXCEL

1
2
cleaner = (',').join(str(v) for v in list16[i])  # 去掉空格以及[],数据用逗号衔接。可以试试不加这个代码输出什么效果,就知道这行是做什么的了
worksheet.write(i + 1, 1, label=str(cleaner)) # 写入每个表格

项目后续

后续计划使用生成数据,利用matplotlib绘制各种图表

并加入前端界面,实现交互式操作

-------------本文结束感谢您的阅读-------------
原创技术分享,您的支持将鼓励我继续创作

欢迎关注我的其它发布渠道