Сортировка данных в .csv по месяцам и годам и вычисление среднего

У меня есть следующие данные (сгенерированные с помощью другого скрипта, который я создал):

Date,HAD
01/01/1951,1
02/01/1951,-0.13161201
03/01/1951,-0.271796132
04/01/1951,-0.258977158
05/01/1951,-0.198823057
06/01/1951,0.167794502
07/01/1951,0.046093808
08/01/1951,-0.122396694
09/01/1951,-0.121824587
10/01/1951,-0.013002463

Следующим шагом является то, что я хочу отсортировать эти данные, чтобы они были представлены в формате .csv следующим образом:

Month, Mean
01/1951, 0.5 
02/1951, 0.1
etc.....

Есть простой способ сделать это?


person Nick Jones    schedule 14.03.2014    source источник


Ответы (1)


Если вы устанавливаете pandas, вы можете загрузить CSV в кадр данных pandas, используя

In [51]: df = pd.read_csv('data', parse_dates=[0], index_col=[0], dayfirst=True); df

Out[52]: 
                 HAD
Date                
1951-01-01  1.000000
1951-01-02 -0.131612
1951-01-03 -0.271796
1951-01-04 -0.258977
1951-01-05 -0.198823
1951-01-06  0.167795
1951-01-07  0.046094
1951-01-08 -0.122397
1951-01-09 -0.121825
1951-01-10 -0.013002

и вычислить средние значения для каждого месяца, используя

In [53]: result = df.resample('M', how='mean'); result

Out[53]: 
                 HAD
Date                
1951-01-31  0.009546

и сохраните CSV в файл, используя:

In [49]: result.to_csv('/tmp/out')
person unutbu    schedule 14.03.2014
comment
Танки, но я получаю ошибку, что месяц должен быть в 1..12, есть идеи? - person Nick Jones; 14.03.2014
comment
Если ваш формат даты DD/MM/YYYY, добавьте dayfirst=True к вызову pd.read_csv. По умолчанию pandas анализирует его как MM/DD/YYYY. - person unutbu; 14.03.2014
comment
первый бит работает нормально, это часть передискретизации, где все еще возникает та же ошибка. Хм! - person Nick Jones; 14.03.2014
comment
Пожалуйста, опубликуйте полное сообщение об ошибке трассировки под своим исходным вопросом. - person unutbu; 14.03.2014
comment
игнорировать меня - в моих данных были неверные значения. Спасибо! - person Nick Jones; 14.03.2014