<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>

          分享20個(gè)常用的Python函數(shù),輕松玩轉(zhuǎn)Pandas??!

          共 6082字,需瀏覽 13分鐘

           ·

          2021-07-13 18:02

          作者/俊欣

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

          1.讀取數(shù)據(jù)

          Pandas當(dāng)中的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ù),當(dāng)然也可以這么來操作

          df = pd.read_csv("Churn_Modelling.csv", nrows = 5000)
          df.shape
          (5000,14)

          當(dāng)然其中幾列的數(shù)據(jù),也可以這么來操作,例如下面的代碼選中“Gender”、“Age”以及“Tensure”等幾列

          df1 = pd.read_csv("Churn_Modelling.csv", usecols=['Gender''Age''Tenure''Balance'])

          2.查看缺失值

          要是我們想要看一下數(shù)據(jù)集當(dāng)中的缺失值的話,可以,

          groceries.isna().sum()

          Member_number      0
          Date               0
          itemDescription    0
          dtype: int64

          3. 填充缺失值

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

          # 這里用的是眾數(shù)來填充,當(dāng)然也可以用平均數(shù)mean,中位數(shù)median
          groceries['itemDescription'].fillna(value=groceries['itemDescription'].mode()[0], inplace=True)

          # 或者是用"fillna"這個(gè)方法
          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ù)集當(dāng)中每一列的數(shù)據(jù)類型,

          groceries.dtypes

          Member_number       int64
          Date               object
          itemDescription    object
          dtype: object

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

          groceries['Date'] = groceries['Date'].astype("datetime64")

          當(dāng)然還有“to_datetime”這個(gè)方法來嘗試

          groceries['Date'] = pd.to_datetime(groceries['Date'])

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

          groceries = pd.read_csv("Groceries_dataset.csv", parse_dates=['Date'])
          groceries.dtypes

          Member_number               int64
          Date               datetime64[ns]
          itemDescription            object
          dtype: object

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

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

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

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

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

          “query”這個(gè)方法也可以幫助到我們

          groceries.query('3000 < Member_number < 5000').head()

          “where”這個(gè)方法也行

          groceries[['Member_number','Date''itemDescription']].where(groceries['Member_number'] > 2500, 0).head()

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

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

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

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

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

          marketing["OwnHome"].value_counts()

          Own     516
          Rent    484
          Name: OwnHome, dtype: int64

          要是我們將其中的參數(shù)“normalize”改成“True”,它也將以百分比的形式出現(xiàn),

          marketing.Catalogs.value_counts(normalize=True)

          12    0.282
          6     0.252
          24    0.233
          18    0.233

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

          marketing["OwnHome"].nunique()

          2

          8. 將某一列作為索引

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

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

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

          當(dāng)我們?nèi)コ裟硯仔袛?shù)據(jù)之后,數(shù)據(jù)集當(dāng)中的索引會(huì)出現(xiàn)“斷裂”的情況,同理當(dāng)我們合并兩個(gè)數(shù)據(jù)集的時(shí)候,索引也不會(huì)被重新設(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”方法用法想類似,其中比較重要的一點(diǎn)是“l(fā)oc”方法一般可以接受標(biāo)簽,例如

          groceries.loc[:,["Member_number""Date"]].head()

          而“iloc”里面要是放標(biāo)簽的話,則會(huì)報(bào)錯(cuò),一般“iloc”里面放的則是索引,

          # 取第一列和第二列兩列的數(shù)據(jù)
          groceries.iloc[:,[0, 1]].head()

          11. 提取“月份”和“年份”

          我們可以通過“dt”這個(gè)方法來提取時(shí)間類型的數(shù)據(jù)中的年份和月份,例如

          groceries['Year'] = groceries['Date'].dt.year
          groceries['Month'] = groceries['Date'].dt.month

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

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

          groceries.drop(['Year','Month'], axis=1, inplace=True)

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

          要是想在數(shù)據(jù)集當(dāng)中增加幾列的時(shí)候,我們可以使用“insert”方法,例如,我們?cè)诘谝涣泻偷诙械奈恢貌迦搿癕onth”數(shù)據(jù)和“Year”的數(shù)據(jù)

          year = groceries['Date'].dt.year
          month = groceries['Date'].dt.month

          groceries.insert(1, 'Month', month)
          groceries.insert(2, 'Year', year)

          14. 排名統(tǒng)計(jì)

          我們可以為某一列數(shù)據(jù)做一個(gè)排名,使用“rank”這個(gè)方法

          groceries['Member_number_rank'] = groceries['Member_number'].rank(method = 'first', ascending = False).astype('int')

          15. 展示小數(shù)點(diǎn)后面的幾位小數(shù)

          數(shù)據(jù)集當(dāng)中對(duì)于浮點(diǎn)型的數(shù)字,小數(shù)點(diǎn)后面可能仍然會(huì)有很多的數(shù)字,我們可以通過“round”方法來進(jìn)行調(diào)整,例如我們保留一位小數(shù)

          df.round(1).head()

          16. 基于字符串去篩選數(shù)據(jù)

          我們有時(shí)候需要基于字符串去進(jìn)行數(shù)據(jù)的篩選,例如,我們要篩選出下面的數(shù)據(jù)集當(dāng)中顧客的名字是以“Mi”開頭的顧客,我們可以這么來做

          df[df['Surname'].str.startswith('Mi')].head()

          17. 基于字符串的長度來篩選數(shù)據(jù)

          有時(shí)候我們也可以通過字符串的長度來篩選數(shù)據(jù),例如我們通過下面的代碼篩選出“itemDescription”這個(gè)字段長度大于20的數(shù)據(jù)

          groceries[groceries.itemDescription.str.len() > 20].head()

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

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

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

          19. 畫圖

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

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

          20. 標(biāo)注重點(diǎn)

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

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

          ——END——

          最近發(fā)現(xiàn)一個(gè)點(diǎn)外賣每頓飯都能少花5-20的寶藏號(hào)。
          就是她,↓點(diǎn)擊下面名片關(guān)注公眾號(hào)↓


          進(jìn)入公眾號(hào)點(diǎn)擊菜單領(lǐng)取紅包

          最低5元,最高56元!

          瀏覽 44
          點(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>
                  亚洲不卡免费视频 | 性感欧美美女被操的视频 | 二人做人爱的视频 | 狠狠操狠狠色 | 激情五月天丁香社区 |