看板 Python 關於我們 聯絡資訊
小弟程式超級新手..第一次碰程式也是第一次碰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
chang1248w: 非excel不可嗎? 08/18 13:48
chang1248w: 我會把excel先匯出成csv 08/18 13:49
chang1248w: pandas.read_csv之後在python上做處理,再df.to_csv 08/18 13:50
chang1248w: 另外csv檔excel是可以讀的 08/18 13:50
explaining: CSV再轉EXCEL格式不會跑掉嗎? 還是感謝您的回覆 08/18 14:18
explaining: 我會試試看您的方法 不知道有沒有辦法直接對excel處理 08/18 14:21
venomsoul: CSV檔嚴格說應該預設由notepad開啟,因為他只是字串, 08/18 14:55
venomsoul: 甚至沒有座標概念,但那樣就失去附檔命名為csv的意義 08/18 14:55
venomsoul: 了,所以一般有安裝excel的windows電腦都會直接用exce 08/18 14:55
venomsoul: l開啟csv,真要說格式可能跑掉應該是沒有,反而是exce 08/18 14:55
venomsoul: l如果有合併儲存格或有人在儲存格內換行,那轉成csv才 08/18 14:55
venomsoul: 會有問題,然後我沒用pandas但是好像本身就有read_exc 08/18 14:55
venomsoul: el(),何不試試看? 08/18 14:55
有的 但read出來的資料無法直接處裡~
chickengod: pandas.read_excel() 回傳值是 DataFrame 的資料型態 08/18 15:12
chickengod: 要看得懂這個 object 的 function 才知道怎麼處理 08/18 15:12
chickengod: 換句話說轉成 DataFrame 後你要使用 pandas 內建的 08/18 15:12
chickengod: function 08/18 15:12
感謝三位大大的解說,特別是chick大~大致了解了,看來是資料格式的問題 我想接下來要查的關鍵字是 dataframe 轉換成list! 感謝! ※ 編輯: explaining (1.164.110.53 臺灣), 08/18/2022 15:23:08
bjchiou: 讀取用了usecols且只讀一欄,再從回傳形式來看,應該是 08/18 16:04
bjchiou: pd 的Series 08/18 16:04
bjchiou: np.mean要求使用array-like,所以要將pd.Series轉成np. 08/18 16:09
bjchiou: array 08/18 16:09
bjchiou: 第一個9應該也包含在內吧?那括號內還要加上header=None, 08/18 16:24
bjchiou: 整理一下,read_excel括號內要加header=None(若9要算) 08/18 16:28
bjchiou: print(np.mean(np.array(file))),將pd.Series轉np.array 08/18 16:29
bjchiou: 熟練之後還可以串接read_excel(...).to_numpy(...) 08/18 16:31
bjchiou: sorry~read_excel後的結果為dataframe、非series 08/18 16:40
lycantrope: 問題出在資料沒有header吧 如果你資料沒有欄位名稱 08/18 18:06
lycantrope: 讀取時要加header = None 08/18 18:07
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
lycantrope: 先學基本numpy跟pandas怎麼用,不用自己發明輪子 08/18 21:35
bjchiou: 拍謝~原po應該算被我誤導吧,file.mean()也能得到15.45 08/18 21:58
bjchiou: 但如此左邊有個0(df欄位名稱),且xls有多欄時會有新問題 08/18 22:03
bjchiou: 如樓上建議,學習基本的numpy及pandas 08/18 22:05
bjchiou: 平均值file[0].mean(),排序sorted(file[0].tolist()) 08/18 22:09
bjchiou: 其實pandas也有自己的排序,file[0].sort_values() 08/18 22:25
bjchiou: [0]指file第一欄(excel的A欄),未指定欄位名稱時,pandas 08/18 22:49
bjchiou: 會自動賦予名稱,而數字旁欄位編號稱為索引 08/18 22:52
Mupzopod: 直接 file.values 就可以了 08/19 07:28
Mupzopod: pandas 本身就是建在numpy上的 08/19 07:28
Mupzopod: pandas.series 也可以直接 series.tolist() 08/19 07:30