将表格数据存储在Swift

时间:2019-05-02 11:48:13

标签: ios swift

我想知道是否有任何一种数据结构或库可以让我存储表格数据(并向其中添加新数据),例如以及对其进行操作(计算聚合等)。

具体地说,我正在寻找类似于pandas(对于python)的东西。现在我不需要绘制数据表,而只需要存储数据。

例如,假设我想每5秒将值添加到一个表中,这样一来,我将每小时将信息聚合到一个新的数据结构中。如果还有图表库,例如matplotlib,但也很方便,那也将很棒。

非常感谢您

5 个答案:

答案 0 :(得分:2)

也许这可以帮助您?

struct Table<T>{
    typealias Columns = [T]
    typealias Rows = [Columns]
    private var data: Rows = []

    mutating func appendRow(row: Columns){
        data.append(row)
    }

    func getRow(index: Int) -> Columns?{
        return data[safe: index]
    }
}

var intTable = Table<Int>()
intTable.appendRow(row: [1,2,3,4])
intTable.appendRow(row: [1,2,3])

var anyTable = Table<Any>()
anyTable.appendRow(row: ["Hello World", 12])

答案 1 :(得分:2)

请签出https://github.com/Tylerc230/Raccon

这支持带有切片和矢量运算以及数据帧的Series。

希望这会有所帮助。

答案 2 :(得分:0)

您可以使用SwiftyTextTable:https://github.com/scottrhoyt/SwiftyTextTable

它很棒而且非常易于使用。假设您可以将数据存储在这样的表中。

/*
+-----+-----+-----+
| foo | bar | baz |
+-----+-----+-----+
| 1   | 2   | 3   |
| 11  | 22  | 33  |
+-----+-----+-----+
*/

存储此数据的快速代码为

// create columns

let column1 = TextTableColumn(header: "foo")
let column2 = TextTableColumn(header: "bar")
let column3 = TextTableColumn(header: "baz")

// Then create a table with the columns

var table = TextTable(columns: [column1, column2, column3])


// Then add some rows

table.addRow([1, 2, 3])
table.addRow([11, 22, 33])

答案 3 :(得分:0)

您还可以使用以下库:https://github.com/AramKoorn/swifty

要以表格形式存储数据,您可以轻松创建类似DataFrame的

 var df1 = DataFrame(data: [[1, 2], ["a", "b"]], columns: ["col1", "col2"])

如果要附加数据,可以使用concat()函数。例如

  var df2 = DataFrame(data: [[3, 4], ["c", "d"]], columns: ["col1", "col2"])
  df1.concat(data: [df2], axis: "rows")

输出将是:

<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;}
.tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
  overflow:hidden;padding:10px 5px;word-break:normal;}
.tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
  font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;}
.tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}
</style>
<table class="tg">
<thead>
  <tr>
    <th class="tg-0pky">col1</th>
    <th class="tg-0pky">col2</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td class="tg-0pky">1</td>
    <td class="tg-0pky">a</td>
  </tr>
  <tr>
    <td class="tg-0pky">2</td>
    <td class="tg-0pky">b</td>
  </tr>
  <tr>
    <td class="tg-0pky">3</td>
    <td class="tg-0pky">c</td>
  </tr>
  <tr>
    <td class="tg-0pky">4</td>
    <td class="tg-0pky">d</td>
  </tr>
</tbody>
</table>

答案 4 :(得分:0)

Apple 为此制定了一个名为 TabularData 的框架。

它允许您从 JSON 和 CSV 文件导入和导出数据,以及以编程方式存储、排序和汇总具有简单统计数据的表格数据,例如元素计数、最大值、最小值、meanstandard deviation .

请注意,它仅适用于 iOS 15.0+、macOS 12.0+、tvOS 15.0+ 或 watchOS 8.0+

相关问题