1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Pandas數(shù)據(jù)分析小技巧系列 第二集

        共 3037字,需瀏覽 7分鐘

         ·

        2020-12-04 20:45

        Python與算法社區(qū)
        444篇原創(chuàng),干貨滿滿
        三步加星標


        01

        02

        03

        三步加星標





        你好!我是 zhenguo

        已推Pandas數(shù)據(jù)分析小技巧系列第一集,今天第二集,往下閱讀前可以先星標:Python與算法社區(qū),只有這樣才會第一時間收到我的推送。

        明天就是2020-12-1,祝你年底一切順利!

        小技巧6:如何快速找出 DataFrame 所有列 null 值個數(shù)?

        實際使用的數(shù)據(jù),null 值在所難免。如何快速找出 DataFrame 所有列的 null 值個數(shù)?

        使用 Pandas 能非常方便實現(xiàn),只需下面一行代碼:

        data.isnull().sum()

        data.isnull(): 逐行逐元素查找元素值是否為 null.

        .sum(): 默認在 axis 為 0 上完成一次 reduce 求和。

        上手實際數(shù)據(jù),使用這個小技巧,很爽。

        讀取泰坦尼克預測生死的數(shù)據(jù)集

        data?=?pd.read_csv('titanicdataset-traincsv/train.csv')

        結(jié)果:

        檢查 null 值:

        data.isnull().sum()

        結(jié)果:

        PassengerId??????0
        Survived?????????0
        Pclass???????????0
        Name?????????????0
        Sex??????????????0
        Age????????????177
        SibSp????????????0
        Parch????????????0
        Ticket???????????0
        Fare?????????????0
        Cabin??????????687
        Embarked?????????2
        dtype:?int64

        Age 列 177 個 null 值

        Cabin 列 687 個 null 值

        Embarked 列 2 個 null 值

        小技巧7:如何用 Pandas 快速生成時間序列數(shù)據(jù)?

        與時間序列相關(guān)的問題,平時還是挺常見的。

        介紹一個小技巧,使用 pd.util.testing.makeTimeDataFrame

        只需要一行代碼,便能生成一個 index 為時間序列的 DataFrame:

        import?pandas?as?pd

        pd.util.testing.makeTimeDataFrame(10)

        結(jié)果:

        A?B?C?D
        2000-01-03?0.932776?-1.509302?0.285825?0.941729
        2000-01-04?0.565230?-1.598449?-0.786274?-0.221476
        2000-01-05?-0.152743?-0.392053?-0.127415?0.841907
        2000-01-06?1.321998?-0.927537?0.205666?-0.041110
        2000-01-07?0.324359?1.512743?0.553633?0.392068
        2000-01-10?-0.566780?0.201565?-0.801172?-1.165768
        2000-01-11?-0.259348?-0.035893?-1.363496?0.475600
        2000-01-12?-0.341700?-1.438874?-0.260598?-0.283653
        2000-01-13?-1.085183?0.286239?2.475605?-1.068053
        2000-01-14?-0.057128?-0.602625?0.461550?0.033472

        時間序列的間隔還能配置,默認的 A B C D 四列也支持配置。

        import?numpy?as?np

        df?=?pd.DataFrame(np.random.randint(1,1000,size=(10,3)),
        ??????????????????columns?=?['商品編碼','商品銷量','商品庫存'])
        df.index?=?pd.util.testing.makeDateIndex(10,freq='H')

        結(jié)果:

        ?商品編碼?商品銷量?商品庫存
        2000-01-01?00:00:00?99?264?98
        2000-01-01?01:00:00?294?406?827
        2000-01-01?02:00:00?89?221?931
        2000-01-01?03:00:00?962?153?956
        2000-01-01?04:00:00?538?46?374
        2000-01-01?05:00:00?226?973?750
        2000-01-01?06:00:00?193?866?7
        2000-01-01?07:00:00?300?129?474
        2000-01-01?08:00:00?966?372?835
        2000-01-01?09:00:00?687?493?910

        小技巧8:如何重新排序 DataFrame 的列?

        某些場景需要重新排序 DataFrame 的列,如下 DataFrame:

        如何將列快速變?yōu)椋?/p>

        下面給出 2 種簡便的小技巧。先構(gòu)造數(shù)據(jù):

        df?=?pd.DataFrame(np.random.randint(0,20,size=(5,7))?\
        ,columns=list('ABCDEFG'))
        df

        方法1,直接了當:

        df2?=?df[["A",?"C",?"D",?"F",?"E",?"G",?"B"]]
        df2

        結(jié)果:

        方法2,也了解下:

        cols?=?df.columns[[0,?2?,?3,?5,?4,?6,?1]]
        df3?=?df[cols]
        df3

        也能得到方法1的結(jié)果。

        小技巧9:如何完成數(shù)據(jù)下采樣,調(diào)整步長由小時為天?

        步長為小時的時間序列數(shù)據(jù),有沒有小技巧,快速完成下采樣,采集成按天的數(shù)據(jù)呢?

        先生成測試數(shù)據(jù):

        import?pandas?as?pd
        import?numpy?as?np

        df?=?pd.DataFrame(np.random.randint(1,10,size=(240,3)),?\
        columns?=?['商品編碼','商品銷量','商品庫存'])

        df.index?=?pd.util.testing.makeDateIndex(240,freq='H')
        df

        生成 240 行步長為小時間隔的數(shù)據(jù):

        小技巧,使用 resample 方法,合并為天(D)

        day_df?=?df.resample("D")["商品銷量"].sum().to_frame()
        day_df

        結(jié)果如下,10行,240小時,正好為 10 days:


        看到這兒了,別走開哈,下面是驚喜時刻。承蒙出版社老朋友的厚愛,贈送給 Python與算法社區(qū)《趣學Python算法 100 例》5 本:



        算法源于生活,又可以改變生活。本書專為Python+算法初學者量身打造!詳解100個趣味編程算法實例,內(nèi)容涵蓋Python編程的基礎(chǔ)知識和常用算法,是初學算法設(shè)計與實現(xiàn)的極佳選擇,詳情點擊下面圖片:

        送書方法:
        第一步:長按下方二維碼,關(guān)注我的視頻號:程序員zhenguo
        第二步:在視頻號內(nèi)私信留言:你想在我的視頻號里,看到啥、學到啥,我會從中選出 5 名最走心的留言,分別送一本。

        瀏覽 47
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            同性三级大尺度 | 丁香五月婷婷激情啪啪 | 97人妻精品一区二区三区 | 91黄色大片 | 亚洲激情视频小说 | www.色老板 | 婷婷色香五月综合激情 | 国产成人豆花视频 | 伦理片免费影院播放 | 日韩欧美视频在线播放 |