Ошибка при построении графиков с использованием matplotlib - PullRequest
0 голосов
/ 29 мая 2020

У меня есть следующая команда:

#plot data 
ax = plt.gca()
datamax.plot(kind='line',x='Date',y='Data_Value',color='red',ax=ax)
datamin.plot(kind='line',x='Date',y='Data_Value', color='blue',ax=ax)
datamax.plot(kind='scatter',x='Date',y='breakup',color='red',ax=ax)
datamin.plot(kind='scatter',x='Date',y='breakdown', color='blue',ax=ax)
plt.ylabel("Temperature (degrees C)",color='navy')
plt.xlabel("Date",color='navy',labelpad=15)
plt.title('Record high and low temperatures by day (2005-2014)', alpha=1.0,color='brown',y=1.08)
ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.35),
          fancybox=False,labels=['Record high','Record low'])
plt.xticks(rotation=30)
plt.fill_between(range(len(datamax['Date'])), datamax['Data_Value'], datamin['Data_Value'],color='yellow',alpha=0.8)
plt.show()

Однако я продолжаю получать ошибку: KeyError: 'Date'

datamax фрейма данных выглядит следующим образом:

   Date           ID Element  Data_Value  datamax  breakup
0     2005-01-01  USW00094889    TMAX         156     11.0      NaN
1     2005-01-02  USW00094889    TMAX         139     39.0      NaN
2     2005-01-03  USW00094889    TMAX         133     39.0      NaN
3     2005-01-04  USW00094889    TMAX          39     44.0     44.0
4     2005-01-05  USW00094889    TMAX          33     28.0      NaN
5     2005-01-06  USW00094889    TMAX           0     33.0     33.0
6     2005-01-07  USW00094889    TMAX           6    -67.0      NaN
7     2005-01-08  USW00094889    TMAX          17    -82.0      NaN
8     2005-01-09  USW00094889    TMAX          28    -66.0      NaN
9     2005-01-10  USW00094889    TMAX          44    -71.0      NaN
10    2005-01-11  USW00094889    TMAX          44      6.0      NaN
11    2005-01-12  USW00094889    TMAX         139      6.0      NaN
12    2005-01-13  USW00094889    TMAX         161      0.0      NaN
13    2005-01-14  USW00094889    TMAX         150    -56.0      NaN
14    2005-01-15  USW00094889    TMAX         -33     -5.0     -5.0
15    2005-01-16  USW00094889    TMAX         -33      6.0      6.0
16    2005-01-17  USW00094889    TMAX         -50     78.0     78.0
17    2005-01-18  USW00094889    TMAX         -33     83.0     83.0
18    2005-01-19  USW00094889    TMAX          11     67.0     67.0
19    2005-01-20  USW00094889    TMAX          11     39.0     39.0
20    2005-01-21  USW00094889    TMAX         -39     22.0     22.0
21    2005-01-22  USW00094889    TMAX         -72     -5.0     -5.0
22    2005-01-23  USW00094889    TMAX         -44     11.0     11.0
23    2005-01-24  USW00094889    TMAX          11     44.0     44.0
24    2005-01-25  USW00094889    TMAX          28     33.0     33.0
25    2005-01-26  USW00094889    TMAX          28     28.0      NaN
26    2005-01-27  USW00094889    TMAX           6     -5.0      NaN
27    2005-01-28  USW00094889    TMAX         -11      6.0      6.0
28    2005-01-29  USW00094889    TMAX          17     39.0     39.0
29    2005-01-30  USW00094889    TMAX          28     28.0      NaN
...          ...          ...     ...         ...      ...      ...
3603  2014-11-13  USW00094889    TMAX          39      NaN      NaN
3604  2014-11-14  USW00094889    TMAX          33      NaN      NaN
3605  2014-11-15  USW00094889    TMAX          28      NaN      NaN
3606  2014-11-16  USW00094889    TMAX          28      NaN      NaN
3607  2014-11-17  USW00094889    TMAX          17      NaN      NaN
3608  2014-11-18  USW00094889    TMAX          11      NaN      NaN
3609  2014-11-19  USW00094889    TMAX          11      NaN      NaN
3610  2014-11-20  USW00094889    TMAX           6      NaN      NaN
3611  2014-11-21  USW00094889    TMAX         -10      NaN      NaN
3612  2014-11-22  USW00094889    TMAX         106      NaN      NaN
3613  2014-11-23  USW00094889    TMAX         156      NaN      NaN
3614  2014-11-24  USW00094889    TMAX         172      NaN      NaN
3615  2014-11-25  USW00094889    TMAX         172      NaN      NaN
3616  2014-11-26  USW00094889    TMAX          28      NaN      NaN
3617  2014-11-27  USW00094889    TMAX          39      NaN      NaN
3618  2014-11-28  USW00094889    TMAX          22      NaN      NaN
3619  2014-11-29  USW00094889    TMAX         117      NaN      NaN
3620  2014-11-30  USW00094889    TMAX         178      NaN      NaN
3621  2014-12-01  USW00094889    TMAX         172      NaN      NaN
3622  2014-12-02  USW00094889    TMAX          33      NaN      NaN
3623  2014-12-03  USW00094889    TMAX          61      NaN      NaN
3624  2014-12-04  USW00094889    TMAX          50      NaN      NaN
3625  2014-12-05  USW00094889    TMAX          50      NaN      NaN
3626  2014-12-06  USW00094889    TMAX          67      NaN      NaN
3627  2014-12-07  USW00094889    TMAX          67      NaN      NaN
3628  2014-12-08  USW00094889    TMAX          72      NaN      NaN
3629  2014-12-09  USW00094889    TMAX          56      NaN      NaN
3630  2014-12-10  USW00094889    TMAX          50      NaN      NaN
3631  2014-12-11  USW00094889    TMAX          61      NaN      NaN
3632  2014-12-12  USW00094889    TMAX          50      NaN      NaN

[3631 rows x 6 columns]

Данные фрейма данных выглядят следующим образом:

Date           ID Element  Data_Value  datamin  breakdown
0     2005-01-01  USC00200032    TMIN         -56   -133.0     -133.0
1     2005-01-02  USC00200032    TMIN         -56   -122.0     -122.0
2     2005-01-03  USC00200032    TMIN           0    -67.0      -67.0
3     2005-01-04  USC00200032    TMIN         -39    -88.0      -88.0
4     2005-01-05  USC00200032    TMIN         -94   -155.0     -155.0
5     2005-01-06  USC00200032    TMIN        -106   -182.0     -182.0
6     2005-01-07  USC00200032    TMIN        -111   -182.0     -182.0
7     2005-01-08  USC00200032    TMIN        -100   -211.0     -211.0
8     2005-01-09  USC00200032    TMIN         -67   -206.0     -206.0
9     2005-01-10  USC00200032    TMIN         -56   -206.0     -206.0
10    2005-01-11  USC00200032    TMIN         -22   -200.0     -200.0
11    2005-01-12  USC00200032    TMIN         -17   -117.0     -117.0
12    2005-01-13  USC00200032    TMIN         -83   -216.0     -216.0
13    2005-01-14  USC00200032    TMIN        -128   -244.0     -244.0
14    2005-01-15  USC00200032    TMIN        -144   -200.0     -200.0
15    2005-01-16  USC00200032    TMIN        -150   -167.0     -167.0
16    2005-01-17  USC00200032    TMIN        -189   -117.0        NaN
17    2005-01-18  USC00200032    TMIN        -217   -100.0        NaN
18    2005-01-19  USC00200228    TMIN        -300    -17.0        NaN
19    2005-01-20  USC00200032    TMIN        -156    -33.0        NaN
20    2005-01-21  USC00200032    TMIN        -178    -61.0        NaN
21    2005-01-22  USC00200032    TMIN        -178    -67.0        NaN
22    2005-01-23  USC00200032    TMIN        -250   -100.0        NaN
23    2005-01-24  USC00200032    TMIN        -267    -61.0        NaN
24    2005-01-25  USC00200032    TMIN        -228    -88.0        NaN
25    2005-01-26  USC00200032    TMIN        -206   -150.0        NaN
26    2005-01-27  USC00200032    TMIN        -239   -161.0        NaN
27    2005-01-28  USC00200032    TMIN        -250   -172.0        NaN
28    2005-01-29  USC00200032    TMIN        -222   -167.0        NaN
29    2005-01-30  USC00200228    TMIN        -217   -143.0        NaN
...          ...          ...     ...         ...      ...        ...
3603  2014-11-13  USC00200032    TMIN         -71      NaN        NaN
3604  2014-11-14  USC00200032    TMIN         -78      NaN        NaN
3605  2014-11-15  USC00200032    TMIN         -94      NaN        NaN
3606  2014-11-16  USC00200032    TMIN         -72      NaN        NaN
3607  2014-11-17  USC00200032    TMIN        -106      NaN        NaN
3608  2014-11-18  USC00200032    TMIN        -144      NaN        NaN
3609  2014-11-19  USC00200032    TMIN        -128      NaN        NaN
3610  2014-11-20  USC00200032    TMIN        -122      NaN        NaN
3611  2014-11-21  USC00200032    TMIN        -182      NaN        NaN
3612  2014-11-22  USC00200032    TMIN        -172      NaN        NaN
3613  2014-11-23  USC00200032    TMIN        -100      NaN        NaN
3614  2014-11-24  USC00200032    TMIN          -5      NaN        NaN
3615  2014-11-25  USC00200032    TMIN         -33      NaN        NaN
3616  2014-11-26  USC00200032    TMIN         -67      NaN        NaN
3617  2014-11-27  USC00200032    TMIN         -82      NaN        NaN
3618  2014-11-28  USC00200032    TMIN        -133      NaN        NaN
3619  2014-11-29  USC00200032    TMIN        -106      NaN        NaN
3620  2014-11-30  USC00200032    TMIN         -56      NaN        NaN
3621  2014-12-01  USC00200032    TMIN         -88      NaN        NaN
3622  2014-12-02  USC00200032    TMIN         -99      NaN        NaN
3623  2014-12-03  USC00200032    TMIN         -71      NaN        NaN
3624  2014-12-04  USC00200032    TMIN         -77      NaN        NaN
3625  2014-12-05  USC00200032    TMIN         -61      NaN        NaN
3626  2014-12-06  USC00200032    TMIN         -50      NaN        NaN
3627  2014-12-07  USC00200032    TMIN         -78      NaN        NaN
3628  2014-12-08  USC00200032    TMIN         -78      NaN        NaN
3629  2014-12-09  USC00200032    TMIN         -39      NaN        NaN
3630  2014-12-10  USC00200032    TMIN         -72      NaN        NaN
3631  2014-12-11  USC00200032    TMIN         -88      NaN        NaN
3632  2014-12-12  USC00200032    TMIN         -78      NaN        NaN

[3631 rows x 6 columns]

Я не могу понять, почему я получаю эти ошибки.

Строка, сообщающая мне об ошибке, :

datamax.plot(kind='scatter',x=datamax['Date'],y='breakup',color='red',ax=ax) 

Я пытаюсь построить 2 линейных графика и 2 точечных графика на одной фигуре. Однако мой код не позволяет мне это сделать.

Данные взяты отсюда:

#organise data 2005-2014
data = pd.read_csv('data/C2A2_data/BinnedCsvs_d400/fb441e62df2d58994928907a91895ec62c2c42e6cd075c2700843b89.csv') 
newdata = data[(data['Date'] >= '2005-01-01') & (data['Date'] <= '2014-12-12')]
#time = pd.date_range('2005-01-01','2014-12-12',freq='D').strftime('%Y-%m-%d')
datamax = newdata[newdata['Element']=='TMAX']
datamin = newdata[newdata['Element']=='TMIN']
datamax = datamax.groupby('Date').max()
datamin = datamin.groupby('Date').min()
datamax = datamax.reset_index()
datamin = datamin.reset_index()
datamax = datamax[~datamax['Date'].str.contains("02-29")]
datamin = datamin[~datamin['Date'].str.contains("02-29")]

#2015 data 
breakoutdata = data[(data['Date']  > '2014-12-31')]
datamax2015 = breakoutdata[breakoutdata['Element']=='TMAX']
datamin2015 = breakoutdata[breakoutdata['Element']=='TMIN']
datamax2015 = datamax2015.groupby('Date').max()
datamin2015 = datamin2015.groupby('Date').min()
datamax2015 = datamax2015.reset_index()
datamin2015 = datamin2015.reset_index()
datamax2015 = datamax2015[~datamax2015['Date'].str.contains("02-29")]
datamin2015 = datamin2015[~datamin2015['Date'].str.contains("02-29")]

#filtering out breakthroughs as scatterplot 
datamax['datamax'] = datamax2015['Data_Value']
datamin['datamin'] = datamin2015['Data_Value']
datamax['breakup'] = datamax['datamax'][datamax['datamax']>datamax['Data_Value']]
datamin['breakdown'] = datamin['datamin'][datamin['datamin']<datamin['Data_Value']]

1 Ответ

1 голос
/ 29 мая 2020

Используйте свой собственный код в этой строке:

datamax.plot(kind='scatter',x='Date',y='breakup',color='red',ax=ax)

, а не

datamax.plot(kind='scatter',x=datamax['Date'],y='breakup',color='red',ax=ax)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...