2015-09-05 7 views
0

У меня есть файл csv, который содержит 3000 строк и 5 столбцов, которые постоянно содержат больше строк, прикрепленных к нему на еженедельной основе.pandas/numpy arithmetic mean в csv файле

Что я пытаюсь сделать, это найти среднее арифметическое для последнего столбца для последних 1000 строк каждую неделю. (Итак, когда новые строки добавляются к нему еженедельно, это займет всего лишь несколько последних 1000 строк).

Как мне создать массив панд или numpy для этого?

df = pd.read_csv(fds.csv, index_col=False, header=0) 
df_1 = df['Results'] 
#How should I write the next line of codes to get the average for the most 1000 rows? 
+0

[На основе документации] (http://pandas.pydata.org/pandas-docs/stable/basics.html#head-and-tail), вы должны использовать функциональность 'tails'' pandas' для захвата последних 1000 строк. – Matt

+0

Спасибо! Я знал о функции головы и хвоста. Но я не думал, что смогу использовать его таким образом. Спасибо Мэтт. –

+0

Прохладный. Если приведенный ниже ответ помог вам обязательно принять его (или если кто-то поставит лучше) в качестве ответа. – Matt

ответ

1

я на другой машине, чем то, что мой pandas установлен на так что я иду на память, но я думаю, что вы хотите сделать, это ...

df = pd.read_csv(fds.csv, index_col=False, header=0) 
df_1 = df['Results'] 
#Let's pretend your 5th column has a name (header) of `Stuff` 
last_thousand = df_1.tail(1000) 
np.mean(last_thousand.Stuff) 
0

Поэтому в основном мне нужно было использовать функцию хвоста панды. Мой код ниже работает.

df = pd.read_csv(fds.csv, index_col=False, header=0) 
df_1 = df['Results']  
numpy.average(df_1.tail(1000)) 
1

немного быстрее, используя mean():

df = pd.read_csv("fds.csv", header = 0) 
results = df.tail(1000).mean() 

Результаты будут содержать среднее значение для каждого столбца в пределах последних 1000 строк. Если вы хотите больше статистики, вы можете также использовать describe():

resutls = df.tail(1000).describe().unstack()