Получение средств сбора данных в тот же день - PullRequest
3 голосов
/ 20 января 2020

Я новичок в pandas и бездельничаю, рассматривая данные первичного опроса. Я импортировал .csv и сузил данные только до даты опроса и процента для одного кандидата. Сейчас я пытаюсь понять, как взять все опросы за один день и усреднить их. В другом месте я видел, что функции .groupby () и .mean (), вероятно, то, что мне нужно, но я не могу понять, как на самом деле их реализовать. Кто-нибудь может мне помочь?

Спасибо!

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

df = pd.read_csv('https://projects.fivethirtyeight.com/polls-page/president_primary_polls.csv')
biden_full = df[df['candidate_id'] == 13256]
biden = biden_full[['end_date', 'pct']]
biden['end_date'] = pd.to_datetime(biden['end_date'])

print(biden)

plot = plt.scatter(biden['end_date'], biden['pct'])
plt.show(plot)

Ответы [ 2 ]

1 голос
/ 20 января 2020

Использовать resample и агрегировать по среднему

biden['end_date'] = pd.to_datetime(biden['end_date'])
biden = biden.set_index('end_date')
biden.resample('D').agg('mean')
1 голос
/ 20 января 2020

Используйте DataFrame.resample по столбцу end_date:

df1 = biden.resample('d', on='end_date').mean().reset_index()

Или решение из комментария с Grouper:

df1 = biden.groupby(pd.Grouper(key='end_date', freq='d')).mean().reset_index()

print(df1)
      end_date     pct
0   2018-11-06  30.000
1   2018-11-07     NaN
2   2018-11-08     NaN
3   2018-11-09  26.000
4   2018-11-10     NaN
..         ...     ...
435 2020-01-15     NaN
436 2020-01-16  23.775
437 2020-01-17  23.300
438 2020-01-18     NaN
439 2020-01-19  28.300

[440 rows x 2 columns]

Если хотите, пропустите пропущенные значения, агрегируйте с Series.dt.date:

df2 = biden.groupby(biden['end_date'].dt.date).mean().reset_index()
print(df2)
       end_date        pct
0    2018-11-06  30.000000
1    2018-11-09  26.000000
2    2018-11-14  19.000000
3    2018-11-28  26.500000
4    2018-12-09  29.500000
..          ...        ...
282  2020-01-12  27.977778
283  2020-01-14  28.000000
284  2020-01-16  23.775000
285  2020-01-17  23.300000
286  2020-01-19  28.300000

[287 rows x 2 columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...