2016-11-10 137 views
1

這裏比較新的python。用numpy創建矩陣CSV文件

所以我有內容的這樣一個CSV文件:

dsa dds fsdf dasdsa 
1 1 32.2 9 4 
1 2 53.2 8 2 
1 3 44.2 0 1 
1 4 12.3 3 2 
1 5 15.6 4 3 
2 1 12.3 3 2 
2 2 91.3 4 11 
2 3 32.3 5 33 
2 4 44.2 3 2 
2 5 55.2 4 1 
3 1 60.2 4 2 
3 2 80.2 1 15 
3 3 10.2 4 1 
3 4 99.2 8 3 
3 5 13.1 10 2 
4 1 32.3 19 2 
4 2 10.3 12 3 
4 3 52.3 22 4 
. . . . . 
. . . . . 

我希望我的輸出是這樣的:

1 2  3 4 . . . 
1 32.2 53.2 44.2 12.3 . . 
2 12.3 91.3 32.3 44.2 . . 
3 60.2 80.2 10.2 99.2 . . 
4 32.3 10.3 52.3 . . . 
. . .  . . . . 
. . .  . . . . 

正如你所看到的,我只使用第一csv文件的3列,我跳過了第一行(垃圾數據)。

我想使用numpy的做到這一點,所以我想這個代碼會做的伎倆:

from scipy.sparse import coo_matrix 
import numpy as np 

l, c, v = np.load('test.csv', skiprows=1, delimiter=',').T[:3,:] 
m = coo_matrix((v, (l-1, c-1)), shape=(l.max(), c.max())) 
print(m.toarray()) 

這工作,但是在CSV文件中的第2列被排除在輸出。結果原來是:

[32.2 53.2 44.2 12.3 
12.3 91.3 32.3 44.2 
60.2 80.2 10.2 99.2 
32.3 10.3 52.3 .] 

我如何能生成我需要(輸出)的矩陣有什麼想法? CSV文件很大(它有大約10k行和列),但只需要使用前3列。

謝謝堆!

回答

0
import pandas as pd 
data = pd.read_csv('data.txt', delim_whitespace=True) 
data2 = data['dds'].reshape(len(data['dds'])/5, 5) 
df = pd.DataFrame(data2, columns=range(1, 6), index=range(1, data2.shape[0]+1)) 
print(df) 

更新:

沒有 '垃圾數據':

import pandas as pd 
names_ = range(1, 6) 
data = pd.read_csv('data.txt', delim_whitespace=True, names=names_) 
data2 = data[3].reshape(len(data[3])/5, 5) 
df = pd.DataFrame(data2, columns=names_, index=range(1, data2.shape[0]+1)) 
print(df) 
+0

什麼了發生的代碼,如果沒有 '垃圾' 數據存在? – ynitSed

+0

只需安裝熊貓,我有anaconda 3.5,但我的python版本是3.4.4。有區別嗎? – ynitSed

+0

你有錯誤嗎? –