将数据帧转换为xyz数据以用于PyeChart

2024-06-08 16:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用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”数据


Tags: 文件csv数据数据结构date绘制pyechartsbars
2条回答

我刚刚编写了一段代码,将数据帧中的数据转换为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

根据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()

相关问题 更多 >