我正在接收 API 資料,我試圖將這些資料處理成散景堆積條形圖。Bokeh 檔案顯示我需要這種格式:
data = {
x : [1, 2, 3, 4, 5],
y1 : [1, 2, 4, 3, 4],
y2 : [1, 4, 2, 2, 3],
}
我的資料來自我的 for 回圈,如下所示:
ts = [0, 1, 1, 1, 1, 2, 2, 4, 4, 4]
tx = [0, 233, 121, 34, 4, 22, 522, 11, 245, 3]
因此需要像這樣結束:
# the xlist = the unique values of ts
# the number of layers below = count (4) of most common element of ts (1)
# the length of each layer list = the number of unique elements (4) of ts (0,1,2,4)
data = {
xlist : [0, 1, 2, 4]
layer0 : [0, 233, 22, 11]
layer1 : [0, 121, 522, 245]
layer2 : [0, 34, 0, 3]
layer3 : [0, 4, 0, 0]
}
給定:
- ts 值將始終 >= 前一個值,它們將是紀元時間戳。
- 將(應該)總是有 2 個等長的串列。
這讓我有了字典的骨架,所以我覺得我很接近了,但是回圈中的邏輯超出了我的理解范圍。如果有人可以對此提供最佳實踐方法提供幫助,我將不勝感激。
from statistics import mode
def stacker(list1, list2):
data={}
xlist = list(set(list1))
if len(list1) != len(list2):
layer0 = [0]*len(list1)
data=dict(xlist, layer0)
print("lists weren't equal length")
return data
data['xlist'] = xlist
modeVal = mode(list1)
layercount = list1.count(modeVal)
for i in range(layercount):
data['layer' str(i)] = []
# loops
return data
uj5u.com熱心網友回復:
使用 numpy 可以嗎?您必須配置 num_layers 變數,我已將其設定為 4 以在示例中相同。這是我的嘗試:
import numpy as np
ts = [0, 1, 1, 1, 1, 2, 2, 4, 4, 4]
tx = [0, 233, 121, 34, 4, 22, 522, 11, 245, 3]
xlist = list(set(ts))
ylist = []
i_list = []
for x in xlist:
for i in range(len(ts)):
if x == ts[i]:
#print(x, tx[i])
i_list.append(tx[i])
ylist.append(i_list)
i_list =[]
num_layers = 4
mod_ylist = []
for element in ylist:
mod_ylist.append(element [0]*(num_layers - len(element)))
final = np.array(mod_ylist).T
data = {'xlist' : xlist}
for i in range(len(final)):
data['layer' str(i)] = final[i].tolist()
print(data)
這是輸出:
{'xlist': [0, 1, 2, 4], 'layer0': [0, 233, 22, 11], 'layer1': [0, 121, 522, 245], 'layer2': [0, 34, 0, 3], 'layer3': [0, 4, 0, 0]}
這是直接從控制臺輸出,在我也列印得很漂亮之后。請注意,條目是亂序的,因為字典是無序的。

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/404561.html
標籤:
上一篇:合并具有相同鍵值對的Json
