[問題] 在python中關於讀取csv資料後進行運算

看板Python作者時間6年前 (2018/05/08 23:16), 編輯推噓4(409)
留言13則, 5人參與, 6年前最新討論串1/1
先舉例 假如有一 a.csv(內容)如下: index 職位  薪資  index 職位  薪資 0 經理   6萬   1  經理  5.5萬 2  經理  7萬   3  協理  10萬   4 協理  8萬   5  總經理  20萬   5 課長  4萬 csv檔內容如上,我的想法是將所有職位相同的薪資加起來除 於平均數,例如經理三位(6萬+5.5萬+7萬)/3 =6.166萬  然後從新編排csv檔為  index 職位  薪資   0 經理  6.166萬 講白一點就是把相同職位的資料整還在一起,然後薪資就求他的平均值 一開始的寫法如下:  fx = open(path,'r') fxr = csv.reader(fx) for row in fxr: 開始主程式對資料內容進行判讀  這種寫法很直觀也很笨,隨著檔案越來越大 執行的速度也不夠快 我想請問是否有沒有哪些python的模組是可以做csv檔案的重新彙整 而且可以對內容值作相互運算(加減乘除之類的)  我之前有看pandas 的dataframe 好像不錯用 但是他好像沒有對單一列行 的某個值可以做加減乘除用算的功能,不知有沒有版友知道有沒有更棒的 的模組又或者pandas就可以做得到我想要的功能。       -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.15.112.136 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1525792611.A.F2D.html

05/08 23:35, 6年前 , 1F
如果CSV很大,逐列是省記憶體吧(空間換時間)?
05/08 23:35, 1F

05/08 23:35, 6年前 , 2F
不知道Pandas遇到很大CSV記憶體會不會爆?
05/08 23:35, 2F

05/08 23:37, 6年前 , 3F
是希望運算時間可以快一點
05/08 23:37, 3F

05/08 23:45, 6年前 , 4F
就 pandas 來處理,語法可以很乾淨達成需求
05/08 23:45, 4F

05/09 00:30, 6年前 , 5F
df = pandas.read_csv('file.csv')
05/09 00:30, 5F

05/09 00:31, 6年前 , 6F
df.groupby(['title'])['salary'].agg(['mean'])
05/09 00:31, 6F

05/09 00:31, 6年前 , 7F
大概這樣的概念??
05/09 00:31, 7F

05/09 05:14, 6年前 , 8F
這樣的想法很直觀可是沒有很笨
05/09 05:14, 8F

05/09 05:14, 6年前 , 9F
Simple is better than complex
05/09 05:14, 9F

05/09 05:14, 6年前 , 10F
你有用profiler 確定慢是慢在哪裡?
05/09 05:14, 10F

05/09 05:14, 6年前 , 11F
但如果想要簡潔一些 pandas的確可以用在你的問題上
05/09 05:14, 11F

05/09 11:04, 6年前 , 12F
k大的方式可以解決你的問題 但不知你的資料量有多少?
05/09 11:04, 12F

05/09 12:21, 6年前 , 13F
若是太多就進資料庫,用 sql groupby 處理也很快
05/09 12:21, 13F
文章代碼(AID): #1QyRzZyj (Python)