作者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://webptt.com/cn.aspx?n=bbs/Python/M.1525792611.A.F2D.html
1F:→ justoncetime: 如果CSV很大,逐列是省记忆体吧(空间换时间)? 05/08 23:35
2F:→ justoncetime: 不知道Pandas遇到很大CSV记忆体会不会爆? 05/08 23:35
3F:→ processior: 是希望运算时间可以快一点 05/08 23:37
4F:推 kenduest: 就 pandas 来处理,语法可以很乾净达成需求 05/08 23:45
5F:推 kenduest: df = pandas.read_csv('file.csv') 05/09 00:30
6F:→ kenduest: df.groupby(['title'])['salary'].agg(['mean']) 05/09 00:31
7F:→ kenduest: 大概这样的概念?? 05/09 00:31
8F:推 ThxThx: 这样的想法很直观可是没有很笨 05/09 05:14
9F:→ ThxThx: Simple is better than complex 05/09 05:14
10F:→ ThxThx: 你有用profiler 确定慢是慢在哪里? 05/09 05:14
11F:→ ThxThx: 但如果想要简洁一些 pandas的确可以用在你的问题上 05/09 05:14
12F:推 bestchiao: k大的方式可以解决你的问题 但不知你的资料量有多少? 05/09 11:04
13F:→ kenduest: 若是太多就进资料库,用 sql groupby 处理也很快 05/09 12:21