[問題] pandas 讀取csv問題

作者: worthy0429 (鹹鹹)   2018-04-07 22:16:21
小弟是初學python的新手
網路上有各式各樣讀取CSV的方式好幾種都試過了好像都沒辦法成功
想請問一下一些關於讀取csv檔的問題
我的csv檔資料大約長這樣
label,feature
1 ,70 80 82 72 58 .........
0 ,80 50 45 125 45 .......
2 ,120 40 56 78 45 .......
.
.
前面是label,後面是pixel(48*48)
目前是用pandas讀取資料的方式
df = pd.read_csv('train.csv')
此時print(train.shape) 為(20000,2) <-20000筆資料
我想問的是如何將後面pixel的資料分開變成48*48的array
因為我如果直接將feature用as_matrix的方式變成narray
他會直接變成28000*1的vector然後每一列都是[70 80 82 72 58....]這種形式
想問怎麼把它變成[70,80,82,72.....]這樣子的形式不然我不能reshape成48*48
這問題困擾我一段時間了故上來發問 加上我打的關鍵字出來的東西好像都..
麻煩各位大大解惑了
另外再問一個白癡問題,如果用excel開csv檔都沒有逗號是正常的嗎?用程式這邊看會有
作者: goldflower (金色小黃花)   2018-04-07 22:22:00
pd.read_csv(..., sep=' ', ...)
作者: worthy0429 (鹹鹹)   2018-04-07 22:35:00
gold大,我有試過這個了這樣子df的shape會變成(20000,1)耶
作者: goldflower (金色小黃花)   2018-04-07 23:27:00
那可能是用tab分的吧 sep='\t' 看看還不行你就傳個前幾行的版本上來看看
作者: hguan (hguan)   2018-04-07 23:38:00
試試看這個方法dataset = pd.read_csv('train.csv')xdata = dataset['feature']xdata = pd.DataFrame(xdata.str.split(' ').tolist())xdata = xdata.reshape(-1,48,48)
作者: worthy0429 (鹹鹹)   2018-04-07 23:59:00
gold大還是不行 你是只程式前幾行嗎'StringMethods' object has no attribute 'spilt'我正在找原因h大用你的方法會xdata.shape會變成(20000,2304)!但是會出現df沒有reshape的功能,於是我加了一行xdata=xdata.as_matrix()就可以了! 看起來是成功了非常謝謝我估狗了很久都沒有解決QQ
作者: sean50301 ( (づ′・ω・)づ)   2018-04-08 12:01:00
同學你修ML的嗎XDxdata.map(lambda x: x.split(‘ ‘))https://i.imgur.com/Mqmki5k.jpg直接貼好了 懶得打關鍵是要tolist再重新建ndarray
作者: worthy0429 (鹹鹹)   2018-04-08 17:58:00
sean大謝謝我現在人在外面回去用你的方式試試看!!我是ML初學者在練習題目><
作者: fly168 (依依)   2018-04-09 06:09:00
嘻嘻樓主該不會跟我修同堂課吧XDD

Links booklink

Contact Us: admin [ a t ] ucptt.com