python3如何随机生成大数据存储到指定excel文档里

   本次主要采用的是python3的第三方库xlwt,来创建一个excel文件。具体步骤如下:

1、确认存储位置,文件命名跟随时间格式

2、封装写入格式

3、实现随机数列生成

4、定位行和列把随机数写入

5、统一写入条目数,实现入参确认条目

6、封装对文件夹内多余数据表的删除操作。

说明:最大支持60000条,这个是由于excel格式限制的,如果对大数据有更高要求的如,写入6000000数据的话可以进行循环获取到100个excel来导入。

实际文件生成效果图:

python3如何随机生成大数据存储到指定excel文档里

文件内容格式如下图

python3如何随机生成大数据存储到指定excel文档里

源码如下:


  1. import xlrd
  2. import xlwt
  3. from my_framework.log import Logger
  4. import time,os
  5. import random
  6. # create a logger instance
  7. logger = Logger(logger="file_process").getlog()
  8. class file_process():
  9. """封装操作excel的方法"""
  10. # 获取某一页sheet对象
  11. def create_excel_file(self):
  12. da = time.strftime("%Y-%m-%d/%H-%M-%S", time.localtime())
  13. self.da_a = str(da.split('/')[0])
  14. self.da_b = str(da.split('/')[1])
  15. filename = "case_import"+(self.da_a+'-'+self.da_b).replace('-','.')+".xls"
  16. excel_path = os.path.dirname(os.path.abspath('.')) + 'config_filecase_import'
  17. self.ecl =os.path.join(excel_path,filename)
  18. book = xlwt.Workbook(encoding = 'utf-8')
  19. self.sheet1 = book.add_sheet('Sheet 1',cell_overwrite_ok = True)
  20. self.title = [u'进件号',u'批次号',u'批次名称',u'产品名称',u'贷款机构',u'产品类型',u'姓名',u'身份证',u'手机',u'年龄',u'性别'u'帐号',
  21. u'卡号',u'逾期天数',u'账龄',u'手别' ,u'最新欠款金额',u'委案金额',u'委案时间',u'退案时间',u'最近一次进入催收日期',
  22. u'额度',u'案件地区',u'币种',u'开户行',u'账单日',u'开卡日期',u'是否分期',u'分期情况',u'本金',u'利息',u'违约金',
  23. u'最低还款',u'委案最低还款额',u'争议金额',u'争议后金额',u'服务费',u'超限费',u'累计还款',u'委前最后付款额',u'委前最后付款日',
  24. u'案件备注',u'家庭地址',u'家庭电话',u'公司名称',u'公司电话',u'公司地址',u'常用地址',u'账单地址',u'邮政编码',u'其他地址',
  25. u'QQ',u'微信',u'支付宝',u'邮箱',u'联系人1姓名',u'联系人1关系',u'联系人1电话',u'联系人2姓名',u'联系人2关系',u'联系人2电话',
  26. u'联系人3姓名',u'联系人3关系',u'联系人3电话']
  27. batch_code = ['SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20',
  28. 'SZ-GF-2018-06-20','SZ-GF-2018-06-20']
  29. commit_money = ['255','452','1223','452','52']
  30. self.commit_date = [self.da_a]
  31. latest_debt_money = ['255','452','1223','452','52']
  32. self.limit_date = ['2019-09-01','2019-05-01','2019-08-21','2019-02-01','2019-12-01','2019-09-25','2019-09-19',]
  33. self.product_type = ['信贷','消费金融','信用卡']
  34. self.borrower_idnumber = ['422325198908151539','620503198108111211','360103198904054718']
  35. self.borrower_phone = ['13686821736']
  36. self.loan_institution = ['天天测试银行']
  37. self.write_data(self.title,0,line=1)#标题内容和格式写入
  38. # 数据导入的条数
  39. data_num = 60000
  40. # 进件号写入
  41. bill_code = self.create_data_billcode(data_num)#获取5个随机字符
  42. j = self.title_local(u'进件号')
  43. self.write_data(bill_code, j, line=0)#对第一列进行写入,写入字段存放在lrst中
  44. #批次号写入
  45. batch_codes = self.create_data(batch_code,data_num)
  46. a = self.title_local(u'批次号')
  47. self.write_data(batch_codes, a, line=0)
  48. #委案金额写入
  49. commit_moneys = self.create_data(commit_money, data_num)
  50. a = self.title_local(u'委案金额')
  51. self.write_data(commit_moneys, a, line=0)
  52. #最新欠款金额写入
  53. latest_debt_moneys = self.create_data(latest_debt_money, data_num)
  54. a = self.title_local(u'最新欠款金额')
  55. self.write_data(latest_debt_moneys, a, line=0)
  56. #其它固定写入
  57. commit_dates, limit_dates, product_types, borrower_idnumbers, borrower_phones, loan_institutions = self.only_create_data(data_num)
  58. #委案时间写入
  59. aa = self.title_local(u'委案时间')
  60. self.write_data(commit_dates, aa, line=0)
  61. #退案时间写入
  62. bb = self.title_local(u'退案时间')
  63. self.write_data(limit_dates, bb, line=0)
  64. #产品类型写入
  65. cc = self.title_local(u'产品类型')
  66. self.write_data(product_types, cc, line=0)
  67. #身份证写入
  68. dd = self.title_local(u'身份证')
  69. self.write_data(borrower_idnumbers, dd, line=0)
  70. #手机号写入
  71. ee = self.title_local(u'手机')
  72. self.write_data(borrower_phones, ee, line=0)
  73. #贷款机构写入
  74. ff = self.title_local(u'贷款机构')
  75. self.write_data(loan_institutions, ff, line=0)
  76. #姓名写入
  77. i = self.title_local(u'姓名')
  78. brrower_name = self.create_data_name(data_num) # 获取5个随机字符
  79. self.write_data(brrower_name, i, line=0)
  80. book.save(self.ecl)
  81. return filename
  82. def write_data(self,lst,num,line=0):
  83. """
  84. :param lst: 写入的字段内容的列表
  85. :param num: num来控制写入的是固定第几行第几列
  86. :param line: 判断写入的是一行还是一列
  87. :return: none
  88. """
  89. if line == 0:
  90. for i,item in enumerate(lst):
  91. self.sheet1.write(i+1, num, item)
  92. else:
  93. for i,item in enumerate(lst):
  94. self.sheet1.write(num, i, item)
  95. def title_local(self,str):
  96. for i, item in enumerate(self.title):
  97. if item == str:
  98. return i
  99. #进件号生成的随机算法
  100. def create_data_billcode(self,number):
  101. lrst=[]
  102. la = ['SZ','PH','HW','KL','WE','TY','DH','Z','H','W','L','E','Y','Q','SZK',
  103. 'PHK','HWK','KLK','WEK','TYK','DHK','SRZ','PRH','HRW','KRL','WRE','TRY',
  104. 'DRH','SLZ','PLH','HLW','KLL','WLE','TLY','DLH','SZL','PHL','HWL','KLL','WEL','TYL','DHL'
  105. 'DRH', 'SLkZ', 'PkLH',
  106. 'HLkW', 'KLkL', 'WLkE', 'TLkY', 'DLkH', 'SkZL', 'PkHL', 'HWkL', 'KLkL', 'WEkL', 'TkYL', 'DkHL']
  107. la1 = ['SZ', 'PH', 'HW', 'KL', 'WE', 'TY', 'DH', 'Z', 'H', 'W', 'L', 'E', 'Y', 'Q', 'SZK',
  108. 'PHK', 'HWK', 'KLK', 'WEK', 'TYK', 'DHK', 'SRZ', 'PRH', 'HRW', 'KRL', 'WRE', 'TRY',
  109. 'DRH', 'SLZ', 'PLH', 'HLW', 'KLL', 'WLE', 'TLY', 'DLH', 'SZL', 'PHL', 'HWL', 'KLL', 'WEyL', 'TyYL', 'DyHL'
  110. ,'DyRH',
  111. 'SLkZ', 'PkLH',
  112. 'HLkW', 'KLkL', 'WLkE', 'TLkY', 'DLkH', 'SkZL', 'PkHL', 'HWkL', 'KLkL', 'WEkL', 'TkYL', 'DkHL'
  113. 'SZ', 'PH', 'HW',
  114. 'K2L', 'W2E', 'T2Y', 'D2H', '2Z', '2H', '2W', '2L', '2E', '2Y', '2Q', '2SZK',
  115. 'PHK', 'HWK', 'KLK', 'WEK', 'TYK', 'DHK', 'SRZ', 'PRH', 'HRW', 'KRL', 'WRE', 'TRY',
  116. 'DRH', 'SLZ', 'PLH', 'HLW', 'KLL', 'WLE', 'TLY', 'DLH', 'SZL', 'PHL', 'HWL', 'KLL', 'WEyL', 'TyYL',
  117. ]
  118. for a in range(1,number+1):
  119. i = str(random.randint(0, 1000000000000))
  120. for j in la:
  121. jk=j
  122. j = random.choice(la1)
  123. ha = jk + '-' + self.da_a + '-' + i+j
  124. lrst.append(ha)
  125. return lrst
  126. #姓名生成的随机算法
  127. 来源:pujen_yuan

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年9月8日
下一篇 2018年9月8日

相关推荐