2015-09-05 179 views
0

我有一個csv文件,其中包含3000行和5列,每週不斷有更多的行附加到它。pandas/numpy在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 ),你應該利用'pandas'的'tails'功能來抓取最後的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()