看板 Python 關於我們 聯絡資訊
先舉例 假如有一 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
justoncetime: 如果CSV很大,逐列是省記憶體吧(空間換時間)? 05/08 23:35
justoncetime: 不知道Pandas遇到很大CSV記憶體會不會爆? 05/08 23:35
processior: 是希望運算時間可以快一點 05/08 23:37
kenduest: 就 pandas 來處理,語法可以很乾淨達成需求 05/08 23:45
kenduest: df = pandas.read_csv('file.csv') 05/09 00:30
kenduest: df.groupby(['title'])['salary'].agg(['mean']) 05/09 00:31
kenduest: 大概這樣的概念?? 05/09 00:31
ThxThx: 這樣的想法很直觀可是沒有很笨 05/09 05:14
ThxThx: Simple is better than complex 05/09 05:14
ThxThx: 你有用profiler 確定慢是慢在哪裡? 05/09 05:14
ThxThx: 但如果想要簡潔一些 pandas的確可以用在你的問題上 05/09 05:14
bestchiao: k大的方式可以解決你的問題 但不知你的資料量有多少? 05/09 11:04
kenduest: 若是太多就進資料庫,用 sql groupby 處理也很快 05/09 12:21