微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-通过使用现有数据集作为基础数据集生成数据

我有一个包含10万个唯一数据记录的数据集,以对代码进行基准测试,我需要对具有500万个唯一记录的数据进行测试,我不想生成随机数据.我想使用我拥有的10万条数据记录作为基础数据集,并使用某些列的唯一值生成与之相似的剩余数据,如何使用pythonScala做到这一点?

这是示例数据

latitude   longitude  step count
25.696395   -80.297496  1   1
25.699544   -80.297055  1   1
25.698612   -80.292015  1   1
25.939942   -80.341607  1   1
25.939221   -80.349899  1   1
25.944992   -80.346589  1   1
27.938951   -82.492018  1   1
27.944691   -82.48961   1   3
28.355484   -81.55574   1   1

每对经纬度在生成的数据中应该是唯一的,我也应该能够为这些列设置最小值和最大值

解决方法:

您可以使用R轻松生成符合正态分布的数据,可以按照以下步骤进行操作

#Read the data into a dataframe
library(data.table)
data = data = fread("data.csv", sep=",", select = c("latitude", "longitude"))

#Remove duplicate and null values
df = data.frame("Lat"=data$"latitude", "Lon"=data$"longitude")
df1 = unique(df[1:2])
df2  <- na.omit(df1)

#Determine the mean and standard deviation of latitude and longitude values
meanLat = mean(df2$Lat)
meanLon = mean(df2$Lon)
sdLat = sd(df2$Lat)
sdLon = sd(df2$Lon)

#Use normal distribution to generate new data of 1 million records

newData = list()
newData$Lat = sapply(rep(0, 1000000), function(x) (sum(runif(12))-6) * sdLat + meanLat)
newData$Lon = sapply(rep(0, 1000000), function(x) (sum(runif(12))-6) * sdLon + meanLon)

finalData = rbind(df2,newData)

Now final data contains both old records and new records

将finalData数据帧写入CSV文件,您可以从Scala或python中读取它

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐