2016-11-21 28 views
0

我有問題繪製兩個dataframs。一個有20711個條目,另一個是20710個條目。我正在使用plot(x,y)來這樣繪圖:繪製兩個不同大小的數據框?

import pandas as pd 
import csv 
import matplotlib.pyplot as plt 

fig1 = plt.figure(figsize= (10,10)) 
ax = fig1.add_subplot(111) 
ax.plot(X, Y) 

兩者都是從csv中提取的數據幀。具有這樣的結構:

print(X) 
0  -2.343060 
1  -2.445431 
2  -2.335754 
3  -2.478535 
4  -2.527026 
print(Y) 
0  0.026940 
1  -0.075431 
2  0.024246 
3  -0.118535 
4  -0.167026 
5  -0.145475 

我不斷收到錯誤:

ValueError: x and y must have same first dimension 

如何解決它,以便它忽略了最後一個項目?

+0

由於存在具有20711個20710項,並具有4個5項之間沒有區別,你可以輕鬆地創建一個[最小,完整,可驗證示例](http://stackoverflow.com/help/mcve)。 – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest謝謝我用x和y編輯了評論。 –

+0

我最小的例子就是我可以複製+粘貼,運行,獲取錯誤,做一些更正並粘貼回來的東西。我並不是很願意自己編寫完整的代碼,只是爲了糾正錯誤。如果你不能花10分鐘寫一個MCVE,爲什麼我要花5分鐘呢? – ImportanceOfBeingErnest

回答

0

那麼,如果你可以只溝Y的最後一個值那麼下面應該工作,假設你在你的數據幀有指標也就是您的CSV看起來是這樣的:

0,-2.343060 
1,-2.445431 
2,-2.335754 
3,-2.478535 
4,-2.527026 

,你裝它就像X=pandas.read_csv('x.csv'),然後

ax.plot(X.as_matrix().T[1], Y.as_matrix().T[1][:-1]) 

應該工作。

正如您在您的評論中提到的重疊變化:

ax.plot(X.as_matrix().T[1], Y.as_matrix().T[1][:len(x)]) 
+0

嗯,我想我應該提到它可以在我使用的數據集之間有所不同。所以我正在尋找讓plot(x,y)忽略傳遞給它的任何額外數據。 –

+0

我將它添加到我的答案中,但是這裏假定len(y)> len(x),否則,您必須首先檢查。 – Ewoud

+0

呵呵,會不會在熊貓密謀呢?它會照顧所有這些東西嗎?我問的原因是因爲我有許多不同的x和y變化的數據集。我想知道是否去熊貓會讓我的生活更輕鬆。 –

相關問題