用于生成模拟数据集作为pandas数据帧的实用程序
dfmock的Python项目详细描述
dfmock
Pithon3的Pandas数据框模拟程序。
为什么?
有时您只需要pandas数据类型中已经存在的模拟数据。有很多数据生成工具,但是大多数都会生成csv或者一些需要熊猫使用的csv;这为您的测试增加了一个有用的点。如果逻辑正确,但数据类型没有从csv中正确导入怎么办?因此dfmock的目标是在控制数据类型的地方生成模拟数据帧。
安装
使用pip
pip install dfmock
您还可以获取源here
API
使用起来很简单。 导入到模块中,选择列名和数据类型,设置列数,并生成框架。 从dfmock导入dfmock
columns = { "hamburger":"string",
"hot_dog":"integer",
"shoelace":"timedelta"
}
dfmock = DFMock(count=100, cols=columns)
dfmock.generate_dataframe()
my_mocked_dataframe = dfmock.dataframe
支持的熊猫数据类型:
PANDAS TYPE | DICT VALUE |
---|---|
object | string |
int64 | int |
float64 | float |
bool | bool |
datetime64 | datetime |
timedelta | timedelta |
category | category |
因此,使用列“banana”(即int64
)和列“rockstar”(即category
类型)创建一个数据帧:
dfmock.cols = {"banana":"int","rockstar":"category"}
很简单。
增大到大小
有时需要将数据集设置为特定的内存大小,而不是行大小。grow_dataframe_to_size()
允许您增大帧,直到它达到或超过给定的大小(以MB为单位)。
需要10MB的数据帧吗?
dfmock.generate_dataframe()
dfmock.size
## returns 0.2 MB
dfmock.grow_dataframe_to_size(10)
dfmock.size
## returns ~10 MB
分组
note:timedelta
和category
数据类型当前不受支持。
有时,您需要一个列,可以在该列上使用给定的数据类型进行聚合。例如,您可能需要具有4个datetime值之一的1m行(可能表示4个观察报告时间戳?)。可以使用分组来完成此操作。
通过将dict作为数据类型值传递,并将分组列的参数作为键来声明分组列。像这样:
columns = {"amazing_grouped_column_with_3_values": { "option_count":3, "option_type":"string"}}
这将为您提供一个只有3个不同值和(几乎)相等分布的列。 如果需要控制分布,可以传递直方图参数。例如,如果您想要一个具有4个datetime值的数据集,并且想要50%的记录使用一个值,30%的记录使用另一个值,而其余的记录使用20%的值,则此选项非常有用。您可以这样删除此分发版:
columns = {"super_cool_grouped_column_with_histogram": {"option_count":4, "option_type":"datetime","histogram":(5,3,2,2,)}}
传递直方图的整数需要用与选项count相同的值(即,如果option_count
=5,则需要5个值)加起来最多10个。对于直方图,此caps选项当前计数为10。
您所需的行数也必须可被10整除-这使数学简单。
贡献
我们欢迎拉要求!