跳转到主要内容

Visions

项目描述


这些数据类型愿景,让我们熬夜到天亮。

语义数据库

Visions 提供了一套定义和使用 语义 数据类型的工具。

  • 语义类型 检测与推断在序列数据上。

  • 自动化数据处理

  • 完全可定制。 Visions 使构建和修改针对特定领域的语义数据类型变得容易。

  • 支持多种 后端实现,包括pandas、spark、numpy和python。

  • 一组强大的 默认类型和类型集,涵盖了最常见的使用场景。

请查看完整的文档这里

安装

源代码可在 github 上找到,并通过pip提供二进制安装程序。

# Pip
pip install visions

完整的安装说明(包括额外内容)可在文档中找到。

快速入门指南

如果您想立即播放,请查看上的示例文件夹。否则,让我们获取一些数据。

import pandas as pd

df = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")
df.head(2)
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38.0 1 0 PC 17599 71.2833 C85 C

visions中最重要的抽象是类型 - 这些代表关于数据的语义概念。您可以使用一系列经过充分测试的类型,如IntegerFloatFiles,涵盖最常见的软件开发用例。类型可以组合成类型集。在幕后,visions为任何类型的集合构建一个可遍历的图。

from visions import types, typesets

# StandardSet is the basic builtin typeset
typeset = typesets.CompleteSet()
typeset.plot_graph()

注意:绘图需要安装pygraphviz

由于类型之间存在特殊关系,这些图可以用来检测数据类型或推断更合适的类型。

# Detection looks like this
typeset.detect_type(df)

# While inference looks like this
typeset.infer_type(df)

# Inference works well even if we monkey with the data, say by converting everything to strings
typeset.infer_type(df.astype(str))
>> {
    'PassengerId': Integer,
    'Survived': Integer,
    'Pclass': Integer,
    'Name': String,
    'Sex': String,
    'Age': Float,
    'SibSp': Integer,
    'Parch': Integer,
    'Ticket': String,
    'Fare': Float,
    'Cabin': String,
    'Embarked': String
}

Visions解决了处理表格数据时最常见的许多问题,例如,整数序列仍然被视为整数,即使它们在转换为浮点数后具有尾随的0,或者存在缺失值或其他情况。其中大部分清理都是自动完成的,并提供干净、处理过的数据。

cleaned_df = typeset.cast_to_inferred(df)

这仅仅是一些visions能做的事情的冰山一角,包括构建您自己的特定领域的类型和类型集,请查看API文档或examples/目录以获取更多信息!

支持框架

由于其基于派发的实现方式,Visions能够利用由pandas和spark等库提供的特定框架的功能。目前,它默认支持以下后端。

  • Pandas(功能完整)
  • Numpy(布尔值、复数、日期时间、浮点数、整数、字符串、时间差、字符串、对象)
  • Spark(布尔值、分类、日期、日期时间、浮点数、整数、数值、对象、字符串)
  • Python(字符串、浮点数、整数、日期时间、时间差、布尔值、分类、对象、复数 - 其他数据类型未经过测试)

如果您正在使用pandas,它还会利用如swifter之类的并行化工具(如果可用)。

它还提供了一个简单的基于注释的API,用于按需注册新实现。例如,如果您希望扩展分类数据类型以包括Dask特定实现,您可能需要做一些类似以下操作

from visions.types.categorical import Categorical
from pandas.api import types as pdt
import dask


@Categorical.contains_op.register
def categorical_contains(series: dask.dataframe.Series, state: dict) -> bool:
    return pdt.is_categorical_dtype(series.dtype)

贡献和支持

欢迎向visions贡献。有关更多信息,请访问社区贡献页面并加入我们的slack。GitHub 问题跟踪器用于报告错误、功能请求和支持问题。

此外,请查看一些使用visions的其他公司和包,包括

如果您目前正在使用visions或希望在此处展示,请告诉我们。

致谢

本包是 dylan-profiler 项目的一部分。该包是 pandas-profiling 的核心组件。更多信息可以在 这里 找到。这项工作部分得到 SIDN Fonds 的支持。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码发行版

visions-0.7.6.tar.gz (566.6 kB 查看哈希)

上传时间 源代码

构建发行版

visions-0.7.6-py3-none-any.whl (104.8 kB 查看哈希)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面