作者explaining (EXP)
看板Python
标题[问题] 读取excel资料後如何换成阵列~
时间Thu Aug 18 13:36:20 2022
小弟程式超级新手..第一次碰程式也是第一次碰python
问题很笨请见谅~~
有google过找不太到答案~~
我的目标是把Excel里面的数据,用python取出来分析之後再存回去
取出来跟存回去有满多的影片可以参考,
我也安装了xlrd、openpyxl等等都可以用
但遇到一个小问题~就是取出来的资料如何变成普通的阵列来运算呢?
我把第一行的资料取出了,但他好像不是纯数字,旁边还附带了栏位的编号
https://imgur.com/wxME0t5.jpg
导致程式不能做一般运算~
请问这是为什麽呢~该如何做处里 或是要先去搞懂什麽基本观念吗~
感谢您了!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.164.110.53 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1660800983.A.143.html
1F:→ chang1248w: 非excel不可吗? 08/18 13:48
2F:→ chang1248w: 我会把excel先汇出成csv 08/18 13:49
3F:→ chang1248w: pandas.read_csv之後在python上做处理,再df.to_csv 08/18 13:50
4F:→ chang1248w: 另外csv档excel是可以读的 08/18 13:50
5F:→ explaining: CSV再转EXCEL格式不会跑掉吗? 还是感谢您的回覆 08/18 14:18
6F:→ explaining: 我会试试看您的方法 不知道有没有办法直接对excel处理 08/18 14:21
7F:推 venomsoul: CSV档严格说应该预设由notepad开启,因为他只是字串, 08/18 14:55
8F:→ venomsoul: 甚至没有座标概念,但那样就失去附档命名为csv的意义 08/18 14:55
9F:→ venomsoul: 了,所以一般有安装excel的windows电脑都会直接用exce 08/18 14:55
10F:→ venomsoul: l开启csv,真要说格式可能跑掉应该是没有,反而是exce 08/18 14:55
11F:→ venomsoul: l如果有合并储存格或有人在储存格内换行,那转成csv才 08/18 14:55
12F:→ venomsoul: 会有问题,然後我没用pandas但是好像本身就有read_exc 08/18 14:55
13F:→ venomsoul: el(),何不试试看? 08/18 14:55
有的 但read出来的资料无法直接处里~
14F:→ chickengod: pandas.read_excel() 回传值是 DataFrame 的资料型态 08/18 15:12
15F:→ chickengod: 要看得懂这个 object 的 function 才知道怎麽处理 08/18 15:12
16F:→ chickengod: 换句话说转成 DataFrame 後你要使用 pandas 内建的 08/18 15:12
17F:→ chickengod: function 08/18 15:12
感谢三位大大的解说,特别是chick大~大致了解了,看来是资料格式的问题
我想接下来要查的关键字是 dataframe 转换成list!
感谢!
※ 编辑: explaining (1.164.110.53 台湾), 08/18/2022 15:23:08
18F:→ bjchiou: 读取用了usecols且只读一栏,再从回传形式来看,应该是 08/18 16:04
19F:→ bjchiou: pd 的Series 08/18 16:04
20F:→ bjchiou: np.mean要求使用array-like,所以要将pd.Series转成np. 08/18 16:09
21F:→ bjchiou: array 08/18 16:09
22F:→ bjchiou: 第一个9应该也包含在内吧?那括号内还要加上header=None, 08/18 16:24
23F:→ bjchiou: 整理一下,read_excel括号内要加header=None(若9要算) 08/18 16:28
24F:→ bjchiou: print(np.mean(np.array(file))),将pd.Series转np.array 08/18 16:29
25F:→ bjchiou: 熟练之後还可以串接read_excel(...).to_numpy(...) 08/18 16:31
26F:→ bjchiou: sorry~read_excel後的结果为dataframe、非series 08/18 16:40
27F:推 lycantrope: 问题出在资料没有header吧 如果你资料没有栏位名称 08/18 18:06
28F:→ lycantrope: 读取时要加header = None 08/18 18:07
29F:→ explaining: 好的我试试看! 感恩~~~!! 08/18 18:38
谢谢各位的指教,我用np.array & tolist() 成功转成了ndarray和list就可以运算了~!
https://imgur.com/Uc1gM8V.jpg 现在在找方法把右边每个数字烦人的描述去掉~
thanks a lot!
※ 编辑: explaining (1.164.110.53 台湾), 08/18/2022 21:23:41
30F:推 lycantrope: 先学基本numpy跟pandas怎麽用,不用自己发明轮子 08/18 21:35
31F:→ bjchiou: 拍谢~原po应该算被我误导吧,file.mean()也能得到15.45 08/18 21:58
32F:→ bjchiou: 但如此左边有个0(df栏位名称),且xls有多栏时会有新问题 08/18 22:03
33F:→ bjchiou: 如楼上建议,学习基本的numpy及pandas 08/18 22:05
34F:→ bjchiou: 平均值file[0].mean(),排序sorted(file[0].tolist()) 08/18 22:09
35F:→ bjchiou: 其实pandas也有自己的排序,file[0].sort_values() 08/18 22:25
36F:→ bjchiou: [0]指file第一栏(excel的A栏),未指定栏位名称时,pandas 08/18 22:49
37F:→ bjchiou: 会自动赋予名称,而数字旁栏位编号称为索引 08/18 22:52
38F:推 Mupzopod: 直接 file.values 就可以了 08/19 07:28
39F:→ Mupzopod: pandas 本身就是建在numpy上的 08/19 07:28
40F:→ Mupzopod: pandas.series 也可以直接 series.tolist() 08/19 07:30