我只是想加深對使用布林值繪制熊貓系列資料的理解,以掩蓋我不想要的值。我不確定我所擁有的是正確或有效的方法。
不要誤會我的意思,我確實得到了我所追求的圖表,但我對語法的假設是否正確?
我想做的就是在我的圖表上繪制非零值。我沒有像往常那樣格式化圖表,因為這只是對布林值和屏蔽資料的測驗,而不是用于創建報告等級圖表。
如果我將其屏蔽為 Pandas DataFrame,如果 df1 是我的 DataFrame,我會執行以下操作。我理解這一點,df1[mask] 根據需要回傳我的值是有道理的
# Plot our graph with only items that are non-zero
fig = px.bar(df1[mask], x = 'Animals', y = 'Count')
fig.show()
作為 Pandas 系列來做 這是創建我需要的圖表的片段
# Plot our graph with only items that are non-zero
fig = px.bar(sf, x = sf.index[sf_mask], y = sf[sf_mask])
fig.show()
在我將掩碼添加到 sf 并得到錯誤的初始測驗之后。我推斷我需要針對 x 和 y 引數添加掩碼。我認為這是因為系列只是一列,并且索引設定為我的“動物”。因此,通過映射 sf.index[sf_mask] 我在索引中獲得了回傳的動物,并且 sf[sf_mask] 回傳了值。未能添加任何一個都會給出“ValueError”,說明引數應該具有相同的長度。
這是我為測驗我的作業所做的
我最初的匯入和設定 Plotly 作為我的繪圖后端
import pandas as pd
import plotly.express as px
# Set our plotting backend to Plotly
pd.options.plotting.backend = "plotly"
我剛剛從字典中創建了一個測驗資料集
animals = {'rabbits' : 1,
'dogs' : 3,
'cats' : 0,
'ferrets' : 3,
'horses' : 8,
'goldfish' : 0,
'guinea_pigs' : 2,
'hamsters' : 6,
'mice' : 3,
'rats' : 0
}
然后將其轉換為熊貓系列
sf = pd.Series(animals)
然后我創建我的布爾掩碼來屏蔽我們熊貓系列中的所有非零條目
sf_mask = sf != 0
如果我然后查看掩碼,我可以看到我只得到非零值,這正是我正在尋找的。
sf[sf_mask]
在我的系列中輸出我的非零專案。
rabbits 1
dogs 3
ferrets 3
horses 8
guinea_pigs 2
hamsters 6
mice 3
dtype: int64
如果我使用以下語法在沒有布爾掩碼“sf_mask”的情況下進行繪圖,我會繪制完整的 Pandas 系列圖表
# Plot our Series showing all items
fig = px.bar(sf, x = sf.index, y = sf)
fig.show()
輸出以下圖表

如果我使用以下語法使用我的布爾掩碼“sf_mask”進行繪圖,我會得到我想要的圖表,它排除了零值專案的間隙。
# Plot our graph with only items that are non-zero
fig = px.bar(sf, x = sf.index[sf_mask], y = sf[sf_mask])
fig.show()
哪個輸出正確的圖表。

uj5u.com熱心網友回復:
您對布林值和掩碼的理解是正確的。
不過,您可以稍微簡化語法:如果您查看 plotly.express.bar
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412593.html
標籤:
