[问题] 读取excel资料后如何换成阵列~

楼主: explaining (小梁)   2022-08-18 13:36:20
小弟程式超级新手..第一次碰程式也是第一次碰python
问题很笨请见谅~~
有google过找不太到答案~~
我的目标是把Excel里面的数据,用python取出来分析之后再存回去
取出来跟存回去有满多的影片可以参考,
我也安装了xlrd、openpyxl等等都可以用
但遇到一个小问题~就是取出来的资料如何变成普通的阵列来运算呢?
我把第一行的资料取出了,但他好像不是纯数字,旁边还附带了字段的编号
https://imgur.com/wxME0t5.jpg
导致程式不能做一般运算~
请问这是为什么呢~该如何做处里 或是要先去搞懂什么基本观念吗~
感谢您了!
作者: chang1248w (彩棠)   2022-08-18 13:48:00
非excel不可吗?我会把excel先汇出成csvpandas.read_csv之后在python上做处理,再df.to_csv另外csv档excel是可以读的
楼主: explaining (小梁)   2022-08-18 14:18:00
CSV再转EXCEL格式不会跑掉吗? 还是感谢您的回复我会试试看您的方法 不知道有没有办法直接对excel处理
作者: venomsoul (不怕太太)   2022-08-18 14:55:00
CSV档严格说应该默认由notepad开启,因为他只是字串,甚至没有座标概念,但那样就失去附档命名为csv的意义了,所以一般有安装excel的windows电脑都会直接用excel开启csv,真要说格式可能跑掉应该是没有,反而是excel如果有合并储存格或有人在储存格内换行,那转成csv才会有问题,然后我没用pandas但是好像本身就有read_excel(),何不试试看?
作者: chickengod (鸡大侠)   2022-08-18 15:12:00
pandas.read_excel() 回传值是 DataFrame 的资料型态要看得懂这个 object 的 function 才知道怎么处理换句话说转成 DataFrame 后你要使用 pandas 内建的function
作者: bjchiou (bjchiou)   2022-08-18 16:04:00
读取用了usecols且只读一栏,再从回传形式来看,应该是pd 的Seriesnp.mean要求使用array-like,所以要将pd.Series转成np.array第一个9应该也包含在内吧?那括号内还要加上header=None,整理一下,read_excel括号内要加header=None(若9要算)print(np.mean(np.array(file))),将pd.Series转np.array熟练之后还可以串接read_excel(...).to_numpy(...)sorry~read_excel后的结果为dataframe、非series
作者: lycantrope (阿宽)   2022-08-18 18:06:00
问题出在资料没有header吧 如果你资料没有字段名称读取时要加header = None
楼主: explaining (小梁)   2022-08-18 18:38:00
好的我试试看! 感恩~~~!!
作者: lycantrope (阿宽)   2022-08-18 21:35:00
先学基本numpy跟pandas怎么用,不用自己发明轮子
作者: bjchiou (bjchiou)   2022-08-18 21:58:00
拍谢~原po应该算被我误导吧,file.mean()也能得到15.45但如此左边有个0(df字段名称),且xls有多栏时会有新问题如楼上建议,学习基本的numpy及pandas平均值file[0].mean(),排序sorted(file[0].tolist())其实pandas也有自己的排序,file[0].sort_values()[0]指file第一栏(excel的A栏),未指定字段名称时,pandas会自动赋予名称,而数字旁字段编号称为索引
作者: Mupzopod (pinballmachine)   2022-08-19 07:28:00
直接 file.values 就可以了pandas 本身就是建在numpy上的pandas.series 也可以直接 series.tolist()

Links booklink

Contact Us: admin [ a t ] ucptt.com