[問題] 讀取excel資料後如何換成陣列~

看板Python作者 (EXP)時間1年前 (2022/08/18 13:36), 1年前編輯推噓4(4036)
留言40則, 7人參與, 1年前最新討論串1/1
小弟程式超級新手..第一次碰程式也是第一次碰python 問題很笨請見諒~~ 有google過找不太到答案~~ 我的目標是把Excel裡面的數據,用python取出來分析之後再存回去 取出來跟存回去有滿多的影片可以參考, 我也安裝了xlrd、openpyxl等等都可以用 但遇到一個小問題~就是取出來的資料如何變成普通的陣列來運算呢? 我把第一行的資料取出了,但他好像不是純數字,旁邊還附帶了欄位的編號 https://imgur.com/wxME0t5.jpg
導致程式不能做一般運算~ 請問這是為什麼呢~該如何做處裡 或是要先去搞懂什麼基本觀念嗎~ 感謝您了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.110.53 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1660800983.A.143.html

08/18 13:48, 1年前 , 1F
非excel不可嗎?
08/18 13:48, 1F

08/18 13:49, 1年前 , 2F
我會把excel先匯出成csv
08/18 13:49, 2F

08/18 13:50, 1年前 , 3F
pandas.read_csv之後在python上做處理,再df.to_csv
08/18 13:50, 3F

08/18 13:50, 1年前 , 4F
另外csv檔excel是可以讀的
08/18 13:50, 4F

08/18 14:18, 1年前 , 5F
CSV再轉EXCEL格式不會跑掉嗎? 還是感謝您的回覆
08/18 14:18, 5F

08/18 14:21, 1年前 , 6F
我會試試看您的方法 不知道有沒有辦法直接對excel處理
08/18 14:21, 6F

08/18 14:55, 1年前 , 7F
CSV檔嚴格說應該預設由notepad開啟,因為他只是字串,
08/18 14:55, 7F

08/18 14:55, 1年前 , 8F
甚至沒有座標概念,但那樣就失去附檔命名為csv的意義
08/18 14:55, 8F

08/18 14:55, 1年前 , 9F
了,所以一般有安裝excel的windows電腦都會直接用exce
08/18 14:55, 9F

08/18 14:55, 1年前 , 10F
l開啟csv,真要說格式可能跑掉應該是沒有,反而是exce
08/18 14:55, 10F

08/18 14:55, 1年前 , 11F
l如果有合併儲存格或有人在儲存格內換行,那轉成csv才
08/18 14:55, 11F

08/18 14:55, 1年前 , 12F
會有問題,然後我沒用pandas但是好像本身就有read_exc
08/18 14:55, 12F

08/18 14:55, 1年前 , 13F
el(),何不試試看?
08/18 14:55, 13F
有的 但read出來的資料無法直接處裡~

08/18 15:12, 1年前 , 14F
pandas.read_excel() 回傳值是 DataFrame 的資料型態
08/18 15:12, 14F

08/18 15:12, 1年前 , 15F
要看得懂這個 object 的 function 才知道怎麼處理
08/18 15:12, 15F

08/18 15:12, 1年前 , 16F
換句話說轉成 DataFrame 後你要使用 pandas 內建的
08/18 15:12, 16F

08/18 15:12, 1年前 , 17F
function
08/18 15:12, 17F
感謝三位大大的解說,特別是chick大~大致了解了,看來是資料格式的問題 我想接下來要查的關鍵字是 dataframe 轉換成list! 感謝! ※ 編輯: explaining (1.164.110.53 臺灣), 08/18/2022 15:23:08

08/18 16:04, 1年前 , 18F
讀取用了usecols且只讀一欄,再從回傳形式來看,應該是
08/18 16:04, 18F

08/18 16:04, 1年前 , 19F
pd 的Series
08/18 16:04, 19F

08/18 16:09, 1年前 , 20F
np.mean要求使用array-like,所以要將pd.Series轉成np.
08/18 16:09, 20F

08/18 16:09, 1年前 , 21F
array
08/18 16:09, 21F

08/18 16:24, 1年前 , 22F
第一個9應該也包含在內吧?那括號內還要加上header=None,
08/18 16:24, 22F

08/18 16:28, 1年前 , 23F
整理一下,read_excel括號內要加header=None(若9要算)
08/18 16:28, 23F

08/18 16:29, 1年前 , 24F
print(np.mean(np.array(file))),將pd.Series轉np.array
08/18 16:29, 24F

08/18 16:31, 1年前 , 25F
熟練之後還可以串接read_excel(...).to_numpy(...)
08/18 16:31, 25F

08/18 16:40, 1年前 , 26F
sorry~read_excel後的結果為dataframe、非series
08/18 16:40, 26F

08/18 18:06, 1年前 , 27F
問題出在資料沒有header吧 如果你資料沒有欄位名稱
08/18 18:06, 27F

08/18 18:07, 1年前 , 28F
讀取時要加header = None
08/18 18:07, 28F

08/18 18:38, 1年前 , 29F
好的我試試看! 感恩~~~!!
08/18 18:38, 29F
謝謝各位的指教,我用np.array & tolist() 成功轉成了ndarray和list就可以運算了~! https://imgur.com/Uc1gM8V.jpg
現在在找方法把右邊每個數字煩人的描述去掉~ thanks a lot! ※ 編輯: explaining (1.164.110.53 臺灣), 08/18/2022 21:23:41

08/18 21:35, 1年前 , 30F
先學基本numpy跟pandas怎麼用,不用自己發明輪子
08/18 21:35, 30F

08/18 21:58, 1年前 , 31F
拍謝~原po應該算被我誤導吧,file.mean()也能得到15.45
08/18 21:58, 31F

08/18 22:03, 1年前 , 32F
但如此左邊有個0(df欄位名稱),且xls有多欄時會有新問題
08/18 22:03, 32F

08/18 22:05, 1年前 , 33F
如樓上建議,學習基本的numpy及pandas
08/18 22:05, 33F

08/18 22:09, 1年前 , 34F
平均值file[0].mean(),排序sorted(file[0].tolist())
08/18 22:09, 34F

08/18 22:25, 1年前 , 35F
其實pandas也有自己的排序,file[0].sort_values()
08/18 22:25, 35F

08/18 22:49, 1年前 , 36F
[0]指file第一欄(excel的A欄),未指定欄位名稱時,pandas
08/18 22:49, 36F

08/18 22:52, 1年前 , 37F
會自動賦予名稱,而數字旁欄位編號稱為索引
08/18 22:52, 37F

08/19 07:28, 1年前 , 38F
直接 file.values 就可以了
08/19 07:28, 38F

08/19 07:28, 1年前 , 39F
pandas 本身就是建在numpy上的
08/19 07:28, 39F

08/19 07:30, 1年前 , 40F
pandas.series 也可以直接 series.tolist()
08/19 07:30, 40F
文章代碼(AID): #1Y_S_N53 (Python)