成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

??僅剩20分鐘挑戰(zhàn)一道Pandas面試題??生死競速??簡直刺激?

objc94 / 1118人閱讀

?作者主頁:小小明-代碼實(shí)體

?簡介:Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者?、數(shù)據(jù)處理專家?

?歡迎點(diǎn)贊 ? 收藏 ?留言 ?


昨晚有位童鞋一道Pandas面試題完全沒有思路不會做,通過黃同學(xué)找到我時(shí),這道題目離提交答案僅剩20分鐘,不過我最終還是在15分鐘之內(nèi)解決了問題,這整個(gè)過程簡直是刺激~???

原題題目如下:

最終要求輸出:

要在20分鐘內(nèi)解決這個(gè)問題,對于我來說最困難的第一步就是理解題意,作為一名英文渣渣,硬看這個(gè)還是理解的太慢。ε=ε=ε=(#>д<)?啊啊啊,簡直是生死競速啊,怎么辦?

最終我使用了騰訊翻譯官進(jìn)行輔助,翻譯結(jié)果如下:

有了圖片翻譯工具,這個(gè)題目總算理解了。

我總結(jié)一下四個(gè)規(guī)則要求:對于每一天的每一支股票,會有N個(gè)來源的價(jià)格,去掉空值后優(yōu)先選擇最頻繁出現(xiàn)的價(jià)格,出現(xiàn)次數(shù)全部一樣時(shí)選擇來源id最小的價(jià)格,當(dāng)天該股票全部都是空值時(shí),選擇前一個(gè)交易日的價(jià)格。

搞清楚了規(guī)則就可以開始整理數(shù)據(jù)了,這里我手敲編輯了數(shù)據(jù)為:

datetickerpricesource_id
2013/1/2AAPL515.610
2013/1/2AAPL515.621
2013/1/2AAPL515.622
2013/1/3AAPL515.160
2013/1/3AAPL515.171
2013/1/3AAPL515.182
2013/1/4AAPL0
2013/1/4AAPL515.451
2013/1/4AAPL515.472
2013/1/7AAPL0
2013/1/7AAPL1
2013/1/7AAPL2
2013/1/8AAPL527.280
2013/1/8AAPL528.291

保存Excel文件。

已經(jīng)耗時(shí)10分鐘了?怎么辦?怎么辦??

不過也已經(jīng)到了我最擅長的編碼階段,開干吧???

首先使用pandas讀取數(shù)據(jù):

import?pandas?as?pddf?=?pd.read_excel("股票數(shù)據(jù).xlsx")df

這四個(gè)規(guī)則,直接使用pandas本身的方法會導(dǎo)致代碼較為臃腫。由于時(shí)間緊迫,這里我直接使用萬能的循環(huán)來解決這個(gè)問題,最終完整代碼如下:

result?=?[]for?(date,?ticker),?split?in?df.groupby(["date",?"ticker"]):????prices?=?split.price.mode()????if?prices.shape[0]?>?0:????????price?=?split.price.mode().iat[0]????else:????????price?=?last????result.append((date,?ticker,?price))????last?=?priceresult?=?pd.DataFrame(result,?columns=["date",?"ticker",?"price"])result

結(jié)果:

可以看到結(jié)果滿足題目的四點(diǎn)規(guī)則要求,歷時(shí)5分鐘編碼終于搞定了。?長舒一口氣壓壓驚~

做完后我立馬將代碼和截圖發(fā)給了對方,對方也在提交答案后立馬回了我一個(gè)紅包。

但是表達(dá)看不懂,希望我寫篇文章:

既然如此,那么我就寫下這篇文章來詳解這其中的幾個(gè)小知識點(diǎn)。雖然其實(shí)這其中涉及的內(nèi)容比我以前的老文章要簡單20倍以上,不太屑于寫,但黃同學(xué)都這樣邀請了,我就逼自己寫一把吧?

首先呢,我們將整個(gè)datafream按照每天每支股票拆分成一個(gè)個(gè)的Datafream:

for?(date,?ticker),?df_split?in?df.groupby(["date",?"ticker"]):????print(date,?ticker)????display(df_split)

結(jié)果如下:

可以看到這支股票的每一天的數(shù)據(jù)都被拆分了出來。

取最頻繁的價(jià)格,我們可以使用眾數(shù):

df_split.price.mode()
0????527.281????528.29dtype:?float64

這種形式表示眾數(shù)不止一個(gè),表示出現(xiàn)次數(shù)一致,此時(shí)規(guī)則2要求選擇來源id最小的價(jià)格,由于數(shù)據(jù)本身是按照來源id從小到大排序的,那么我們直接取第一個(gè)眾數(shù)即可:

df_split.price.mode().iat[0]
527.28

但是問題是,某個(gè)分組可能出現(xiàn)價(jià)格全部為空值的情況,此時(shí)規(guī)則要求取前一個(gè)分組的價(jià)格,這也是我直接使用循環(huán)來解決這個(gè)問題的原因,因?yàn)榭梢酝ㄟ^一個(gè)變量記錄前一次遍歷分組的結(jié)果。

當(dāng)然為了避免數(shù)據(jù)源可能出現(xiàn)無序的情況的情況,我們需要事先對數(shù)據(jù)進(jìn)行排序:

df.sort_values(["ticker",?"date",?"source_id"],?inplace=True)

最后我將所有的結(jié)果數(shù)據(jù)都保存到了一個(gè)列表中,通過DataFrame的構(gòu)造函數(shù)則可以直接根據(jù)一個(gè)列表生成一個(gè)DataFrame,columns參數(shù)指定了列名。

額,感覺實(shí)在太過于基礎(chǔ)已經(jīng)沒啥可寫的了,推薦幾篇老文章吧:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/119820.html

相關(guān)文章

  • ??蘇州程序大白一文從基礎(chǔ)手把手教你Python數(shù)據(jù)可視化大佬??《??記得收藏??

    ??蘇州程序大白一文從基礎(chǔ)手把手教你Python數(shù)據(jù)可視化大佬??《??記得收藏??》 目錄 ????開講啦?。。?!????蘇州程序大白?????博主介紹前言數(shù)據(jù)關(guān)系可視化散點(diǎn)圖 Scatter plots折線圖強(qiáng)調(diào)連續(xù)性 Emphasizing continuity with line plots同時(shí)顯示多了圖表 數(shù)據(jù)種類的可視化 Plotting with categorical da...

    Drinkey 評論0 收藏0
  • ??導(dǎo)圖整理大廠面試高頻數(shù)組8: 移除元素的雙指針優(yōu)化, 力扣27??

    此專欄文章是對力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會加上我對導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...

    zhangyucha0 評論0 收藏0
  • ??小白必看??帶你避開python大坑??在使用openpyxl時(shí),出現(xiàn)ValueError: U

    在使用openpyxl時(shí),出現(xiàn)ValueError: Unknown engine: openpyxl 問題定位解決思路拓展 問題定位 在使用鏈接: https://blog.csdn.net/SuperAlanSun/article/details/120042466 博客中的方法讀取excel數(shù)據(jù)時(shí): import pandas as pddf=pd.rea...

    番茄西紅柿 評論0 收藏2637
  • ??擼完這個(gè)springboot項(xiàng)目,我對boot輕車熟路!【源碼+視頻都開源】【強(qiáng)烈建議收藏】??

    上次給大家分享了一個(gè)springboot+vue的校園招聘系統(tǒng),視頻教程加項(xiàng)目源碼,都是開源的,應(yīng)該說很香了,今天再給大家分享一個(gè)不錯(cuò)的springboot的項(xiàng)目。 老規(guī)矩,開源,開源,開源?。。? 金九銀十來了,小伙伴們,沖??!前面已經(jīng)整理了很多的面試題,拿去學(xué)習(xí)吧! 1,??爆肝!整理了一周的Spring面試大全【含答案】,吊打Java面試官【建議收藏】!?? 2,??肝完了,一天掌握數(shù)據(jù)...

    AZmake 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<