Я пытаюсь построить дневные данные временных рядов (код ниже) и сталкиваюсь с двумя проблемами - (1) функция plt.title () не принимает какой-либо строковый ввод. (2) я хочу показать рассчитанные среднемесячные значения в середине месяца; прямо сейчас значения появляются в конце месяца. Кто-то предложил решение с использованием timedelta, которое я не мог понять. Больше ясности в этом будет оценено.
#Simple code for monthly means over several years:
#first try with only one year:
#Required Modules
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotlib inline
#sns.set()
import datetime as dt
from matplotlib.ticker import NullFormatter
from matplotlib.dates import MonthLocator, DateFormatter
# In[6]:
place='XYZ'
year=2018
cyear=str(year)
file='/Users/dishas/Desktop/'+place+'/'+place+'_'+'SS_'+cyear+'_YTD.csv'
df=pd.read_csv(file)
df.columns = ['Site', 'Parameter', 'Date','Year', 'Month', 'Day', 'Hour','amd','amd_C','24H', 'Value', 'Unit', 'Duration', 'QC']
#Reading required columns:
df_hourly=df['Value']
Year=df['Year']
Hour=df['Hour']
#Data indexing:
df.Date= pd.to_datetime(df.Date)
df = df.set_index('Date') #['2018-06-01' :'2018-12-30']
#Filtering:
df = df[df['Value'] >= 0]
df.drop(df[df['Value'] > 1500].index, inplace = True)
df.drop(df[df['Value'] <2].index, inplace = True)
#Counting >12 observations towards daily mean:
daily = df.Value.resample('d')
daily_12 = daily.mean()[daily.count() >= 12]
df_mean=daily_12.resample('m').mean()
#Plotting:
y1=daily_12
y2=df_mean
y3=df.Value
fig, ax = plt.subplots(figsize=(10,10))
plt.ylabel('dhkug/h3', fontsize=20, weight='bold')
plt.plot(y3, color='silver', label='diurnal values')
plt.plot(y1, linewidth='2.5', color='blue',label='daily mean')
plt.plot(y2,marker='o', color='r', label='monthly mean')
plt.legend()
fig_title='Daily_Monthly_'+cyear+'-'+place
plt.savefig(fig_title, format='png',dpi=500, bbox_inches="tight")
print 'saved=', fig_title