Python实现Excel常用的16个函数(1)

公众号后台回复“图书“,了解更多号主新书内容

 作者:老表

 来源:简说Python

前言

鸽了很久的一篇文章啦,很久之前,大概一个月吧,真是老鸽子了!
当时推了一篇文章Excel函数 | 相信这些也是你最常用这16个!,然后有个读者朋友提议我可以出一个Python实现这些常用Excel函数的专辑,我当时一想,很好的想法呀,然后就答应了,然后就鸽到现在。。。。(弹幕,刷一波:「鸽王老表」

废话不多说了,来实现砸门的flag吧~

摆脱鸽王,开始练习

读取Excel文件

首先下载本次案例需要的数据集,浏览器访问下方地址即可,在此感谢阿里云天池数据集平台和数据集上传者大师兄Eric,我下载的是湖北新冠肺炎疫情历史总数据下载.xls,大家可以随意选择其他省。

https://tianchi.aliyun.com/s/986f2e8af9e34f8ff8ae84ea7a18f96a

数据情况

数据集下载后,如果直接读取可能会出错,建议大家先另存为xlsx格式,然后读取。

# 导入数据处理包
import pandas as pd

# 读取Excel,header=1表示取第二行数据作为列名(表头)
data_set = pd.read_excel('湖北新冠肺炎疫情历史总数据下载.xlsx',header=1)

# 查看数据规模
data_set.shape
# 输出:(200, 5)
# 查看表头
data_set.columns
# 输入:Index(['时间', '新增', '总确诊', '治愈', '死亡'], dtype='object')
MID函数

通过图中介绍,我们知道Excel中MID函数的含义就是获取指定单元格中字符串指定位置的字符子串的,换到Python中就很好实现了,直接使用字符串的索引即可,如下:
'''
MID

根据时间一列新增一列:月
Excel实现:MID(A3,6,1)
'''
data_set['月'] = [i[5:6] for i in data_set['时间']]
data_set.head(3)
输出:
 时间 新增 总确诊 治愈 死亡 月
0 2020.1.20 72 270 25 6 1
1 2020.1.21 105 375 28 9 1
2 2020.1.22 69 444 28 17 1
CONCATENATE函数

CONCATENATE函数的作用就是将指定的几个单元格的内容连接起来,变成一个字符串,在Excel中也可以用 &也可以实现,在Python中更简单,直接用 +即可实现。
'''
CONCATENATE函数

将时间、新增、总确诊这三列合并,变成一列:通报
Excel实现:CONCATENATE(A3,"-新增:",B3,",总确诊:",C3,"。")
'''
data_set['通报'] = [
    i[1]['时间']+
    '-新增:'+str(i[1]['新增'])+
    ',总确诊:'+str(i[1]['总确诊'])+'。' 
    for i in data_set.iterrows()
]
data_set.head(3)
输出:
 时间 新增 总确诊 治愈 死亡 月 通报
0 2020.1.20 72 270 25 6 1 2020.1.20-新增:72,总确诊:270。
1 2020.1.21 105 375 28 9 1 2020.1.21-新增:105,总确诊:375。
2 2020.1.22 69 444 28 17 1 2020.1.22-新增:69,总确诊:444。
AND函数

AND函数的作用就是判断每个表达式是否都为真,如果都为真就返回True,否则就返回False,在Python中可以用and运算符实现这种判断。

'''
AND函数

假设规定每日新增人数超过300而且剩余确诊人数大于500,就算危险预警
Excel实现:AND(B3>300,C3-D3>500)
'''
data_set['危险预警'] = [
    i[1]['新增'] > 300 
    and i[1]['总确诊']-i[1]['治愈'] > 500
    for i in data_set.iterrows()]
data_set.head(3)
输出:
时间 新增 总确诊 治愈 死亡 月 通报 危险预警
0 2020.1.20 72 270 25 6 1 2020.1.20-新增:72,总确诊:270。 False
1 2020.1.21 105 375 28 9 1 2020.1.21-新增:105,总确诊:375。 False
2 2020.1.22 69 444 28 17 1 2020.1.22-新增:69,总确诊:444。 False
IF函数

IF函数就好实现了,Python中就有 if语法。
'''
IF函数

假设规定当日新增人数超过1000就算暴增预警,否则为0
Excel实现:IF(B3>1000,"当日暴增预警",0)
'''
surge_warning = []
for i in data_set.iterrows():
    if i[1]['新增'] > 1000:
        surge_warning.append('当日暴增预警')
    else:
        surge_warning.append(0)
data_set['暴增预警'] = surge_warning
data_set.head(3)
其他相关知识
# 删除指定列
data_set = data_set.drop(['年'], axis=1)
# 重新排列顺序
data_set = data_set.reindex(columns=['时间', '月', '新增', '总确诊', '治愈', '死亡'])

今天先分享四个,剩余12个,我将分三期分享给大家,也欢迎大家评论区提供更好的实现方法,加油。

◆  ◆  ◆  ◆ ◆
麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行100-40活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:

数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:


猜你喜欢

● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,我们可以使用pandas库来处理Excel文件并进行数据归一化,特别是在处理数值型数据时,归一化是一个常用的操作,它可以将所有行的数据缩放到同一范围内,比如0到1之间。这里有一个简单的例子说明如何按行对Excel文件中的数据进行归一化: ```python import pandas as pd # 加载Excel数据 df = pd.read_excel('your_file.xlsx') # 归一化函数 def normalize_rows(df_row): min_val = df_row.min() max_val = df_row.max() return (df_row - min_val) / (max_val - min_val) # 应用归一化到每一行 normalized_df = df.apply(normalize_rows, axis=1) # 将结果写回新的Excel文件 normalized_df.to_excel('normalized_data.xlsx', index=False) ``` 在这个例子中,我们首先读取Excel文件(假设文件名为'your_file.xlsx'),然后定义一个`normalize_rows`函数,该函数接收一个DataFrame的行作为输入,计算该行的最小值和最大值,然后将每个数值转换为0到1之间的值。 接着,我们使用`apply()`函数,传入`axis=1`表示按照行方向应用这个函数。最后,我们将归一化后的数据保存到新的Excel文件'normalized_data.xlsx'。 如果你想知道更多关于pandas、归一化或Excel操作的问题,请问: 1. 除了0到1范围,还有哪些常见的数据归一化方法? 2. 在数据分析中,为什么要对数据进行归一化或标准化? 3. 如果数据中存在缺失值,该如何处理才能进行归一化?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值