À l'aide de la fonction pandas.date_range(startdate, periods=n, freq=f)
, vous pouvez créer une plage d'objets pandas Timestamp
où le paramètre facultatif freq
indique la fréquence (seconde, minute , heure, jour ...) dans la gamme.
Le documentation ne mentionne pas les littéraux qui devraient être transmis, mais après quelques minutes, vous pouvez facilement trouver la plupart d'entre eux.
Cependant, aucun de 'y', 'Y', 'yr', etc. ne crée de dates avec l'année comme fréquence. Quelqu'un sait-il quoi passer ou si c'est possible?
La fréquence est freq='A'
Pour la fréquence de fin d'année, 'AS'
Pour le début d'année. Vérifiez les alias dans la documentation .
par exemple. pd.date_range(start=pd.datetime(2000, 1, 1), periods=4, freq='A')
retour
DatetimeIndex(['2000-12-31', '2001-12-31', '2002-12-31', '2003-12-31'], dtype='datetime64[ns]', freq='A-DEC', tz=None)
Si vous avez besoin qu'elle soit annuelle à partir d'un moment particulier, utilisez un décalage ancré , par exemple. pd.date_range(start=pd.datetime(2000, 1, 1), periods=10, freq='AS-AUG')
retour
DatetimeIndex(['2000-08-01', '2001-08-01', '2002-08-01', '2003-08-01'], dtype='datetime64[ns]', freq='AS-AUG', tz=None)
Pour indexer à partir d'une date arbitraire, commencez la série à cette date et utilisez un objet DateOffset
personnalisé.
par exemple. pd.date_range(start=pd.datetime(2000, 9, 10), periods=4, freq=pd.DateOffset(years=1))
retour
DatetimeIndex(['2000-09-10', '2001-09-10', '2002-09-10', '2003-09-10'], dtype='datetime64[ns]', freq='<DateOffset: kwds={'years': 1}>', tz=None)
Avec tous ces hacks, il existe un moyen clair:
pd.date_range(start=datetime.datetime.now(),periods=5,freq='A')
A
: Annuellement.
365D
? Vraiment? Qu'en est-il de années bissextiles ?
Vous pouvez utiliser le mois puis choisir tous les 12 mois:
months=pandas.date_range(start=datetime.datetime.now(),periods=120,freq='M')
year=[months[11*i] for i in range(12)]
Vous pouvez également faire:
usingDays=pandas.date_range(start=datetime.datetime.now(),periods=10,freq='365D')
mais cela ne fonctionnera pas si bien avec les années bissextiles.
Vous pouvez utiliser des multiples pour les chaînes de fréquence. Par exemple:
pd.date_range ('01/01/2010 ', périodes = 10, freq =' 365D ')
Ce code vous donnera une série avec 01/01/2010, 01/01/2011, etc., qui je pense est ce que vous recherchez. Bien sûr, le problème ici est que vous rencontrerez des problèmes avec les années bissextiles.