模拟时间数据变得容易!

mojito-mock的Python项目详细描述


莫吉托

模拟时间数据变得容易!

python中有很多数据模拟框架。但没有一个真正的目标是 统计上同质的数据,尤指时间事件。mojito就是为这个设计的!

如何使用

首先安装mojitopip install git+https://github.com/PPACI/mojito.git

fromdatetimeimportdatetimefrompprintimportpprintfrommojitoimportDateGenerator,EventComposer,FixedValueGenerator,NumberGenerator,PropertyEventGenerator, \
    RandomChoiceGeneratorevent1=PropertyEventGenerator(properties={"timestamp":DateGenerator(center=datetime(2018,5,2,0,0,0),deviation=3*3600),"age":NumberGenerator(mean=15,deviation=3,return_int=True),"gender":RandomChoiceGenerator(['M','F']),"label":FixedValueGenerator(1)})event2=PropertyEventGenerator(properties={"timestamp":DateGenerator(center=datetime(2018,5,10,0,0,0),deviation=3*3600,skew=0),"age":NumberGenerator(mean=30,deviation=3,return_int=True),"gender":RandomChoiceGenerator(['M','F'],weights=[2,1]),"label":FixedValueGenerator(0)})composer=EventComposer()composer.add_generator(event1,3)# 3 samples from this generatorcomposer.add_generator(event2,2)# 2 samples from this generatorpprint(composer.generate(shuffle=True))

将输出

[{'age':16.0,'gender':'M','label':1,'timestamp':datetime.datetime(2018,5,1,22,23,1,450298)},{'age':19.0,'gender':'F','label':1,'timestamp':datetime.datetime(2018,5,1,21,0,11,583775)},{'age':30.0,'gender':'M','label':0,'timestamp':datetime.datetime(2018,5,9,22,57,30,441924)},{'age':15.0,'gender':'F','label':1,'timestamp':datetime.datetime(2018,5,2,5,59,54,96498)},{'age':32.0,'gender':'M','label':0,'timestamp':datetime.datetime(2018,5,10,0,15,55,676862)}]

API

mojito使用一个模型,其中propertyeventgenerator将用于生成示例事件。 event是发生的事情,其特征是它所表示的样本的统计分布。 sample是生成的数据。它可能代表访问你的网站,或者有人购买特定的商品 或者别的什么。 请记住,如果要从两个统计分布生成样本,则必须创建两个事件和 如示例所示编写它们。 目前,用于生成数据的主要分布是正态分布 很多是现实生活中的分配。

事件生成器

propertyeventgenetator将用{“name”:propertygenerator}字典实例化。 此事件生成器将位于模拟任务的中心,因为它描述事件的外观。

产热器

您可以访问以下propertygenerator

  • dategenerator
    • 输出围绕提供的中心日期时间分布的日期时间
    • 分布是Skew Normal
    • 您可以通过skew=0获得非倾斜正态分布
    • scale在第二位,因此deviation=3600将在提供的日期时间前后产生1小时的标准偏差
  • fixedValueGenerator
    • 始终输出相同的值
  • randomChoiceGenerator
    • 从提供的可能性列表中随机选择
    • 您可以通过weights=[a, b]对列表进行相应的加权
  • numbergenerator
    • 分布在所提供平均值周围的输出数
    • 分布是Skew Normal
    • 您可以通过skew=0获得非倾斜正态分布
    • 您可以通过return_int=True来生成integer而不是float
    • 也可用作normalnumbergenerator类
  • poissonnumbergenerator
    • aPoisson distribution
    • 的输出编号
    • 唯一的分布参数是mu,这是时间段内事件的平均数
    • 您可以通过return_int=True来生成integer而不是float

成分

真实模型是多个不同事件的集合。要模拟这种情况,可以使用eventcomposer

composer=EventComposer()composer.add_generator(event1,3)# 3 samples from this generatorcomposer.add_generator(event2,2)# 2 samples from this generator

添加eventgenerator和每个生成器想要生成的事件数。 也可以使用.remove_generator(event1)删除一个。

  • .generate()会将生成的事件列表作为字典返回给您
  • .to_csv("output.csv")将把生成的事件保存为csv,为您的进程做好准备!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java中将字符串转换为音频输入   java如何使用Spring Boot RestTemplate解组json列表   计算机上C++ OpenCV项目转换为OpenCV Android的java步骤   Java Spring Telegraf数据表不工作   openurlconnection与connect之间的java差异?   java Solr字段搜索、通配符和转义字符   java如何使用DLFolderLocalServiceUtil类的getFolders()方法?   尝试用Java编写文件   java连续双缓冲解决方案不起作用   两个数组的Java乘积   java Jackson,如何正确编写自定义反序列化程序   java将布尔标志按一定顺序排列以获得更好的性能是否有意义   java Vaadin无缓冲网格无法关闭   java在MySQL中以同一用户身份同时从不同客户端登录安全吗?   java如何使用安卓asynchttp库   java无法在Android中使用AlarmManager停止服务   java在Hibernate的XML配置文件中指定默认值   Spring启动应用程序中的java内存SQLITE不工作   Java代码无法写入文本文件,