作者processior ()
看板Python
標題[問題] 在python中關於讀取csv資料後進行運算
時間Tue May 8 23:16:49 2018
先舉例 假如有一 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