time series from list of dates-python -
i have list of dates (lista) each entry in represents occurrence. how make time series out of list in python3? sequence of dates on x axis, , frequency of each date on y
lista = [2016-04-05, 2016-04-05, 2016-04-07, 2016-09-10, 2016-03-05, 2016-07-11, 2017-01-01]
desired output:
[2016-04-05, 2], [2016-04-06, 0], [2016-04-07, 1], [2016-04-08, 0], ……………… .., [2017-01-01, 1]
desired format of output:
[[date, frequency],....,*]
i have date code as:
date=pd.date_range('2016-04-05', '2017-01-01', freq='d') print(date)
which gives:
[2016-04-05, 2016-04-06, 2016-04-07,....,]
i need code below step through date above frequency each date.
for item in lista: if item>=date[0] , item<date[1]: print(lista.count(item))
using counter
collections
module straight forward:
code:
dates = [ '2016-04-05', '2016-04-05', '2016-04-07', '2016-09-10', '2016-03-05', '2016-07-11', '2017-01-01' ] collections import counter counts = counter(dates) print(sorted(counts.items()))
results:
[('2016-03-05', 1), ('2016-04-05', 2), ('2016-04-07', 1), ('2016-07-11', 1), ('2016-09-10', 1), ('2017-01-01', 1)]
build list on pandas.datetimeindex
:
to build list of lists on range of dates easy enough because counter
return 0
when indexed value count zero.
# pandas date range dates = pd.date_range('2016-04-05', '2017-01-01', freq='d') # counter date need counted counts = counter(pd.to_datetime(dates)) # build list using list comprehension of counts @ dates in range date_occurence_sequence = [[d, counts[d]] d in dates]
add per day dataframe:
and since seem using pandas
let's insert occurrence counts data frame indexed per day.
import pandas pd index = pd.date_range('2016-04-05', '2017-01-01', freq='d') df = pd.dataframe([0] * len(index), index=index) df.update(pd.dataframe.from_dict(counter(pd.to_datetime(dates)), 'index')) print(df.head())
results:
0 2016-04-05 2.0 2016-04-06 0.0 2016-04-07 1.0 2016-04-08 0.0 2016-04-09 0.0
Comments
Post a Comment