pandas数据帧转换为xyz数据以用于pyecharts



我正在字符串中使用pyecharts绘制3D-BARS图,如下所示的数据结构来自csv文件。

Date        School1 School2 School3
2021/3/1    853     195     316 
2021/3/2    165     257     461 
2021/3/3    469     314     167 
2021/3/4    857     532     495 
2021/3/5    326     139     595 
2021/3/6    802     616     439 
2021/3/7    768     962     416 
2021/3/8    911     241     82 
2021/3/9    960     965     229 

Pyecharts Bar3D将数据绘制为X、Y、Z轴方式,顺序如下:

x0,y0,z0(value)
x0,y1,z1
x0,y2,z2
...
x1,y0,zn

那么,有什么简单的方法可以将上面的数据帧数据转换为"xyz"数据吗?

根据bar3d((,data由二维数组表示。对于school1,我认为你可以做一些类似的事情

df['y'] = 0
data = df[['Date', 'y', 'School1']].values.tolist()
print(data)
[['2021/3/1', 0, 853], ['2021/3/2', 0, 165], ['2021/3/3', 0, 469], ['2021/3/4', 0, 857], ['2021/3/5', 0, 326], ['2021/3/6', 0, 802], ['2021/3/7', 0, 768], ['2021/3/8', 0, 911], ['2021/3/9', 0, 960]]

如果你不想编辑你的原始数据帧

df_ = pd.concat([df['Date'], pd.Series([0]*len(df)), df['School1']], axis=1)
data = df_.values.tolist()

我刚刚写了一段代码,将数据帧中的数据转换为pyecharts Bar3D所需的数据序列。虽然它有点麻烦,而且是半成品,但现在可以工作了。我是python的超级粉丝,所以代码很难看,但我仍然会把它们发布在这里。

对于X轴,我还没有用日期代替它,但这对我来说并不太重要。我的主要目标是制作另一个大量的数据来绘制这种风格的图形。这对我来说已经足够了。

import pandas as pd
import numpy as np
data = pd.read_csv(r"g:s1.txt")
S1 = data['School1']
S2 = data['School2']
S3 = data['School3']
Lists1 = []
Lists2 = []
Lists3 = []
for i in range(len(data)):
s1d = int(S1[i])
s2d = int(S2[i])
s3d = int(S3[i])
Lists1.append([i,0,s1d])
Lists2.append([i,1,s2d])
Lists3.append([i,2,s3d])
Listxyz = Lists1 + Lists2 + Lists3

最新更新