簡體   English   中英

使用“索引”和“列”作為X,Y和值作為Z,將pandas DataFrame轉換為3d圖形?

[英]Convert pandas DataFrame to a 3d graph using Index and Columns as X,Y and values as Z?

我正在嘗試使用Pandas Dataframe創建3d波動表面,我覺得我擁有所有信息,但是不確定如何從中創建3d圖形。 我讀過的每本指南似乎都使用3個單獨的數組,但是我覺得我所擁有的數據應該是可圖形化的。

我當前的數據框如下所示:

我希望將X值作為索引,將Y值作為列名(月份),將Z值作為框架中包含的實際值(例如,第一行中的第一個值排在第一位欄... X = 35,Y = 9/20/2019,Z = 0.0879441)

   09/20/2019   10/18/2019  11/15/2019  12/20/2019  01/17/2020
35  0.0879441   0.0883913   0.0909429   0.0987415   0.0987912
40  0.0833955   0.0837764   0.087088    0.0939974   0.0943858
45  0.0788468   0.0810964   0.084231    0.0905135   0.0912521
50  0.0766043   0.0784164   0.0820014   0.0891319   0.0871471
55  0.0743284   0.0744855   0.0757832   0.0729094   0.068998
60  0.0612799   0.0664453   0.0758287   0.0729539   0.0690739
65  0.0613116   0.0664716   0.0655504   0.0622985   0.0630833

環顧四周后,我嘗試在此處模仿代碼:特別是在單元5和6中。這是下面的代碼

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

X = my_dataframe.index

Y = my_dataframe.columns


def lookup(row, cols):
    return(my_dataframe.loc[x,y])

Z = lookup(x,y)


fig = plt.figure()
ax = plt.axes(projection = '3d')

ax.contour3D(X,Y,Z)

我基本上將Z定義為X,Y的函數,希望能起作用,但無濟於事,我得到一個錯誤:

Length of x must be number of columns in z

我在這里做錯了什么? 首先,我按鏈接中的X,Y = np.meshgrid()進行了修改,但這還是行不通的,所以我發布了最初的嘗試。

編輯:根據一些評論的建議,我將代碼更改為:

Y = my_dataframe.index

my_dataframe.columns = [1,2,3,4,5]

X = my_dataframe.columns


Z = my_dataframe.values

fig = plt.figure()
ax = plt.axes(projection = '3d')

ax.contour3D(X,Y, Z)

我將列從日期更改為僅數字,以確保它們是數字類型。 我還將Z設置為等於數據幀的值。 我現在收到一個新錯誤:

 setting an array element with a sequence.

這應該適用於:

import pandas as pd
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

d = {10: [1, 2], 20: [3, 4]}
my_dataframe = pd.DataFrame(data=d)
#  10  20
#  ------
#0  1   3
#1  2   4

X = my_dataframe.index

Y = my_dataframe.columns

Z = my_dataframe.values


fig = plt.figure()
ax = plt.axes(projection = '3d')

ax.contour3D(X,Y,Z)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM