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>

        分享幾個常用的Python函數(shù),助你快速成為Pandas大神??!

        共 6070字,需瀏覽 13分鐘

         ·

        2021-06-16 10:44

        在Python當中模塊Pandas在數(shù)據(jù)分析中以及可視化當中是被使用的最多的,也是最常見的模塊,模塊當中提供了很多的函數(shù)和方法來應對數(shù)據(jù)清理數(shù)據(jù)分析數(shù)據(jù)統(tǒng)計,今天小編就通過20個常用的函數(shù)方法來為大家展示一下其中的能力,希望大家能有所收獲。

        1.讀取數(shù)據(jù)
        Pandas當中的read_csv的方法能夠去讀取csv類型的文件,然后轉(zhuǎn)化成類似于表格形式的dataframe,
        marketing = pd.read_csv("DirectMarketing.csv")groceries = pd.read_csv("Groceries_dataset.csv")df = pd.read_csv("Churn_Modelling.csv")
        要是我們只想展示一部分,比方說其中幾行的數(shù)據(jù),當然也可以這么來操作
        df = pd.read_csv("Churn_Modelling.csv", nrows = 5000)df.shape(5000,14)
        當然其中幾列的數(shù)據(jù),也可以這么來操作,例如下面的代碼選中“Gender”、“Age”以及“Tensure”等幾列
        df1 = pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance'])


        2.查看缺失值
        要是我們想要看一下數(shù)據(jù)集當中的缺失值的話,可以,
        groceries.isna().sum()
        Member_number 0Date 0itemDescription 0dtype: int64
        3. 填充缺失值

        下面我們來填充數(shù)據(jù)集當中的缺失值,我們有很多種方式方法來填充數(shù)據(jù)集當中的缺失值,比方說中位數(shù)、平均數(shù)、眾數(shù)等等

        # 這里用的是眾數(shù)來填充,當然也可以用平均數(shù)mean,中位數(shù)mediangroceries['itemDescription'].fillna(value=groceries['itemDescription'].mode()[0], inplace=True)
        # 或者是用"fillna"這個方法groceries["Date"].fillna(method = "ffill", inplace = True)

        假若我們想把這些缺失值給抹去,也很好來操作,使用“drop”方法,“inplace=True”表明原數(shù)組內(nèi)容直接被改變

        groceries.drop(axis = 0, how = 'any', inplace = True)


        4. 查看某一列的數(shù)據(jù)類型
        首先我們來查看一下數(shù)據(jù)集當中每一列的數(shù)據(jù)類型,
        groceries.dtypes
        Member_number int64Date objectitemDescription objectdtype: object

        我們看到的是,“Date”這一列的數(shù)據(jù)類型是“object”,我們可以通過“astype”這個方法來改變這一列的數(shù)據(jù)類型

        groceries['Date'] = groceries['Date'].astype("datetime64")
        當然還有“to_datetime”這個方法來嘗試
        groceries['Date'] = pd.to_datetime(groceries['Date'])

        除此之外,我們再讀取數(shù)據(jù)的時候,也可以通過里面的參數(shù)“parse_dates”來改變這一列的數(shù)據(jù)類型

        groceries = pd.read_csv("Groceries_dataset.csv", parse_dates=['Date'])groceries.dtypes
        Member_number int64Date datetime64[ns]itemDescription objectdtype: object


        5. 篩選出數(shù)據(jù)

        通常來說有很多種方式方法來篩選數(shù)據(jù)以得出我們想要的結(jié)果,比方說我們可以通過一些邏輯符號“==”、“!=”或者是“>”“<”等方式,例如下面的代碼便是挑選出“itemDescription”等于是“pip fruit”的數(shù)據(jù)

        groceries[groceries["itemDescription"] == "pip fruit"].head()

        當然還有“isin”這個方法來從一定的范圍內(nèi)選出數(shù)據(jù),我們能夠傳入一個列表,在列表中注明我們要篩選的數(shù)據(jù),例如下面的代碼,我們篩選出“Member_number”在這些范圍當中的數(shù)據(jù)

        groceries[groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()

        “query”這個方法也可以幫助到我們
        groceries.query('3000 < Member_number < 5000').head()

        “where”這個方法也行
        groceries[['Member_number','Date', 'itemDescription']].where(groceries['Member_number'] > 2500, 0).head()

        6. 排除數(shù)據(jù)

        “~”符號用來表明我們需要篩選出不再我們給定的范圍之內(nèi)的數(shù)據(jù),比方說下面的代碼我們篩選出“Member_number”不再這些范圍當中的數(shù)據(jù)

        groceries[~groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()

        7. 數(shù)據(jù)統(tǒng)計

        “value_counts”方法是被使用最廣泛的工具,在數(shù)據(jù)統(tǒng)計和計數(shù)當中,計算一下該列當中每大類的離散值出現(xiàn)的頻率

        marketing["OwnHome"].value_counts()
        Own 516Rent 484NameOwnHomedtypeint64
        要是我們將其中的參數(shù)“normalize”改成“True”,它也將以百分比的形式出現(xiàn),
        marketing.Catalogs.value_counts(normalize=True)
        12 0.2826 0.25224 0.23318    0.233

        除此之外,我們也可以用“nunique”這個方法來查看某一列離散值當中有幾大類,例如下面的代碼中“OwnHome”這一列只有兩大類

        marketing["OwnHome"].nunique()
        2


        8. 將某一列作為索引

        一般數(shù)據(jù)集中的索引大家可以理解為就是“行數(shù)”,也就是“第一行”、“第二行”,當然我們可以通過“set_index”這個方法來將任意某一列設(shè)置為我們需要的索引,比方說數(shù)據(jù)集中的“Date”字段被設(shè)置成了索引

        groceries.set_index('Date', inplace=True)


        9. 重新設(shè)置索引

        當我們?nèi)コ裟硯仔袛?shù)據(jù)之后,數(shù)據(jù)集當中的索引會出現(xiàn)“斷裂”的情況,同理當我們合并兩個數(shù)據(jù)集的時候,索引也不會被重新設(shè)置,要是上面的情況出現(xiàn),數(shù)據(jù)集中的索引便不是“連續(xù)”的了,我們可以通過“reset_index”來重新設(shè)置索引,例如下面的數(shù)據(jù)集的索引并不是連續(xù)的

        groceries.reset_index(drop=True, inplace=True)


        10. 關(guān)于“l(fā)oc”和“iloc”
        “l(fā)oc”方法和“iloc”方法用法想類似,其中比較重要的一點是“l(fā)oc”方法一般可以接受標簽,例如
        groceries.loc[:,["Member_number", "Date"]].head()

        而“iloc”里面要是放標簽的話,則會報錯,一般“iloc”里面放的則是索引,
        # 取第一列和第二列兩列的數(shù)據(jù)groceries.iloc[:,[0, 1]].head()

        11. 提取“月份”和“年份”
        我們可以通過“dt”這個方法來提取時間類型的數(shù)據(jù)中的年份和月份,例如 
        groceries['Year'] = groceries['Date'].dt.yeargroceries['Month'] = groceries['Date'].dt.month



        12. 去除某幾列的數(shù)據(jù)

        要是碰到我們想去除掉某幾列的數(shù)據(jù)的時候,可以使用“drop”方法,例如,我們?nèi)コ簟癥ear”和“Month”這兩列
        groceries.drop(['Year','Month'], axis=1, inplace=True)


        13. 增加某幾列的數(shù)據(jù)

        要是想在數(shù)據(jù)集當中增加幾列的時候,我們可以使用“insert”方法,例如,我們再第一列和第二列的位置插入“Month”數(shù)據(jù)和“Year”的數(shù)據(jù)

        year = groceries['Date'].dt.yearmonth = groceries['Date'].dt.month
        groceries.insert(1, 'Month', month)groceries.insert(2, 'Year', year)


        14. 排名統(tǒng)計
        我們可以為某一列數(shù)據(jù)做一個排名,使用“rank這個方法
        groceries['Member_number_rank'] = groceries['Member_number'].rank(method = 'first', ascending = False).astype('int')


        15. 展示小數(shù)點后面的幾位小數(shù)
        數(shù)據(jù)集當中對于浮點型的數(shù)字,小數(shù)點后面可能仍然會有很多的數(shù)字,我們可以通過“round”方法來進行調(diào)整,例如我們保留一位小數(shù)
        df.round(1).head()


        16. 基于字符串去篩選數(shù)據(jù)
        我們有時候需要基于字符串去進行數(shù)據(jù)的篩選,例如,我們要篩選出下面的數(shù)據(jù)集當中顧客的名字是以“Mi”開頭的顧客,我們可以這么來做
        df[df['Surname'].str.startswith('Mi')].head()


        17. 基于字符串的長度來篩選數(shù)據(jù)
        有時候我們也可以通過字符串的長度來篩選數(shù)據(jù),例如我們通過下面的代碼篩選出“itemDescription”這個字段長度大于20的數(shù)據(jù)
        groceries[groceries.itemDescription.str.len() > 20].head()


        18. 對離散值類型的數(shù)據(jù)進行分離

        我們可以對離散值類型的某一列數(shù)據(jù),當中是字符串的數(shù)據(jù),進行分離,例如我們遇到“Date”這一列當中的數(shù)據(jù)是字符串,然后我們可以通過“split”這個方法來進行字符串的分離,例如下面的代碼將“Date”這一列當中的月份數(shù)據(jù)給分離出來了

        groceries['Month'] = groceries['Date'].str.split('-', expand=True)[1]


        19. 畫圖

        我們可以在已有數(shù)據(jù)集的基礎(chǔ)上,通過“plot”這個方法以及里面的參數(shù)“kind”來進行可視化,例如我們想要話直方圖的話

        df['Balance'].plot(kind='hist', figsize=(10,6), title='Customer Balance')


        20. 標注重點

        我們有時候可能需要對數(shù)據(jù)集當中某些數(shù)據(jù)打標簽,表上顏色來顯示其重要性,在“Pandas”模塊中有“style”這個方法可以使用,例如下面的代碼將“Salary”以及“Catalogs”這兩列的最大值標出來了

        df_new.style.highlight_max(axis = 0, color = "yellow")





        推薦閱讀:

        入門: 最全的零基礎(chǔ)學Python的問題  | 零基礎(chǔ)學了8個月的Python  | 實戰(zhàn)項目 |學Python就是這條捷徑


        干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影


        趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


        AI: 會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影


        小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水?。?/a> | 一鍵把html網(wǎng)頁保存為pdf!|  再見PDF提取收費! | 用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!


        年度爆款文案


        點閱讀原文,領(lǐng)AI全套資料!

        瀏覽 11
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        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>
            国产又色又爽又黄又免费 | 天天骑日日骑夜夜骑性爱视频 | 国产黄色福利 | 校花被c呻吟打开双腿p小视频 | 久久婷婷精品秘国产生583 | 污视频在线观看视频 | 免费无码婬片在线播放 | 中文字幕无码韩 | 一级a性色生活久久无 | 操屄视频免费看 |