В Databricks кадры данных, созданные с помощью Python, SQL, SparkR или PySpark, можно красиво и интерактивно отображать с помощью функции display(df)
. Однако фрейм данных R из базы R нельзя отобразить с помощью последней функции. Я пытался использовать View
, но он не смог отобразить фрейм данных, и я могу отобразить его только с помощью head
или tail
. Существуют ли собственные методы Databricks для отображения кадров данных R?
Ради воспроизводимого примера я пытаюсь отобразить эти два фрейма данных:
%python
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]), columns = ['a', 'b', 'c'])
display(df)
%r
df <- data.frame(a = c(1,4,7), b = c(2,5,7), c = c(3,6,9))
head(df)
Приложены два снимка экрана: один для функции display
, которую я имею в виду в Databricks, которая интерактивно и красиво отображает фрейм данных, а другой отображает фреймы данных R.
Проведя некоторое исследование, я обнаружил, что библиотека R data.table
намного эффективнее обрабатывает большие наборы данных и может использоваться для красивой печати фреймов данных в Databricks. Он по-прежнему имеет ограничения на размер данных, которые могут быть напечатаны, что меньше ограничения на отображение фреймов данных Python, но позволяет прокручивать вверх и вниз и видеть начало и конец фреймов данных.
Обратите внимание, что обе приведенные ниже функции печати могут работать с базовыми кадрами данных R и кадрами данных data.table
. data.table
упоминается здесь только в целях повышения эффективности и/или соображений.
# Attach data.table library after installing it -- install.packages("data.table")
# or install it through the cluster's libraries:
library(data.table)
# Adding more data to my previous R df:
df <- data.frame(a = c(0:1200), b = seq(0, 12000, by = 10), c = seq(0, 600, by=0.5))
# Convert the base R data frame into a data.table data frame:
dt <- setDT(df)
Теперь самое интересное; отображение фрейма данных. Если фрейм данных относится к классу или типу data.table
, то data.table
имеет несколько вариантов отображения фрейма данных:
Использование печати()
print(dt)
Результат:
Или,
Использование print.AsIs()
print.AsIs(dt)
Результат:
Последний позволяет прокручивать всю таблицу данных, но, как и display
, имеет ограничение на количество отображаемых записей, если таблица имеет очень большой размер.
Класс
data.frame
имеет методы печати. В базовых методах нет класса с именем Data.Frame. Вероятно, вашей структуре данных нужен конкретный пакет, в котором определены функции для этого класса.