12
12
import ibis
13
13
import ibis .expr .operations as ops
14
14
import ibis .expr .types as ir
15
- import numpy as np
16
- import pandas as pd
17
- import pyarrow as pa
18
15
from ibis .common .dispatch import lazy_singledispatch
19
16
20
17
if TYPE_CHECKING :
21
18
import dask .dataframe as dd
19
+ import numpy as np
20
+ import pandas as pd
22
21
import polars as pl
22
+ import pyarrow as pa
23
23
import xgboost as xgb
24
24
from sklearn .utils ._estimator_html_repr import _VisualBlock
25
25
@@ -45,6 +45,9 @@ def _ibis_table_to_numpy(table: ir.Table) -> np.ndarray:
45
45
46
46
def _y_as_dataframe (y : Any ) -> pd .DataFrame :
47
47
"""Coerce `y` to a pandas dataframe"""
48
+ import numpy as np
49
+ import pandas as pd
50
+
48
51
if isinstance (y , pd .DataFrame ):
49
52
return y
50
53
elif isinstance (y , pd .Series ):
@@ -144,8 +147,11 @@ def _(X, y=None, maintain_order=False):
144
147
return table , tuple (y .columns ), None
145
148
146
149
147
- @normalize_table .register (pd .DataFrame )
150
+ @normalize_table .register (" pd.DataFrame" )
148
151
def _ (X , y = None , maintain_order = False ):
152
+ import numpy as np
153
+ import pandas as pd
154
+
149
155
if y is not None :
150
156
y = _y_as_dataframe (y )
151
157
table = pd .concat ([X , y ], axis = 1 )
@@ -162,8 +168,11 @@ def _(X, y=None, maintain_order=False):
162
168
return ibis .memtable (table ), targets , index
163
169
164
170
165
- @normalize_table .register (np .ndarray )
171
+ @normalize_table .register (" np.ndarray" )
166
172
def _ (X , y = None , maintain_order = False ):
173
+ import numpy as np
174
+ import pandas as pd
175
+
167
176
X = pd .DataFrame (X , columns = [f"x{ i } " for i in range (X .shape [- 1 ])])
168
177
if y is not None :
169
178
y = _y_as_dataframe (y )
@@ -181,8 +190,11 @@ def _(X, y=None, maintain_order=False):
181
190
return ibis .memtable (table ), targets , index
182
191
183
192
184
- @normalize_table .register (pa .Table )
193
+ @normalize_table .register (" pa.Table" )
185
194
def _ (X , y = None , maintain_order = False ):
195
+ import numpy as np
196
+ import pyarrow as pa
197
+
186
198
if y is not None :
187
199
if isinstance (y , (pa .ChunkedArray , pa .Array )):
188
200
y = pa .Table .from_pydict ({"y" : y })
@@ -246,6 +258,8 @@ def get_categories(self, column: str) -> pa.Array | None:
246
258
return self .categories .get (column )
247
259
248
260
def set_categories (self , column : str , values : pa .Array | list [Any ]) -> None :
261
+ import pyarrow as pa
262
+
249
263
self .categories [column ] = pa .array (values )
250
264
251
265
def drop_categories (self , column : str ) -> None :
@@ -255,6 +269,8 @@ def drop_categories(self, column: str) -> None:
255
269
def _categorize_wrap_reader (
256
270
reader : pa .RecordBatchReader , categories : dict [str , pa .Array ]
257
271
) -> Iterable [pa .RecordBatch ]:
272
+ import pyarrow as pa
273
+
258
274
for batch in reader :
259
275
out = {}
260
276
for name , col in zip (batch .schema .names , batch .columns ):
@@ -620,6 +636,8 @@ def _categorize_pandas(self, df: pd.DataFrame) -> pd.DataFrame:
620
636
return df
621
637
622
638
def _categorize_pyarrow (self , table : pa .Table ) -> pa .Table :
639
+ import pyarrow as pa
640
+
623
641
if not self .metadata_ .categories :
624
642
return table
625
643
@@ -645,6 +663,8 @@ def _categorize_dask_dataframe(self, ddf: dd.DataFrame) -> dd.DataFrame:
645
663
def _categorize_pyarrow_batches (
646
664
self , reader : pa .RecordBatchReader
647
665
) -> pa .RecordBatchReader :
666
+ import pyarrow as pa
667
+
648
668
if not self .metadata_ .categories :
649
669
return reader
650
670
0 commit comments