具有可逆数据转换的存储库
rdt的Python项目详细描述
麻省理工学院从数据到人工智能实验室的开源项目。
可逆数据转换
这是一个python库,用于为数据科学库转换数据并保留转换,以便根据需要反转它们。
- 自由软件:麻省理工学院许可证
- 文档:https://HDI-Project.github.io/RDT
安装
使用pip
安装安装rdt的最简单和推荐的方法是使用pip
:
pip install rdt
从源安装
您还可以克隆存储库并从源安装它
git clone git@github.com:HDI-Project/RDT.git
cd RDT
pip install -e .
用法
此库用于将所需的转换应用于单个表或整个数据集 同时,目标是得到完整的数字表作为输出。想要的 可以在列级别或数据集级别指定转换。例如,您可以 仅对选定列应用日期时间转换,或者可以指定 数据集中要进行该转换的DateTime列。
转换列
这个库的基类是basetransformer类。这个类提供方法来适应 转换数据并将其转换为新数据的方法 拟合变换器和一种反转变换并获取与原始数据相似的数据的方法 输入。每个transformer类都继承自basetransformer类,因此 这些方法。
变形金刚将列和该列的元数据作为输入。下面我们将 演示如何使用日期时间转换器转换和反转列。
首先,我们需要通过运行以下命令来解压缩存储库中包含的演示数据 shell上的命令:
tar -xvzf examples/data/airbnb.tar.gz -C examples/data/
然后,我们可以继续打开python解释器并加载数据
>>>fromrdt.transfomersimportget_col_info>>>demo_data='examples/data/airbnb/Airbnb_demo_meta.json'>>>column,column_metadata=get_col_info('users','date_account_created',demo_data)>>>column.head(5)02014-01-0112014-01-0122014-01-0132014-01-0142014-01-01Name:date_account_created,dtype:object>>>column_metadata{'name':'date_account_created','type':'datetime','format':'%Y-%m-%d','uniques':1634}
现在我们可以转换列。
>>>fromrdt.transformers.DTTransformerimportDTTransformer>>>transformer=DTTransformer()>>>transformed_data=transformer.fit_transform(column,column_metadata)>>>transformed_data.head(5)011.388531e+18111.388531e+18211.388531e+18311.388531e+18411.388531e+18
如果要反转转换并取回原始数据,可以运行 服从命令。
>>>reverse_transformed=transformer.reverse_transform(transformed_data,column_metadata)>>>reverse_transformed.head(5)date_account_createddate_account_created02014-01-0112014-01-0122014-01-0132014-01-0142014-01-01
转换表格
还可以使用hypertransformer类转换整个表。再说一次,我们可以从 正在加载数据。
>>>fromrdt.utilsimportget_table_dict>>>meta_file='examples/data/airbnb/Airbnb_demo_meta.json'>>>table_dict=get_table_dict(meta_file)>>>table,table_meta=table_dict['users']
现在您可以将所需变压器的列表传递到fit_transform_table
函数中
改造整张桌子。
>>>fromrdt.hyper_transformerimportHyperTransformer>>>ht=HyperTransformer(meta_file)>>>tl=['DTTransformer','NumberTransformer','CatTransformer']>>>transformed=ht.fit_transform_table(table,table_meta,transformer_list=tl)>>>transformed.head(3).T012?date_account_created1.000000e+001.000000e+001.000000e+00date_account_created1.388531e+181.388531e+181.388531e+18?timestamp_first_active1.000000e+001.000000e+001.000000e+00timestamp_first_active1.654000e+131.654000e+131.654000e+13?date_first_booking1.000000e+000.000000e+000.000000e+00date_first_booking1.388790e+180.000000e+000.000000e+00?gender1.000000e+001.000000e+001.000000e+00gender8.522112e-013.412078e-011.408864e-01?age1.000000e+000.000000e+000.000000e+00age6.200000e+013.700000e+013.700000e+01?signup_method1.000000e+001.000000e+001.000000e+00signup_method3.282037e-013.500181e-014.183867e-01?signup_flow1.000000e+001.000000e+001.000000e+00signup_flow4.453093e-013.716032e-013.906801e-01?language1.000000e+001.000000e+001.000000e+00language2.927157e-015.682538e-016.622744e-01?affiliate_channel1.000000e+001.000000e+001.000000e+00affiliate_channel9.266169e-015.640470e-018.044208e-01?affiliate_provider1.000000e+001.000000e+001.000000e+00affiliate_provider7.717574e-012.539509e-017.288847e-01?first_affiliate_tracked1.000000e+001.000000e+001.000000e+00first_affiliate_tracked3.861429e-018.600605e-014.029200e-01?signup_app1.000000e+001.000000e+001.000000e+00signup_app6.915504e-016.373492e-015.798949e-01?first_device_type1.000000e+001.000000e+001.000000e+00first_device_type6.271052e-012.611754e-016.828802e-01?first_browser1.000000e+001.000000e+001.000000e+00first_browser2.481743e-015.087636e-015.023412e-01
然后可以对输出进行反向转换,以获得原始格式的表,但它将 只包含与已转换列相对应的列(即数字列)。
>>>reverse_transformed=ht.reverse_transform_table(transformed,table_meta)>>>reverse_transformed.head(3).T012date_account_created2014-01-012014-01-012014-01-01timestamp_first_active197001010535401970010105354019700101053540date_first_booking2014-01-04NaNNaNgenderMALE-unknown--unknown-age62NaNNaNsignup_methodbasicbasicbasicsignup_flow000languageenenenaffiliate_channelsem-non-branddirectsem-brandaffiliate_providergoogledirectgooglefirst_affiliate_trackedomguntrackedomgsignup_appWebWebWebfirst_device_typeWindowsDesktopMacDesktopWindowsDesktopfirst_browserChromeFirefoxFirefox
转换数据集
超级转换器还可以转换 立即使用meta.json。
>>>fromrdt.hyper_transformerimportHyperTransformer>>>meta_file='examples/data/airbnb/Airbnb_demo_meta.json'>>>ht=HyperTransformer(meta_file)>>>tl=['DTTransformer','NumberTransformer','CatTransformer']>>>transformed=ht.fit_transform(transformer_list=tl)>>>transformed['users'].head(3).T012?date_account_created1.000000e+001.000000e+001.000000e+00date_account_created1.388531e+181.388531e+181.388531e+18?timestamp_first_active1.000000e+001.000000e+001.000000e+00timestamp_first_active1.654000e+131.654000e+131.654000e+13?date_first_booking1.000000e+000.000000e+000.000000e+00date_first_booking1.388790e+180.000000e+000.000000e+00?gender1.000000e+001.000000e+001.000000e+00gender9.061832e-011.729590e-014.287514e-02?age1.000000e+000.000000e+000.000000e+00age6.200000e+013.700000e+013.700000e+01?signup_method1.000000e+001.000000e+001.000000e+00signup_method5.306912e-014.082081e-013.028973e-01?signup_flow1.000000e+001.000000e+001.000000e+00signup_flow4.597129e-014.751324e-015.495054e-01?language1.000000e+001.000000e+001.000000e+00language2.947847e-014.170684e-015.057820e-01?affiliate_channel1.000000e+001.000000e+001.000000e+00affiliate_channel9.213130e-014.712533e-018.231925e-01?affiliate_provider1.000000e+001.000000e+001.000000e+00affiliate_provider7.649791e-012.028804e-017.174262e-01?first_affiliate_tracked1.000000e+001.000000e+001.000000e+00first_affiliate_tracked3.716114e-016.723371e-013.710109e-01?signup_app1.000000e+001.000000e+001.000000e+00signup_app3.583918e-012.627690e-014.544640e-01?first_device_type1.000000e+001.000000e+001.000000e+00first_device_type6.621950e-013.078130e-017.152115e-01?first_browser1.000000e+001.000000e+001.000000e+00first_browser2.410379e-014.766930e-014.865389e-01>>>transformed['sessions'].head(3).T012?action1.0000001.0000001.000000action0.3613820.5978910.353806?action_type1.0000001.0000001.000000action_type0.0899130.5603510.046400?action_detail1.0000001.0000001.000000action_detail0.0702120.8522460.107477?device_type1.0000001.0000001.000000device_type0.7264470.7112310.710298?secs_elapsed1.0000001.0000001.000000secs_elapsed319.00000067753.000000301.000000>>>reverse_transformed=ht.reverse_transform(tables=transformed)>>>reverse_transformed['users'].head(3).T012date_account_created2014-01-012014-01-012014-01-01timestamp_first_active197001010535401970010105354019700101053540date_first_booking2014-01-04NaNNaNgenderMALE-unknown--unknown-age62NaNNaNsignup_methodbasicbasicbasicsignup_flow000languageenenenaffiliate_channelsem-non-branddirectsem-brandaffiliate_providergoogledirectgooglefirst_affiliate_trackedomguntrackedomgsignup_appWebWebWebfirst_device_typeWindowsDesktopMacDesktopWindowsDesktopfirst_browserChromeFirefoxFirefox>>>reverse_transformed['sessions'].head(3).T012actionlookupsearch_resultslookupaction_typeNoneclickNoneaction_detailNoneview_search_resultsNonedevice_typeWindowsDesktopWindowsDesktopWindowsDesktopsecs_elapsed31967753301
历史记录
0.1.2
- 为正数添加一个数字转换器。
- 添加选项以匿名化分类转换器上的数据。
- 将
col_meta
参数从方法级别移动到类级别。 - 将缺少值的逻辑从变压器移到
HyperTransformer
。 - 已删除
NullTransformer
中的不可检查行。 Numbertransfomer
当列为空时将默认值设置为0。- 为合作者添加cla。
- 重构变压器的性能。
0.1.1
- 改进对中性点进线变压器和整流变压器的处理。
- 为超高压变压器添加单元测试。
- 将未使用的方法
get_types
和impute_table
从高压变压器中删除。 - 使numbertransformer对整数数据强制执行dtype int。
- 转换前让dttransformer检查数据格式。
- 添加最小的API引用。
- 将
rdt.utils
合并到HyperTransformer
类中。
0.1.0
- pypi上的第一个版本。