Временной ряд в pandas - настройка тика / дельта времени и название графика - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь построить дневные данные временных рядов (код ниже) и сталкиваюсь с двумя проблемами - (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
...