Фреймворк TabularData набирает обороты, обрабатывая таблицы данных для подготовки моделей машинного обучения. Но не позволяйте описанию на упаковке заставить вас оставить его в покое, под этим маленьким парнем скрывается огромная сила.
Например, фреймворк может быть использован для:
Парсинг .csv файлов
Парсинг .json файлы
Импорт или экспорт
Загружайте удивительные логи в свою консоль из ваших собственных моделей.
Его полезность выходит за рамки этого, но я хочу показать вам небольшой трюк, для которого я его использую, - в частности, касающийся пункта № 4 выше. Например, у тебя есть.json, подобный этому:
{
"people":[
{
"name": "David",
"mobile": 33333333,
"hasPets": true,
"pets": ["Dog", "Fish", "Bird"],
"address": {
"permanent": "France",
"current": "UK"
}
},
{
"name": "Jordan",
"mobile": 33333333,
"hasPets": false,
"pets": [],
"address": {
"permanent": "Austrailia",
"current": "US"
}
}
]
}Но представьте, что он больше, например….намного больше. Даже огромным? Скажем, 1000 или около того записей. Если бы вы должны были расшифровать такой ответ, используя пешеходные (pedestrian) модели, подобные этой:
import Foundation
struct Tennants: Codable {
let renters: [Renter]
enum CodingKeys: String, CodingKey {
case renters = "people"
}
}
struct Renter: Codable {
let name: String
let mobile: Int
let hasPets: Bool
let pets: [String]
let address: Address
}
struct Address: Codable {
let permanent, current: String
}
// Later on...
do {
let decoder = JSONDecoder()
let people: Tennants = try decoder.decode(Tennants.Type,
from: data)
print(people)
} catch {
Swift.debugPrint("Unable to decode response: \(error.localizedDescription)")
}и просто print (или dump, .Swift.DebugPrint, Mirror(reflecting:)) в консоль, вы увидите что-то вроде этого:
Tennants(renters: [SwiftUI_Playgrounds.Renter(name: "David", mobile: 33333333, hasPets: true, pets: ["Dog", "Fish", "Bird"], address: SwiftUI_Playgrounds.Address(permanent: "France", current: "UK")), SwiftUI_Playgrounds.Renter(name: "Jordan", mobile: 33333333, hasPets: false, pets: [], address: SwiftUI_Playgrounds.Address(permanent: "Austrailia", current: "US")), SwiftUI_Playgrounds.Renter(name: "Peter", mobile: 33333333, hasPets: true, pets: ["Lizard"], address: SwiftUI_Playgrounds.Address(permanent: "India", current: "FR")), SwiftUI_Playgrounds.Renter(name: "Sarah", mobile: 33333333, hasPets: false, pets: [], address: SwiftUI_Playgrounds.Address(permanent: "Egypt", current: "US")), SwiftUI_Playgrounds.Renter(name: "Rory", mobile: 33333333, hasPets: true, pets: ["Snakes"], address: SwiftUI_Playgrounds.Address(permanent: "United Kingdom", current: "US"))])В крайнем случае, это неплохо, и, безусловно, пригодно для использования. Но если вы поместите эти данные в DataFrame TabularData и выведете это? Что ж, давайте просто рискнем сказать, что это чуть приятнее. Гляньте на это:

Разве это не прекрасно
