मेरे पास 2 डेटाफ्रेम है और मैंने पहले से ही दिनांक कॉलम को डेटाटाइम प्रारूप में सेट कर दिया है लेकिन यह अभी भी एक मान त्रुटि देता है। क्या मुझे पता है कि 2 डेटाफ्रेम वाले एक्स-अक्ष के कारण यह अलग है?

import pandas as pd
import matplotlib.pyplot as plt

df_1 = pd.read_csv("df.csv")
df_1.head()

            symbol  net_revenue
date        
2015-03-31  ETSY    58543
2015-06-30  ETSY    61365
2015-09-30  ETSY    65696
2015-12-31  ETSY    87895
2016-03-31  ETSY    81847

import pandas_datareader.data as web
stock = 'ETSY'
start ='2013-12-31'
import datetime as dt
end = '2020-09-30'

df2 = web.DataReader(stock,'yahoo',start,end)
df2.head()

High    Low Open    Close   Volume  Adj Close
Date                        
2015-04-16  35.740002   28.219999   31.000000   30.000000   19763300    30.000000
2015-04-17  30.299999   26.510000   29.770000   27.580000   3965500 27.580000
2015-04-20  28.900000   24.870001   28.770000   24.900000   3076200 24.900000
2015-04-21  26.040001   24.559999   24.969999   25.750000   2184700 25.750000
2015-04-22  26.240000   24.950001   26.000000   25.120001   1442500 25.120001
... ... ... ... ... ... ...
2020-09-24  116.099998  109.519997  112.550003  113.680000  4339000 113.680000
2020-09-25  118.684998  113.010002  113.699997  118.279999  2572600 118.279999
2020-09-28  123.949997  119.190002  120.370003  123.690002  3456500 123.690002
2020-09-29  125.699997  121.260002  123.610001  123.230003  2618000 123.230003
2020-09-30  125.589996  120.139999  123.190002  121.629997  2524500 121.629997

# 2 डेटाफ़्रेम को 1 ग्राफ़ में प्लॉट करें

x = df1.index
y1 = df1['net_revenue']
y2 = df2['Adj Close']

fig, ax1 = plt.subplots(figsize=(20,8))
ax2 = ax1.twinx()

curve1 = ax1.plot(x, y1, label='etsy', color='r')
curve2 = ax2.plot(x, y2, label='close', color='b')

plt.plot()

त्रुटि:

ValueError: x and y must have same first dimension, but have shapes (23,) and (1376,)
1
janicewww 11 नवम्बर 2020, 17:58

1 उत्तर

सबसे बढ़िया उत्तर

आपके df1 और df2 की लंबाई अलग-अलग है। प्रत्येक डेटाफ्रेम को अपनी अनुक्रमणिका के विरुद्ध प्लॉट करने का प्रयास करें।

# I would suggest passing what you plot directly to the function
# that way you know which you are plotting against which
ax1.plot(df1.index, df1['net_revenue'], label='etsy', color='r')
ax2.plot(df2.index, df2['Adj Close'], label='close', color='b

आप पांडा का उपयोग करके भी साजिश कर सकते हैं:

df1['net_revenue'].plot(ax=ax1, label='etsy', color='r')
df2['Adj Close'].plot(, ax=ax2, label='close', color='b')

प्लॉट करने से पहले अपने इंडेक्स को datetime टाइप में बदलना याद रखें।

2
Quang Hoang 11 नवम्बर 2020, 18:08