[问题] 在python中关于读取csv资料后进行运算

楼主: processior (korman)   2018-05-08 23:16:49
先举例 假如有一 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就可以做得到我想要的功能。
     
作者: justoncetime (台北丛林好冷~)   2018-05-08 23:35:00
如果CSV很大,逐列是省内存吧(空间换时间)?不知道Pandas遇到很大CSV内存会不会爆?
楼主: processior (korman)   2018-05-08 23:37:00
是希望运算时间可以快一点
作者: kenduest (小州)   2018-05-08 23:45:00
就 pandas 来处理,语法可以很干净达成需求df = pandas.read_csv('file.csv')df.groupby(['title'])['salary'].agg(['mean'])大概这样的概念??
作者: ThxThx (洗洗睡)   2018-05-09 05:14:00
这样的想法很直观可是没有很笨Simple is better than complex你有用profiler 确定慢是慢在哪里?但如果想要简洁一些 pandas的确可以用在你的问题上
作者: bestchiao (呼拉拉)   2018-05-09 11:04:00
k大的方式可以解决你的问题 但不知你的资料量有多少?
作者: kenduest (小州)   2018-05-09 12:21:00
若是太多就进数据库,用 sql groupby 处理也很快

Links booklink

Contact Us: admin [ a t ] ucptt.com