| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> ??仅剩20分钟挑战一道Pandas面试题??生死竞速??简直刺激? -> 正文阅读 |
|
[大数据]??仅剩20分钟挑战一道Pandas面试题??生死竞速??简直刺激? |
昨晚有位童鞋一道Pandas面试题完全没有思路不会做,通过黄同学找到我时,这道题目离提交答案仅剩20分钟,不过我最终还是在15分钟之内解决了问题,这整个过程简直是刺激~😱😱😱 原题题目如下: 最终要求输出: 要在20分钟内解决这个问题,对于我来说最困难的第一步就是理解题意,作为一名英文渣渣,硬看这个还是理解的太慢。ε=ε=ε=(#>д<)ノ啊啊啊,简直是生死竞速啊,怎么办? 最终我使用了腾讯翻译官进行辅助,翻译结果如下: 有了图片翻译工具,这个题目总算理解了。 我总结一下四个规则要求:对于每一天的每一支股票,会有N个来源的价格,去掉空值后优先选择最频繁出现的价格,出现次数全部一样时选择来源id最小的价格,当天该股票全部都是空值时,选择前一个交易日的价格。 搞清楚了规则就可以开始整理数据了,这里我手敲编辑了数据为:
保存Excel文件。 已经耗时10分钟了😧怎么办?怎么办?😱 不过也已经到了我最擅长的编码阶段,开干吧??? 首先使用pandas读取数据:
这四个规则,直接使用pandas本身的方法会导致代码较为臃肿。由于时间紧迫,这里我直接使用万能的循环来解决这个问题,最终完整代码如下:
结果: 可以看到结果满足题目的四点规则要求,历时5分钟编码终于搞定了。😪长舒一口气压压惊~ 做完后我立马将代码和截图发给了对方,对方也在提交答案后立马回了我一个红包。 但是表达看不懂,希望我写篇文章: 既然如此,那么我就写下这篇文章来详解这其中的几个小知识点。虽然其实这其中涉及的内容比我以前的老文章要简单20倍以上,不太屑于写,但黄同学都这样邀请了,我就逼自己写一把吧😂 首先呢,我们将整个datafream按照每天每支股票拆分成一个个的Datafream:
结果如下: 可以看到这支股票的每一天的数据都被拆分了出来。 取最频繁的价格,我们可以使用众数:
这种形式表示众数不止一个,表示出现次数一致,此时规则2要求选择来源id最小的价格,由于数据本身是按照来源id从小到大排序的,那么我们直接取第一个众数即可:
但是问题是,某个分组可能出现价格全部为空值的情况,此时规则要求取前一个分组的价格,这也是我直接使用循环来解决这个问题的原因,因为可以通过一个变量记录前一次遍历分组的结果。 当然为了避免数据源可能出现无序的情况的情况,我们需要事先对数据进行排序:
最后我将所有的结果数据都保存到了一个列表中,通过DataFrame的构造函数则可以直接根据一个列表生成一个DataFrame,columns参数指定了列名。 额,感觉实在太过于基础已经没啥可写的了,推荐几篇老文章吧: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:36:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |