[问题] 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