簡體   English   中英

如何使用列表從 pandas DataFrame 創建 plotly 行 plot

[英]How to create a plotly line plot from a pandas DataFrame with lists

我有一個從字典創建的 pandas DataFrame 並且想從它創建一個 plotly 行 plot。 然而,DataFrame 包含列表,如下所示:

                    a  ...                   L
0                 a_0  ...  [L_00,       L_01]
1                 a_1  ...  [L_10,       L_11]
2                 a_2  ...  [L_20,       L_21]
3                 a_3  ...  [L_30,       L_31]

我的 plot 應該是根據a_i繪制的L_i0的值,但我只能創建 plot,給出這樣的列名稱:

fig = px.line(dataframe, x='a', y='L')

我知道我可以訪問像這樣的值['L'][i][0]然后遍歷 i 但是否可以告訴 plotly 只取列表 L 的第一個值?

樣品 dataframe

df = pd.DataFrame({'a':[1,2,3],
                   'L':[[10,11,12], [20,21,22], [30,31,21]]})

我不明白為什么,但如果它實際上是正確的,你

[...] 只能創建 plot 給出這樣的列的名稱

那么你真的應該考慮確保df['L']實際上只包含你想要的值 plot,而不是列出一堆其他東西。 但是您很可能有充分的理由完全按照自己的方式組織數據,所以我懷疑您的問題實際上是一個XY 問題

但是,如果您不一定要使用plotly.express ,那么plotly.graph_objects可以完全按照您在這里使用df.iterrows()的目標進行操作。 我假設此數據結構類似於您的真實場景:

   a        L
0  1  [10, 11, 12]
1  2  [20, 21, 22]
2  3  [30, 31, 21]

代碼:

import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame({'a':[1,2,3],
                   'L':[[10,11,12], [20,21,22], [30,31,21]]})

aVals = []
LVals = []
for i, row in df.iterrows():
    aVals.append(row[0])
    LVals.append(row[1][0])
    
fig = go.Figure(go.Scatter(x=aVals, y=LVals))
fig.show()

Plot:

在此處輸入圖像描述

導入庫

import matplotlib.pyplot as plt
import pandas as pd

使用 pandas 創建 dataframe

data = [['DS', 'Linked_list', 10], ['DS', 'Stack', 9], ['DS', 'Queue', 7], 
        ['Algo', 'Greedy', 8], ['Algo', 'DP', 6], ['Algo', 'BackTrack', 5], ]  
df = pd.DataFrame(data, columns = ['Category', 'Name', 'Marks'])  

繪制數字列

plt.plot(df["Marks"])
plt.xlabel

我錯誤地閱讀了文檔並找到了一種方法來做我想做的事情:

fig = px.line(dataframe, x='a',
              y=[tupel[0] for tupel in dataframe['L']])

這會訪問列表中的第一個元素,這些元素是包含在 L 中的元組。

暫無
暫無

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

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