<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個(gè)真實(shí)問(wèn)題,搞定三個(gè)冷門(mén)pandas函數(shù)

          共 1679字,需瀏覽 4分鐘

           ·

          2020-10-17 21:57

          最近有一個(gè)粉絲問(wèn)過(guò)我一個(gè)問(wèn)題,覺(jué)得挺有意思,分享給大家。經(jīng)過(guò)簡(jiǎn)化后大概就是有一個(gè)長(zhǎng)這樣的時(shí)間序列數(shù)據(jù)?

          可以看到,一共有15行數(shù)據(jù),其中有一些行的value是空值, 現(xiàn)在想在不改變?cè)瓟?shù)據(jù)的情況下取出從第一個(gè)不是空值的行之后的全部數(shù)據(jù)?

          嗯,看上去不是很難,但如果添加一個(gè)額外要求:「使用純pandas函數(shù)完成」 這就涉及到了一些不常用的函數(shù),一起來(lái)看看。

          首先需要構(gòu)造這樣的數(shù)據(jù),在Python中我們可以先按照規(guī)則生成字符串,然后使用timedatatime模塊進(jìn)行轉(zhuǎn)換,方法很多,但是pandas中如何直接生成呢?這就涉及到第一個(gè)函數(shù)date_range

          ? pd.date_range

          其實(shí)在pandas中生成時(shí)間序列數(shù)據(jù)比其他方法要方便很多,使用.date_range一行代碼即可,該函數(shù)使用方法為

          pandas.date_range(start=None,?end=None,?periods=None,?freq=None,?tz=None,?normalize=False,?name=None,?closed=None,?**kwargs)

          可以通過(guò)起止日期來(lái)生成也可以通過(guò)開(kāi)始日期與長(zhǎng)度生成上面的默認(rèn)間隔是1天,當(dāng)然是可以自定義,比如修改為5天該方法還支持生成更多的指定形式的時(shí)間序列數(shù)據(jù),感興趣的讀者可以自行查閱官方文檔,現(xiàn)在我們就可以生成示例數(shù)據(jù)?

          df?=?pd.DataFrame(
          ????{???'date':?[i?for?i?in?pd.date_range('20200701','20200715')],
          ????????'value':?['','','','','',1,6,1,2,'',2,1,6,0,1]}
          )?

          接下來(lái)我的思路是

          • 判斷value列的每個(gè)值是否為空值,返回Ture/False
          • 找到第一個(gè)為False的索引,取后面全部的數(shù)據(jù)

          為了只用pandas實(shí)現(xiàn)這個(gè)思路,用到了兩個(gè)不常見(jiàn)的函數(shù),讓我們慢慢說(shuō)。

          ? pandas.Series.ne

          ne函數(shù)可以比較兩個(gè)Series,常用于缺失值填充,下面是一個(gè)例子

          除了可以比較兩個(gè)Series之外,對(duì)于我們的問(wèn)題,它可以比較元素:返回True如果這個(gè)值不是你指定的值,聽(tīng)上去很繞,我們看代碼

          可以看到,所有空值都被標(biāo)記為False,接下來(lái)要做的就是找到第一個(gè)True元素的索引,并取出之后的全部數(shù)據(jù)。

          ? pandas.DataFrame.idxmax

          如何在pandas中直接定位一組數(shù)據(jù)中最大/最小值的位置?可以使用idxmax/idxmin,這個(gè)函數(shù)不難,直接看一個(gè)簡(jiǎn)單的例子它可以返回最大值/最小值第一次出現(xiàn)的位置索引!剛好可以滿足我們的要求,現(xiàn)在就可以將idxmax與之前的ne函數(shù)結(jié)合起來(lái)實(shí)現(xiàn)我們需求

          df['value'].ne('').idxmax()
          #?5

          返回的索引值是5,最后就可以使用loc函數(shù)一行代碼實(shí)現(xiàn)我們的需求

          其實(shí)這個(gè)問(wèn)題還有很多其他的辦法,比如可以先篩選出所有True的索引,然后使用.first_valid_index()找到第一個(gè)True,最后也可以不用loc直接df[df['value'].ne('')]實(shí)現(xiàn)。

          但我還希望你能掌握上面三個(gè)函數(shù)并靈活運(yùn)用,如果有更好的思路可以在評(píng)論區(qū)留言。

          -END-


          文末推薦一本數(shù)據(jù)分析相關(guān)的書(shū):Python數(shù)據(jù)分析與可視化(本書(shū)以零基礎(chǔ)為起點(diǎn),系統(tǒng)地介紹了Python在數(shù)據(jù)處理與可視化分析方面的應(yīng)用。全書(shū)共分3篇12章內(nèi)容。第1篇:基礎(chǔ)篇。第2篇:應(yīng)用篇。第3篇:實(shí)戰(zhàn)篇?綜合案例!本書(shū)既適合希望從事Python數(shù)據(jù)處理與可視化的用戶學(xué)習(xí),也適合廣大職業(yè)院校作為相關(guān)專業(yè)教材,還可作為社會(huì)培訓(xùn)班的參考用書(shū)現(xiàn)在京東和當(dāng)當(dāng)都有優(yōu)惠活動(dòng),點(diǎn)擊下方圖片查看詳情!

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品久久久久久亚洲影视 | 亚洲男人天堂网 | 1级毛片网站 | 特级毛片熟女 | 在线伊人 |