如何为 dask.dataframe 指定元数据
How to specify metadata for dask.dataframe
文档提供了很好的示例,how metadata can be provided。但是,在为我的数据框选择正确的数据类型时,我仍然不确定。
- 我可以做类似
meta={'x': int 'y': float,
'z': float}
而不是 meta={'x': 'i8', 'y': 'f8', 'z': 'f8'}
的事情吗?
- 有人可以提示我列出可能的值,例如 'i8' 吗?什么
dtype 存在吗?
- 如何指定包含任意对象的列?如何指定一列,它只包含一个 class?
的实例
可用的基本数据类型是通过 numpy 提供的。查看 documentation 列表。
此集合中不包含日期时间格式(例如 datetime64
),可在 pandas and numpy 文档中找到更多信息。
dask 数据帧的元参数通常需要一个空的 pandas 数据帧来保存列、索引和数据类型的定义。
构建此类 DataFrame 的一种方法是:
import pandas as pd
import numpy as np
meta = pd.DataFrame(columns=['a', 'b', 'c'])
meta.a = meta.a.astype(np.int64)
meta.b = meta.b.astype(np.datetime64)
还有一种方法可以为 pandas 数据框的构造函数提供 dtype,但是,我不确定如何为每个单独的列提供它们。如您所见,不仅可以为数据类型提供 "name",还可以提供实际的 numpy dtype。
关于您的最后一个问题,您要查找的数据类型是 "object"。例如:
import pandas as pd
class Foo:
def __init__(self, foo):
self.bar = foo
df = pd.DataFrame(data=[Foo(1), Foo(2)], columns=['a'], dtype='object')
df.a
# 0 <__main__.Foo object at 0x00000000058AC550>
# 1 <__main__.Foo object at 0x00000000058AC358>
Dask.dataframe 和 Pandas 都使用 NumPy 数据类型。特别是,您可以将其中的任何内容传递给 np.dtype。这包括以下内容:
- NumPy dtype 对象,例如
np.float64
- Python 类型对象,如
float
- NumPy dtype 字符串,如
'f8'
这是从 NumPy 文档中获取的更广泛的列表:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types
文档提供了很好的示例,how metadata can be provided。但是,在为我的数据框选择正确的数据类型时,我仍然不确定。
- 我可以做类似
meta={'x': int 'y': float, 'z': float}
而不是meta={'x': 'i8', 'y': 'f8', 'z': 'f8'}
的事情吗? - 有人可以提示我列出可能的值,例如 'i8' 吗?什么 dtype 存在吗?
- 如何指定包含任意对象的列?如何指定一列,它只包含一个 class? 的实例
可用的基本数据类型是通过 numpy 提供的。查看 documentation 列表。
此集合中不包含日期时间格式(例如 datetime64
),可在 pandas and numpy 文档中找到更多信息。
dask 数据帧的元参数通常需要一个空的 pandas 数据帧来保存列、索引和数据类型的定义。
构建此类 DataFrame 的一种方法是:
import pandas as pd
import numpy as np
meta = pd.DataFrame(columns=['a', 'b', 'c'])
meta.a = meta.a.astype(np.int64)
meta.b = meta.b.astype(np.datetime64)
还有一种方法可以为 pandas 数据框的构造函数提供 dtype,但是,我不确定如何为每个单独的列提供它们。如您所见,不仅可以为数据类型提供 "name",还可以提供实际的 numpy dtype。
关于您的最后一个问题,您要查找的数据类型是 "object"。例如:
import pandas as pd
class Foo:
def __init__(self, foo):
self.bar = foo
df = pd.DataFrame(data=[Foo(1), Foo(2)], columns=['a'], dtype='object')
df.a
# 0 <__main__.Foo object at 0x00000000058AC550>
# 1 <__main__.Foo object at 0x00000000058AC358>
Dask.dataframe 和 Pandas 都使用 NumPy 数据类型。特别是,您可以将其中的任何内容传递给 np.dtype。这包括以下内容:
- NumPy dtype 对象,例如
np.float64
- Python 类型对象,如
float
- NumPy dtype 字符串,如
'f8'
这是从 NumPy 文档中获取的更广泛的列表:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types