以城市编码+月份为种子生成指定范围内随机数

用过python中random的人都知道很容易生成随机数,但是通常程序运行一次随机数就变动一次,在某些特定情况下我们不希望程序再次运行时这些随机数发生变化。比如我们希望生成全国各城市12个月份的某项指标数据集,在这里我们可以根据(城市编码+月份)作为随机数种子来生成随机数,这样当不管程序运行多少次,这个数据集都不在变动。

import numpy as np
import random
import pandas as pd

#读取各城市编码数据


data = pd.read_csv('city_code.txt', sep='\t', encoding='ANSI')
#data.head()

#定义以(城市编码+月份)为种子的随机数,随机数在0.5的80%到120%范围内取值
def rate(n=1):
    rate = []
    for i in data.city_cd:
        random.seed(i*10+n)
        temp = 0.5*(1 + random.uniform(-0.2,0.2))
        rate.append(temp)
    return rate


#生成1到12月转化率列名

month = np.arange(1,13)
rate_n = []
for i in month:
    temp = 'rate_' + str(i)
    rate_n.append(temp)
print(rate_n)
columns = list(data.columns) + rate_n


#在data中插入1到12月转化率
data = data.reindex(columns=columns)
print(list(data.columns))
for i in month:
    temp = rate(i)
    data.iloc[:,i+1:i+2] = temp
data.head()
#导出数据
#导出为csv格式
data.to_csv('random_city.csv',sep= ' ',index=True, header=True)
#导出为Excel格式
data.to_excel('rand_city.xlsx',index=False)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值