iobjectspy.ml package¶
Subpackages¶
Submodules¶
iobjectspy.ml.utils module¶
utils模块负责数据处理中的一些常用小功能
-
iobjectspy.ml.utils.
datasetraster_to_df_or_xarray
(source, no_value=None, origin_is_left_up=True)¶ 从栅格数据集 (DatasetGrid) 或影像数据集 (DatasetImage) 中读取数据到 pandas.DataFrame 或 xarray.DataArray。数组的列的数 目为数据集的宽度 (width),行的数目为数据集的高度 (height)。
- 如果是单波段数据集,且不是 RGB 和 RGBA 像素格式的数据集,返回一个二维数组,数组的第一维度为行,第二维度为列,即返回一个 DataFrame
- 如果是 RGB 和 RGBA 的单波段数据集,返回一个三维数组,数组的第一维度为波段,第一维度的大小为 3(RGB)或 4(RGBA),数组的第二维度为行,第三维度为列,即返回 DataArray
- 如果是多波段数据集,返回一个三维数组,数组的第一维度为波段。第一维度的大小为波段的数目,数组的第二维度为行,第三维度为列。即返回 DataArray
参数: - source (DatasetGrid or DatasetImage or str) -- 需要读取数据的栅格数据集或影像数据集对象。如果输入为 str, 则可以使用数据源信息加数据集名称方式表示数据集, 例如,可使用数据源别名'alias/imagedataset';也可以使用数据源的连接信息(udb文件路径, dcf文件路径,或者数据 源连接信息的xml字符串表示),例如使用udb文件,'/home/data/test.udb/imagedataset'。当使用数据源连接信息时, 如果工作空间中已经有相同的数据源信息的数据源存在,则会直接获取已存在的数据源对象,否则会打开一个新的数据源对象。
- no_value (float) -- SuerpMap 的栅格数据集和影像数据集均有无值,用户可以设定一个新值来表示数据集的无值,如果 noValue 不为 None,在返回的 DataFrame 中会使用用户设定的 noValue 来替换无值的栅格或像素。默认为 None,即返回 的数组的无值不改变。
- origin_is_left_up (bool) -- 在返回的 DataFrame 或 DataArray 中,(0,0) 位置的值是数据集的左上角还是左下角,如果为 True, 则表示数组(0,0)的值对应数据集的左上角的值, DataFrame[i][j] 对应数据集中 第i行j列的数值; 如果为 False,则数组的 (0,0) 的值为数据集的左下角的值,即 DataFrame[i][j] 对应数据集中第 (height-i)行j列的 数值。在 SuperMap 的栅格数据集或影像数据集中,数据集的 (0,0) 位置为左上角。默认为 True。
返回: 但读取数据集为一个二维数组时返回一个 DataFrame,如果读取的数据集是一个三维数组,则返回一个 xarray.DataArray
返回类型: pandas.DataFrame or xarray.DataArray
-
iobjectspy.ml.utils.
datasetraster_to_numpy_array
(source, no_value=None, origin_is_left_up=True)¶ 从栅格数据集 (DatasetGrid) 或影像数据集 (DatasetImage) 中读取数据到 numpy 数组中。数组的列的数目为数据集的宽度(width),行的数目为数据集的高度(height)。 如果是单波段数据集,且不是 RGB 和 RGBA 像素格式的数据集,返回一个二维数组,数组的第一维度为行,第二维度为列。如果是 RGB 和 RGBA 的单波段 数据集,返回一个三维数组,数组的第一维度为波段,大小为 3(RGB)或 4(RGBA),数组的第二维度为行,第三维度为列。 如果是多波段数据集,返回一个三维数组,数组的第一维度为波段。第一维度的大小为波段的数目,数组的第二维度为行,第三维度为列。
datasetraster_to_numpy_array()
支持将影像数据集和栅格数据集写出到 numpy 的 ndarray,影像数据集支持多波段影像。在写出影像数据集时:- 如果是 RGB 或 RGBA 像素格式的影像数据集,将会写出为为维度为3的数组,其中第一个维度的大小为3(RGB)或4(RGBA),第二维度为行,第三维度为列;
- 如果是单波段数据集,将会写出为一个维度为2的数组第一维度为行,第二维度为列;
- 如果波段数目大于1,将会写出一个维度为3的数组,其中第一维度为波段,第二维度为为行,第三维度为列;
如果写出为栅格数据集,因为栅格数据集不支持多波段,所以将会写出为一个维度为2的数组。
写出一个 RGB 影像数据集:
>>> datasetraster_to_numpy_array(data_dir + 'example_data.udb/seaport') >>> print(k_array.ndim) 3 >>> print(k_array.shape) (3, 1537, 1728) >>> print(k_array.dtype) uint8 >>> print(k_array) [[[ 21 21 21 ... 192 194 191] [ 21 21 21 ... 191 192 190] [ 21 21 21 ... 190 192 193] ... [ 98 94 91 ... 31 31 29] [101 97 94 ... 30 30 29] [116 114 110 ... 24 24 24]] [[ 56 56 56 ... 196 198 195] [ 56 56 56 ... 195 196 194] [ 56 56 56 ... 194 196 197] ... [119 115 111 ... 25 25 26] [125 121 114 ... 24 24 26] [116 114 110 ... 24 24 24]] [[ 75 75 75 ... 179 181 181] [ 75 75 75 ... 178 179 180] [ 75 75 75 ... 177 179 183] ... [110 106 102 ... 35 35 33] [112 108 105 ... 34 34 33] [116 114 110 ... 24 24 24]]]
写出一个像素格式为 BIT16 的栅格数据集:
>>> datasetraster_to_numpy_array(data_dir + 'example_data.udb/DEM') >>> print(k_array.ndim) 2 >>> print(k_array.shape) (4849, 5892) >>> print(k_array.dtype) int16 >>> print(k_array) [[-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768] ... [-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768]]
另外,需要注意的是 origin_is_left 可以指定生成的数组原点(第0行第0列)对应在 SuperMap 栅格数据集或影像数据集中的左上角还是左下角。在SuperMap的栅格数据集和影像数据集中 第0行和第0列位于左上角,往下则行递增,往右则列递增
[[(0,0), (0,1), (0,2), ... (0, width-2), (0, width-1)] [(1,0), (1,1), (1,2), ... (1, width-2), (1, width-1)] [(2,0), (2,1), (0,2), ... (2, width-2), (2, width-1)] ... ... ... [(height-2,0), (height-2,1), (height-2,2), ... (height-2, width-2), (height-2, width-1)] [(height-1,0), (height-1,1), (height-1,2), ... (height-1, width-2), (height-1, width-1)]]
但在其他软件中可能第0行和第0列位于左下角,往上则行递增,往右则列递增
[(height-1,0), (height-1,1), (height-1,2), ... (height-1, width-2), (height-1, width-1)]] [(height-2,0), (height-2,1), (height-2,2), ... (height-2, width-2), (height-2, width-1)] ... ... ... [(2,0), (2,1), (0,2), ... (2, width-2), (2, width-1)] [(1,0), (1,1), (1,2), ... (1, width-2), (1, width-1)] [(0,0), (0,1), (0,2), ... (0, width-2), (0, width-1)]
所以用户可以根据具体使用情况,选择将左上角还是左下角作为数组的原点。
参数: - source (DatasetGrid or DatasetImage or str) -- 需要读取数据的栅格数据集或影像数据集对象。如果输入为 str, 则可以使用数据源信息加数据集名称方式表示数据集, 例如,可使用数据源别名'alias/imagedataset',也可以使用数据源的连接信息(udb文件路径, dcf文件路径,或者数据 源连接信息的xml字符串表示),例如使用udb文件,'/home/data/test.udb/imagedataset'。当使用数据源连接信息时, 如果工作空间中已经有相同的数据源信息的数据源存在,则会直接获取已存在的数据源对象,否则会打开一个新的数据源对象。
- no_value (float) -- SuerpMap 的栅格数据集和影像数据集均有无值,用户可以设定一个新值来表示数据集的无值,如果 noValue 不为 None,在返回的 numpy 数组中会使用用户设定的 noValue值来替换无值的栅格或像素。默认为 None,即返回 的数组的无值不改变。
- origin_is_left_up (bool) -- 在返回的 numpy 数组中,(0,0) 位置的值是数据集的左上角还是左下角,如果为 True,则表示数组中 (0,0)的值对应数据集的左上角的值, ndarray[i][j] 对应数据集中 第i行j列的数值。如果为 False, 则数组的 (0,0) 的值为数据集的左下角的值,即 ndarray[i][j] 对应数据集中第(height-i)行j列的 数值。在 SuperMap 的栅格数据集或影像数据集中,数据集的 (0,0) 位置为左上角。默认为 True。
返回: numpy 多维数组
返回类型: numpy.ndarray
-
iobjectspy.ml.utils.
datasetvector_to_df
(source, attr_filter=None, fields=None, export_spatial=False, skip_null_value=True, null_values=None)¶ 将矢量数据集写出到 pandas.DataFrame 中
参数: - source (DatasetVector or str) -- 被写出的矢量数据集,支持点、线、面和属性表数据集。支持输入数据集对象以及数据源信息和数据集名称的组合形式,例如 ’alias|point'
- attr_filter (str) -- 属性过滤条件
- fields (list[str]) -- 需要写出的字段,如果为None,将写出所有的非系统字段
- skip_null_value (is) -- 是否跳过含有空值的记录。numpy数组中,不支持整型类型的值为空值,如果列的类型为整型类型但又是空值,会将整型值转为浮点型存储。所以,如果数据集中字段含有空值,需要填入一个空值。对于浮点型的字段,空值为 numpy.nan,对于文本型(TEXT,WTEXT,CHAR,JSONB)为空字符串,布尔类型、二进制类型和时间类型字段的空值为 None。
- null_values (dict) -- 指定的字段对应的空值,key 值为字段名称或字段序号,value 为指定的空值,value 的值的类型需要与字段的类型匹配。例如,需要指定字段整型字段 ID 的空值为 -9999,则 null_values = {'ID': -9999}
返回: 返回一个 DataFrame 对象。
返回类型: pandas.DataFrame
-
iobjectspy.ml.utils.
datasetvector_to_numpy_array
(source, attr_filter=None, fields=None, export_spatial=False, skip_null_value=True, null_values=None)¶ 将矢量数据集写出到 numpy 的数组中
参数: - source (DatasetVector or str) -- 被写出的矢量数据集,支持点、线、面和属性表数据集。支持输入数据集对象以及数据源信息和数据集名称的组合形式,例如 ’alias|point'
- attr_filter (str) -- 属性过滤条件
- fields (list[str]) -- 需要写出的字段,如果为None,将写出所有的非系统字段
- export_spatial (bool) -- 是否导出空间几何对象。对点对象,将直接写出点的 X 和 Y 坐标到 ‘SmX’ 和 ‘SmY’ 列中。对于线面对象,将写出线和面对象的内点,并输出到 ‘SmX’ 和 ‘SmY’ 列中,同时,线将写出 ‘SmLength’字段,面将写出 ‘SmPerimeter’ 和 ‘SmArea 字段。
- skip_null_value (is) -- 是否跳过含有空值的记录。numpy数组中,不支持整型类型的值为空值,如果列的类型为整型类型但又是空值,可能会写出失败。所以,如果数据集中字段含有空值,需要填入一个空值。对于浮点型的字段,空值为 numpy.nan,对于文本型(TEXT,WTEXT,CHAR,JSONB)为空字符串,布尔类型、二进制类型和时间类型字段的空值为 None。
- null_values (dict) -- 指定的字段对应的空值,key 值为字段名称或字段序号,value 为指定的空值,value 的值的类型需要与字段的类型匹配。例如,需要指定整型字段 ID 的空值为 -9999,则 null_values = {'ID': -9999}
返回: numpy 数组,将返回一个维度为1的数组。
返回类型: numpy.ndarray
-
iobjectspy.ml.utils.
df_or_xarray_to_datasetraster
(data, x_resolution, y_resolution, output, x_start=0, y_start=0, out_dataset_name=None, no_value=None, origin_is_left_up=True, as_grid=False)¶ 将 pandas.DataFrame, xarray.DataArray 或 xarray.Dataset 写入到 SuperMap 的栅格或影像数据集中。如果是 xarray.DataArray 或 xarray.Dataset 请先安装 xarray。
参数: - data (DataFrame) -- 被写入的 或 xarray.DataArray 或 xarray.Dataset, 支持二维数值型数组或 三维数值型数组。对于三维数组,只能写入为影像数据集。
- x_resolution (float) -- 结果数据集的 x 方向的分辨率
- y_resolution (float) -- 结果数据集的 y 方向的分辨率
- output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源对象
- x_start (float) -- 右下角 x 的坐标值
- y_start (float) -- 右下角 y 的坐标值
- out_dataset_name (str) -- 结果数据集名称
- no_value (float) -- 指定的无值。默认情形下,栅格数据集的无值为 -9999.
- origin_is_left_up (bool) -- 指定 DataFrame 第0行第0列为栅格数据集或影像数据集的左上角还是左下角。
- as_grid (bool) -- 是否写入为
DatasetGrid
数据集
返回: 结果数据集对象或数据集名称。
返回类型: DatasetGrid or DatasetImage or str
-
iobjectspy.ml.utils.
df_to_datasetvector
(df, output, out_dataset_name=None, x_col=None, y_col=None)¶ 将 pandas DataFrame 对象写入为矢量数据集
参数: - df (pandas.DataFrame) -- 待写入的数据集 pandas DataFrame 对象
- output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源对象
- out_dataset_name (str) -- 结果数据集名称
- x_col (str) -- 写入为点数据集时,点对象 X 值所在的列。如果为空,则写入为属性表数据集。
- y_col (str) -- 写入为点数据集时,点对象 Y 值所在的列。如果为空,则写入为属性表数据集。
返回: 结果数据集对象或数据集名称。
返回类型: DatasetVector or str
-
iobjectspy.ml.utils.
numpy_array_to_datasetraster
(narray, x_resolution, y_resolution, output, x_start=0, y_start=0, out_dataset_name=None, no_value=None, origin_is_left_up=True, as_grid=False)¶ 将 numpy 的数组写入到 SuperMap 的栅格或影像数据集中。
支持将一个二维数组或三维数组写入到影像数据集或栅格数据集中,如果选择写入到栅格数据集,则只能是二维数组。如果写入到影像数据 集,数组为三维数组时,第一个维度必须为波段信息,同时第二维度和第三维度必须为行和列:
>>> d = numpy.empty((100, 100), dtype='float32') >>> for i in range(100): ... for j in range(100): ... d[i][j] = i * j + i >>> iobjects.numpy_array_to_datasetraster(d, 0.1, 0.1, out_dir + 'narray_out.udb', as_grid=True)
参数: - narray (numpy.ndarray) -- 被写入的 numpy 数组,支持二维数值型数组或三维数值型数组。对于三维数组,只能写入为影像数据集。
- x_resolution (float) -- 结果数据集的 x 方向的分辨率
- y_resolution (float) -- 结果数据集的 y 方向的分辨率
- output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源对象
- x_start (float) -- 右下角 x 的坐标值
- y_start (float) -- 右下角 y 的坐标值
- out_dataset_name (str) -- 结果数据集名称
- no_value (float) -- 指定的无值。默认情形下,栅格数据集的无值为 -9999.
- origin_is_left_up (bool) -- 指定 numpy 数组的第0行第0列为栅格数据集或影像数据集的左上角还是左下角。
- as_grid (bool) -- 是否写入为
DatasetGrid
数据集
返回: 结果数据集对象或数据集名称。
返回类型: DatasetGrid or DatasetImage or str
-
iobjectspy.ml.utils.
numpy_array_to_datasetvector
(narray, output, out_dataset_name=None, x_col=None, y_col=None)¶ 将 numpy 的数组写入到 SuperMap 的矢量数据集中
支持将一个含有 dtype 信息和列名称的 ndarray 数组写入到 SuperMap 的矢量数据集中,如果指定了 X 和 Y 字段值的列名称,将会写 入为点数据集,否则,将写入为属性表数据集。注意的是,ndarray 必须含有列名称才可能写入:
>>> narray = np.empty(10, dtype=[('ID', 'int32'), ('X', 'float64'), ('Y', 'float64'), ('NAME', 'U10'), ('COUNT', 'int32')]) >>> narray[0] = 1, 116.380351, 39.93393099, '什刹海', 1023 >>> narray[1] = 2, 116.365305, 39.89622499, '广安门内', 10 >>> narray[2] = 3, 116.427342, 39.89467499, '崇文门外', 238 >>> narray[3] = 4, 116.490881, 39.96567299, '酒仙桥', 1788 >>> narray[4] = 5, 116.447486, 39.93767799, '三里屯', 8902 >>> narray[5] = 6, 116.347435, 40.08078599, '回龙观', 903 >>> narray[6] = 7, 116.407196, 39.83895899, '大红门', 88 >>> narray[7] = 8, 116.396915, 39.88371499, '天桥', 5 >>> narray[8] = 9, 116.334522, 40.03594199, '清河', 77 >>> narray[9] = 10, 116.03008, 39.87852799, '潭柘寺', 1 >>> result = numpy_array_to_datasetvector(narray, out_dir + 'narray_out.udb', x_col='X', y_col='Y')
参数: - narray (numpy.ndarray) -- 被写入的 numpy 数组
- output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源对象
- out_dataset_name (str) -- 结果数据集名称
- x_col (str) -- 写入为点数据集时,点对象 X 值所在的列。如果为空,则写入为属性表数据集。
- y_col (str) -- 写入为点数据集时,点对象 Y 值所在的列。如果为空,则写入为属性表数据集。
返回: 结果数据集对象或数据集名称。
返回类型: DatasetVector or str
-
iobjectspy.ml.utils.
recordset_to_df
(recordset, fields=None, export_spatial=False, skip_null_value=True, null_values=None)¶ 将一个记录集写出到 pandas.DataFrame 中,支持将点数据集、线数据集、面数据集和属性表数据集的记录集写出。
参数: - recordset (Recordset) -- 被写出数据集的记录集
- fields (list[str]) -- 需要写出的字段名称,如果为 None,则将全部非系统字段都写出
- export_spatial (bool) -- 是否写出空间几何信息,对点对象,将直接写出点的 X 和 Y 坐标到 ‘SmX’ 和 ‘SmY’ 列中。对于线面对象,将写出线和面对象的内点,并输出到 ‘SmX’ 和 ‘SmY’ 列中,同时,线将写出 ‘SmLength’字段,面将写出 ‘SmPerimeter’ 和 ‘SmArea 字段。
- skip_null_value (is) -- 是否跳过含有空值的记录。由于 DataFrame 中,不支持整型类型的值为空值,如果列的类型为整型类型但又是空值,会将整型值转为浮点型存储。所以,如果数据集中字段含有空值,需要填入一个空值。对于浮点型的字段,空值为 numpy.nan,对于文本型(TEXT,WTEXT,CHAR,JSONB)为空字符串,布尔类型、二进制类型和时间类型字段的空值为 None。
- null_values (dict) -- 指定的字段对应的空值,key 值为字段名称或字段序号,value 为指定的空值,value 的值的类型需要与字段的类型匹配。例如,需要指定整型字段 ID 的空值为 -9999,则 null_values = {'ID': -9999}
返回: 返回一个 DataFrame 对象。
返回类型: pandas.DataFrame
-
iobjectspy.ml.utils.
recordset_to_numpy_array
(recordset, fields=None, export_spatial=False, skip_null_value=True, null_values=None)¶ 将一个记录集写出到 numpy.ndarray 中,支持将点数据集、线数据集、面数据集和属性表数据集的记录集写出。
recordset_to_numpy_array()
和datasetvector_to_numpy_array()
用于将矢量数据写出为 ndarray。写出的 ndarray 为一维数组,数组的每项元素均含有多个子元素,可以直接使用列名称获取子项所在的列,例如,通过下面的代码可以直接读取矢量数据:>>> narray = datasetvector_to_numpy_array(data_dir + 'example_data.udb/Town_P', export_spatial=True) >>> print('ndarray.ndim : ' + str(narray.ndim)) ndarray.ndim : 1 >>> print('ndarray.dtype : ' + str(narray.dtype)) ndarray.dtype : [('NAME', '<U9'), ('SmX', '<f8'), ('SmY', '<f8')] >>> print(narray[:10]) [('百尺竿乡', 115.917748, 39.53525099) ('什刹海', 116.380351, 39.93393099) ('月坛', 116.344828, 39.91476099) ('广安门内', 116.365305, 39.89622499) ('牛街', 116.36388 , 39.88680299) ('崇文门外', 116.427342, 39.89467499) ('永定门外', 116.402249, 39.86559299) ('崔各庄', 116.515447, 39.99966499) ('小关', 116.411727, 39.97737199) ('潘家园', 116.467911, 39.87179299)] >>> print(narray['SmX'][:10]) [115.917748 116.380351 116.344828 116.365305 116.36388 116.427342 116.402249 116.515447 116.411727 116.467911] >>> xy_array = np.c_[narray['SmX'], narray['SmY']][:10] >>> print(xy_array.ndim) 2 >>> print(xy_array.dtype) float64 >>> print(xy_array) [[115.917748 39.53525099] [116.380351 39.93393099] [116.344828 39.91476099] [116.365305 39.89622499] [116.36388 39.88680299] [116.427342 39.89467499] [116.402249 39.86559299] [116.515447 39.99966499] [116.411727 39.97737199] [116.467911 39.87179299]]
写出矢量数据时,可以选择是否写出空间信息,对于点对象,写出点的 X 和 Y 坐标到 SmX 列和 SmY 列中;对线对象,将写出线的内点
GeoLine.get_inner_point()
到 SmX 列和 SmY列,并将线 的长度字段值 SmLength 写出为 SmLength 列;对于面对象,将写出面的内点GeoRegion.get_inner_point()
到 SmX 列和 SmY列,并将面的周长字段值 SmPerimeter 写出为 SmPerimeter 列, 面的面积字段值 SmArea 写出为 SmArea 列。>>> narray = datasetvector_to_numpy_array(data_dir + 'example_data.udb/Landuse_R', export_spatial=True) >>> print(narray.dtype) [('LANDTYPE', '<U4'), ('Area', '<f4'), ('Area_1', '<i2'), ('SmX', '<f8'), ('SmY', '<f8'), ('SmPerimeter', '<f8'), ('SmArea', '<f8')] >>> print(narray[:10]) [('用材林', 132., 132, 116.47779337, 40.87251703, 0.75917921, 1.40894401e-02) ('用材林', 97., 97, 116.6540059 , 40.94696274, 0.4945153 , 1.03534475e-02) ('灌丛', 36., 36, 116.58451795, 40.98712283, 0.25655489, 3.89923745e-03) ('灌丛', 36., 36, 116.89611418, 40.76792703, 0.59237713, 3.81791878e-03) ('用材林', 1., 1, 116.37943683, 40.91435429, 0.03874328, 7.08450886e-05) ('灌丛', 126., 126, 116.49117083, 40.78302383, 0.53664074, 1.34577856e-02) ('用材林', 83., 83, 116.69943237, 40.74456848, 0.39696365, 8.83225363e-03) ('用材林', 128., 128, 116.8129727 , 40.69116153, 0.56949408, 1.35877743e-02) ('用材林', 29., 29, 116.24543769, 40.71076092, 0.30082509, 3.07221559e-03) ('灌丛', 467., 467, 116.43290772, 40.50875567, 1.91745792, 4.95537433e-02)]
参数: - recordset (Recordset) -- 被写出数据集的记录集
- fields (list[str]) -- 需要写出的字段名称,如果为 None,则将全部非系统字段都写出
- export_spatial (bool) -- 是否写出空间几何信息,对点对象,将直接写出点的 X 和 Y 坐标到 ‘SmX’ 和 ‘SmY’ 列中。对于线面对象,将写出线和面对象的内点坐标,并输出到 ‘SmX’ 和 ‘SmY’ 列中,同时,线将写出 ‘SmLength’字段,面将写出 ‘SmPerimeter’ 和 ‘SmArea 字段。
- skip_null_value (is) -- 是否跳过含有空值的记录。numpy数组中,不支持整型类型的值为空值,如果列的类型为整型类型但又是空值,可能会写出失败。所以,如果数据集中字段含有空值,需要填入一个空值。对于浮点型的字段,空值为 numpy.nan,对于文本型(TEXT,WTEXT,CHAR,JSONB)为空字符串,布尔类型、二进制类型和时间类型字段的空值为 None。
- null_values (dict) -- 指定的字段对应的空值,key 值为字段名称或字段序号,value 为指定的空值,value 的值的类型需要与字段的类型匹配。例如,需要指定整型字段 ID 的空值为 -9999,则 null_values = {'ID': -9999}
返回: numpy 数组,将返回一个维度为1的数组。
返回类型: numpy.ndarray