У меня есть кадр данных, который записывает концентрации для нескольких разных мест в разные годы с высокой временной частотой (<1 час). Я пытаюсь составить гистограмму / мультибаровой график, показывающий средние концентрации в разных местах в разные годы </p>
Чтобы рассчитать среднюю концентрацию, я должен применить фильтры контроля качества для ежедневных и ежемесячных данных.
Мой подход заключается в том, чтобы сначала применить фильтры и выполнить повторную выборку за год, а затем выполнить группировку по местоположению и году.
Кроме того, из всех мест (в столбце с названием местоположения) мне нужно выбрать только несколько строк. Итак, я разрезаю исходный фрейм данных и создаю новый фрейм данных с выбранными строками.
Я не могу добиться этого с помощью следующего кода:
date=df['date']
location = df['location']
df.date = pd.to_datetime(df.date)
year=df.date.dt.year
df=df.set_index(date)
df['Year'] = df['date'].map(lambda x: x.year )
#Location name selection/correction in each city:
#Changing all stations:
df['location'] = df['location'].map(lambda x: "M" if x == "mm" else x)
#New dataframe:
df_new = df[(df['location'].isin(['K', 'L', 'M']))]
#Data filtering:
df_new = df_new[df_new['value'] >= 0]
df_new.drop(df_new[df_new['value'] > 400].index, inplace = True)
df_new.drop(df_new[df_new['value'] <2].index, inplace = True)
diurnal = df_new[df_new['value']].resample('12h')
diurnal_mean = diurnal.mean()[diurnal.count() >= 9]
daily_mean=diurnal_mean.resample('d').mean()
df_month=daily_mean.resample('m').mean()
df_yearly=df_month[df_month['value']].resample('y')
#For plotting:
df_grouped = df_new.groupby(['location', 'Year']).agg({'value':'sum'}).reset_index()
sns.barplot(x='location',y='value',hue='Year',data= df_grouped)
Это одна из многих ошибок, которые возникли:
"None of [Float64Index([22.73, 64.81, 8.67, 19.98, 33.12, 37.81, 39.87, 42.29, 37.81,\n 36.51,\n ...\n 11.0, 40.0, 23.0, 80.0, 50.0, 60.0, 40.0, 80.0, 80.0,\n 17.0],\n dtype='float64', length=63846)] are in the [columns]"
ERROR:root:Invalid alias: The name clear can't be aliased because it is another magic command.
Это образец кадра данных, показывающий, что мне нужно построить; Столбец значений должен в идеале представлять пересчитанные значения после выполнения операций контроля качества и передискретизации.
Unnamed: 0 location value \
date location value
2017-10-21 08:45:00+05:30 8335 M 339.3
2017-08-18 17:45:00+05:30 8344 M 45.1
2017-11-08 13:15:00+05:30 8347 L 594.4
2017-10-21 13:15:00+05:30 8659 N 189.9
2017-08-18 15:45:00+05:30 8662 N 46.5
Так должна выглядеть часть фактических данных после выбора выбранных местоположений. Я новый пользователь, поэтому не могу прикрепить скриншот необходимого мне графика. Этот запрос является расширением запроса, который я опубликовал ранее, с дополнительным требованием составления графика передискретизированных данных вместо простого подсчета значений. Итерации по годам для построения различных групповых значений в виде гистограммы в pandas
Любая помощь будет высоко оценена.