python concat函数 多张表_用python高效做Excel能做的事情

8b01c7f297a5d32043f707c32bcf9856.png

前言:

‍ 一开始学python做数据处理(numpy库和pandas库),是因为听别人说“用python处理事情很高效”;啃了几个星期的书本后,觉得不对劲,这不就是用代码做Excel可以完成的事情吗?!当时还做了个图吐槽它......

3621c7af04b55f29821588dcbd5547e1.png

我也是直到最近在做给量表算分的工作才开始懂得欣赏python的美,(也可以说是代码的美,毕竟数据分析这个事情,用matlab同样的好做!甚至一定程度上更好做!但谁让python开源而matlab贼贵呢...)

代码的优点

1⃣️手动操作 - > 自动操作

6c415a5f94808bdbf759080a13e373c5.png

这是一张从「问卷星」里面导出来的数据的截图,因为问卷题目很长,又需要算量表得分,这个时候就需要把每个表格拉窄,然后再拉插入新行,输入公式,再往下拉......但是实际上,这是写两行代码就可以完成的事情!

2⃣️重复劳动 - > 一次性劳动,多次使用

或许你看完上面之后说,用spss点点点点点点也可以呀,没有必要拉。是这样的没错,由于需要,我们的问卷要持续地发放,不定时地下载下来做实时的分析,所以不想重复地“点点点点点点”还是需要代码来实现。

进入正题:我需要的excel功能用什么函数实现

1⃣pandas库、Series和DataFrame的简介详见网页⬇️

What kind of data does pandas handle?​pandas.pydata.org
415bd09e7c24d8fef7cc58b0a737d9ab.png

2⃣数据导入

import 

3⃣修改列(column)名

#将A改成a;将B改为b;将C改为c
#要修改的内容写成字典形式
df.rename(columns = {'A':'a',
                     'B':'b',
                     'C':'c'} inplace = True)

4⃣计算量表得分

目前我只会单独把量表拿出来计算,然后再把算出来的结果拼接回去

#将量表取出,放置于变量名'Scale_A'下
#方法一:列出量表的条目进行比对,将匹配条目的列取出
Scale_A = df.loc[:,['Scale_A_title1',
                       'Scale_A_title2',
                       'Scale_A_title3',
                       'Scale_A_title4']]

#方法二:定位条目所在的列
#如下Scale_A的条目位于Excel表格的第10至17列
Scale_A = df.iloc[:,9:17]

#计算量表得分,并将得分结果放置在命名为'Scale_A得分'的新列中
Scale_A['Scale_A得分'] = Scale_A.apply(lambda x: x.sum(), axis=1)

#如果要反转计分
#将要反转题目的columns名列出,用df.apply.()函数写公式进行反转
for i in ['Scale_A_title1','Scale_A_title2','Scale_A_title3',
          'Scale_A_title4']:
    Scale_A[i] = Scale_A[i].apply(lambda x: 5-x)

#将算出得分加入至变量df中
df = pd.concat([data_ini,Scale_A['Scale_A得分']],axis=1)

上面的代码里面也有一个我不明白的点:df.loc()和df.iloc()函数的用法有什么区别?为什么方法二用df.loc()函数会报错?

5⃣根据列删除不需要的信息

df_final = df.drop(["序号","提交答卷时间","所用时间","来源详情","来自IP"],axis = 1)

6⃣将整理好的df_final写入一个新的excel表

data_final.to_excel('问卷数据_已求量表得分.xlsx','Sheet1')

写到这里就大功告成啦!

这个帖子会根据我“学习情况”不定期更新补充哒!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值