我有以下資料集:
df = pd.DataFrame ({"a": [1,2,3,4,5,6,7,8,9,1,11,12,13,14,15,16,17,18,19,20],
'b':[1,2,3,4,50,60,70,8,9,10,110,120,130,140,150,16,17,18,19,20],
'c':[np.nan,2.2,3.4,np.nan,40.9,60.2,np.nan,8.2,8.9,10.1,np.nan,120.2,
130.07,140.23,np.nan,16.054,17.20,18.1,np.nan,20.1],
'd': [100, np.nan,np.nan, 500,np.nan, np.nan,500,
np.nan,np.nan,np.nan,100, np.nan,np.nan, np.nan,500,
np.nan,np.nan, np.nan,100,np.nan ]}
)
我正在嘗試根據以下條件繪制資料:
在“d”列中的 100 到下一個 100 之間,我希望在 x 軸上有一個具有“a”列的圖,在 y 軸上有“b”列的散點圖和“c”列的線圖。
那就是我將有3個不同的情節。第一個從索引 0 到 10,第二個從索引 10 到索引 18,第三個從 18 到 20。(我可以使用 for 回圈生成它)在每個圖中,我想要基于“d”列中位置 500 值的分段線圖,即對于第一個圖從索引 0-3 一個線圖,從索引 3-6 另一個線圖和從索引 6-10 另一個線圖。(我無法制作分段線圖)
我正在使用以下代碼:
index = index [len(df)]
index1 = index1 [len(df)]
for k in range (len(index)-1):
x = df['a'][index[k] 1:index[k 1]]
y = df['c'][index[k] 1:index[k 1]]
y1 = df['b'][index[k] 1:index[k 1]]
plt.scatter(x, y)
plt.plot(x, y1)
plt.savefig('plot' str(k 1000) '.png')
plt.clf()
我的第一個圖是這樣的:(但是想要三個分段的線圖而不是連續的線圖(即索引 0-3 的線不應與 3-6 連接,依此類推)
抱歉,這個問題很長,謝謝:)
uj5u.com熱心網友回復:
預期的輸出尚不清楚,但這是一種通用策略,可借助以下方法將資料集分組
選項 3
ax = plt.subplot()
group = df['d'].eq(100).cumsum()
for name, g in df.groupby(group):
g = g.reset_index()
ax.scatter(g.index 1, g['c'])
ax.plot(g.index 1, g['b'])

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/449131.html
標籤:Python 熊猫 循环 matplotlib 阴谋
上一篇:散點圖顏色條看起來不正確
