不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

寂寂竟何待,朝朝空自归。

大家好,我是Python进阶者。

一、前言

昨天在Python最强王者交流群【鱼鱼鱼也不】问了一个Pandas处理的问题,下图是讨论截图:

38df5dd5b1ffa9550fd380b584c96cb8.png

下图是他的原始数据:

87e052752b6e4d40c529e9485346f734.jpeg

其实一开始是有点难以理解的。其实这个就是想判断两列的情况,用一列值填充另一列值。

二、实现过程

这里【猫药师Kelly】给了一个解答,如下所示:

1303a7eb1ec328277259840b2137cee4.png

后来【郑煜哲·Xiaopang】也给了一个代码,如下所示:

df["col1"].fillna(df[col2])

看上去的确可行,完美地解决了粉丝的问题!

bf40ba1d8a20b54725c1eb1de204b883.png

不知道为啥他后面又拿出来问了,问他原因也没说具体,可能是自己不会实现吧(盲猜)。细节方面就不说了,直接放上【月神】的解法。

405886e63d8af39374c95c08228376e4.png
import pandas as pd

file = ""
output_filename = ""

data1 = pd.read_excel(file, sheet_name='Sheet1', dtype={'eventdate': 'datetime64[ns]', 'u1': 'datetime64[ns]'})
d2 = pd.read_excel(file, sheet_name='Sheet2', dtype={'f1': 'datetime64[ns]', 'f2': 'datetime64[ns]'})


def match_description(s, df, compare_col, value_col):
    """判断df[compare_col]中是否有s,如果有,则返回df[value_col]的第一个值,否则返回空"""
    compare_data = df[df[compare_col] == s].copy()
    if compare_data.empty:
        return None
    return compare_data[value_col].values[0]


# apply方法第一个.取时间是时分都相等的对应值
d2['gbvibforwardrms'] = d2['f1'].apply(match_description, args=(data1, 'u1', 'gbvibforwardrms'))
# apply方法第二个.取是都是当天时间对应值
d2['gbvibforwardrms1'] = d2['f2'].apply(match_description, args=(data1, 'eventdate', 'gbvibforwardrms'))
# 第一个apply值的缺失值,补第二个apply值, 两列都为空用空字符串填充
d2['c'] = d2['gbvibforwardrms'].fillna(d2['gbvibforwardrms1']).fillna('')
# 数据保存
d2['c'].to_excel(output_filename, sheet_name='data3')

一把过,太强了!

6e26167d5b404d4365c6dd0602502dde.png

最后再拓展一些,【~上善居士~ 郭百川】分享了几个常用的数据分析姿势,如下图所示:

22d43d75db143b583180709c97e262ce.png还有一个,如下图所示:

6684a8c90022c248be0425f348629ea1.png速查表连接如下:

https://github.com/pandas-dev/pandas/tree/master/doc/cheatsheet

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Pandas处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【鱼鱼鱼也不】提问,感谢【猫药师Kelly】、【哈佛在等我呢~】、【郑煜哲·Xiaopang】、【~上善居士~ *郭百川】、【月神】、【瑜亮老师】给出的思路和代码解析,感谢【封代春】、【冫马讠成】、【dcpeng】、【此类生物】、【Chloe】、【郎爱君】等人参与学习交流。

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python付费学习交流群,欢迎大家加入我的Python学习交流群!

2c6eec9edda38a0f76d427a042ec5e38.png

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

d7596924c0c356b8a1a1bf8078e6e9ad.png

赠书规则

 
 

如果喜欢本文

欢迎 在看留言分享至朋友圈 三连

 
 
 
 
 
 

赠书

 
 
 
 
感谢北京大学出版社提供的图书,感兴趣的童鞋欢迎选购!按以下方式和公众号互动,即有机会获赠以上一本图书!
活动方式:在公众号后台回复"送书"参与活动,届时会在参与的小伙伴中抽取1名幸运鹅!或者在本公众号后台文章留言累计300次(PS:一篇文章算留言一次,后台有数据统计的,本号有1000余篇文章,欢迎留言支持),满足留言次数也可以免费获得一本赠书,包邮哦!

    活动时间:截至8月10日20点(周三)开奖,不见不散。
    快快拉上你的小伙伴参与进来吧~
让我知道你在看

------------------- End -------------------

往期精彩文章推荐:

6c9ff390681ef3d137c23a38847c4c51.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值