Как мне сделать для построения истории - PullRequest
0 голосов
/ 28 мая 2020

Здравствуйте, у меня есть несколько дат, и я пытаюсь построить историю. Я имею в виду, что у меня есть несколько дат, и я хочу, чтобы история показывала частоту в месяц. Вот мой код:

import numpy as np
from datetime import datetime 
import matplotlib.pyplot as plt

dateslist = ["25/07/2019", "25/07/2019", 
"25/07/2019", "26/07/2019", "29/07/2019", 
"29/07/2019", "30/07/2019", "18/08/2019",  
"18/08/2019", "20/08/2019", "20/08/2019", 
"21/08/2019", "21/08/2019", "22/08/2019", 
"27/08/2019", "23/09/2019", "26/09/2019", 
"27/09/2019", "30/09/2019", "09/10/2019", 
"18/10/2019", "18/10/2019", "18/10/2019", 
"18/10/2019", "29/10/2019", "29/10/2019", 
"21/11/2019", "21/11/2019", "21/11/2019", 
"21/11/2019", "21/11/2019", "21/11/2019", 
"21/11/2019", "21/11/2019", "21/11/2019", 
"21/11/2019", "29/11/2019", "06/12/2019", 
"11/12/2019", "12/12/2019", "18/12/2019", 
"23/12/2019", "23/12/2019", "23/12/2019", 
"24/12/2019", "24/12/2019", "23/01/2020", 
"20/01/2020", "20/01/2020", "20/01/2020", 
"19/02/2020", "31/01/2020", "24/02/2020", 
"25/02/2020", "25/02/2020", "02/03/2020", 
"18/03/2020", "19/03/2020", "23/03/2020", 
"02/04/2020", "14/04/2020", "21/04/2020", 
"24/04/2020", "20/05/2020"]

dateslistconverted = []

for datelist in dateslist:
    if datetime.strptime(datelist, "%d/%m/%Y").month in range(1,6):
        dateslistconverted.append(datetime.strptime(datelist, "%d/%m/%Y").month+12)
    else: 
        dateslistconverted.append(datetime.strptime(datelist, "%d/%m/%Y").month)

plt.hist(dateslistconverted)
plt.show()

Но у меня нет подходящего формата, я бы хотел, чтобы дата была упорядочена по времени и с некоторыми пробелами между разными месяцами.

Как я могу это сделать ?

Большое спасибо!

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете использовать pandas, так как он довольно хорошо обрабатывает время, а также вы можете построить его напрямую:

pd.Series(pd.to_datetime(dateslist)).apply(lambda x: x.strftime("%Y-%m")).value_counts().sort_index().plot(kind='bar')

Здесь я только что преобразовал ваш список в формат datetime и заключил его в серию, чтобы я мог отрегулируйте формат даты. Затем я считаю значение каждого месяца, сортирую его и строю.

import pandas as pd

dateslist = ["25/07/2019", "25/07/2019", 
"25/07/2019", "26/07/2019", "29/07/2019", 
"29/07/2019", "30/07/2019", "18/08/2019",  
"18/08/2019", "20/08/2019", "20/08/2019", 
"21/08/2019", "21/08/2019", "22/08/2019", 
"27/08/2019", "23/09/2019", "26/09/2019", 
"27/09/2019", "30/09/2019", "09/10/2019", 
"18/10/2019", "18/10/2019", "18/10/2019", 
"18/10/2019", "29/10/2019", "29/10/2019", 
"21/11/2019", "21/11/2019", "21/11/2019", 
"21/11/2019", "21/11/2019", "21/11/2019", 
"21/11/2019", "21/11/2019", "21/11/2019", 
"21/11/2019", "29/11/2019", "06/12/2019", 
"11/12/2019", "12/12/2019", "18/12/2019", 
"23/12/2019", "23/12/2019", "23/12/2019", 
"24/12/2019", "24/12/2019", "23/01/2020", 
"20/01/2020", "20/01/2020", "20/01/2020", 
"19/02/2020", "31/01/2020", "24/02/2020", 
"25/02/2020", "25/02/2020", "02/03/2020", 
"18/03/2020", "19/03/2020", "23/03/2020", 
"02/04/2020", "14/04/2020", "21/04/2020", 
"24/04/2020", "20/05/2020"]

pd.Series(pd.to_datetime(dateslist)).apply(lambda x: x.strftime("%Y-%m")).value_counts().sort_index().plot(kind='bar');

enter image description here

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