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

          【Python】分享14條非常實(shí)用的Pandas函數(shù)方法,建議珍藏??!

          共 4971字,需瀏覽 10分鐘

           ·

          2021-09-02 23:10

          今天和大家來分享幾個(gè)十分好用的pandas函數(shù),可能平時(shí)并不是特別的常見,但是卻能夠幫助我們在平時(shí)的工作、學(xué)習(xí)當(dāng)中極大的提高效率,小編也希望讀者朋友們在看完本文之后能夠大有收獲



          1
          ExcelWriter

          使用ExcelWriter()可以向同一個(gè)excel的不同sheet中寫入對應(yīng)的表格數(shù)據(jù),首先要?jiǎng)?chuàng)建一個(gè)writer對象,傳入的主要參數(shù)為文件名及其路徑

          import pandas as pd
          a = pd.DataFrame({ "a": [1, 2, 3, 4, 5],    "b": [256810],})b = pd.DataFrame({    "c": [52314],    "d": [257810],})
          # 寫入到同一個(gè)excel當(dāng)中去with pd.ExcelWriter("data.xlsx") as writer:
          a.to_excel(writer, sheet_name="a_sheet", index = False) b.to_excel(writer, sheet_name="b_sheet", index = False)


          2
          pipe

          pipe()方法可以將一連串的函數(shù)以鏈?zhǔn)降慕Y(jié)構(gòu)嵌套在數(shù)據(jù)集當(dāng)中,例如一個(gè)臟數(shù)據(jù)集當(dāng)中有重復(fù)值、空值和極值等等,我們分別建立了3個(gè)函數(shù)來"drop_duplicates","remove_outliers"和"fill_nans"分別處理上面提到的3個(gè)問題,然后用pipe()方法將這三個(gè)函數(shù)以鏈?zhǔn)降慕Y(jié)構(gòu)串聯(lián)起來,作用在同一個(gè)數(shù)據(jù)集上面,代碼如下圖所示

          df_preped = (df.pipe(drop_duplicates).             pipe(remove_outliers, ['price''carat''depth']).             pipe(encode_categoricals, ['cut''color''clarity'])            )


          3
          explode

          我們可以通過一個(gè)簡單的例子來說明一下該函數(shù)的作用,
          df = pd.Series(    [1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("dirty")
          ?

          df.explode("dirty", ignore_index=True)

          要是遇到一行的數(shù)據(jù)當(dāng)中含有多個(gè)元素,explode()方法可以將這一行的數(shù)據(jù)展開到多行,ignore_index = True,意味著數(shù)據(jù)展開來之后,索引也會逐行地遞增


          4
          between

          between是用來提取出給定范圍當(dāng)中的值的,看下面的例子
          data = {'name': ['John', 'Mike', 'Tom', 'Greg', 'Jim'],        'income': [80009000100001000020000],        'age': [20, 24, 25, 23, 28]}df = pd.DataFrame(data)

          我們挑選出收入在8000到10000范圍之內(nèi)的數(shù)據(jù)

          df[df['income'].between(8000, 10000, inclusive='neither')]



          5
          convert_dtypes

          pandas當(dāng)中的convert_dtypes可以自動推斷數(shù)據(jù)類型并且進(jìn)行轉(zhuǎn)化,例如
          df = pd.DataFrame(    {'a':[1,2,3],     'b':[0.55,0.66,1.55],     'c':['Jack','Tony','Posi']})df.dtypes

          df.convert_dtypes().dtypes



          6
          select_dtypes

          pandas當(dāng)中的select_dtypes()方法功能是返回那些指定數(shù)據(jù)類型的列,當(dāng)中的include顧名思義就是篩選出指定數(shù)據(jù)類型的列,例如下面我們挑選出是bool數(shù)據(jù)類型的數(shù)據(jù)來

          a = pd.DataFrame({    "a": [1, 2, 3, 4, 5],    "b": [True, False, False, True, True],    "c": ["John", "Tom", "Mike", "Jim", "Dylan"]})
          a.select_dtypes(include='bool')

          而exclude就是排除掉指定數(shù)據(jù)類型的數(shù)據(jù),將其他類型的數(shù)據(jù)篩選出來

          a.select_dtypes(exclude='bool')



          7
          mask

          pandas當(dāng)中的mask()方法主要是對按照指定的條件,對數(shù)據(jù)集當(dāng)中的數(shù)據(jù)進(jìn)行替換,例如下面數(shù)據(jù)集當(dāng)中對于大于0的數(shù)據(jù)替換成0

          df = pd.DataFrame({"A":[12, 4, 5, 44, 1],                    "B":[5, 2, 54, 3, 2],                    "C":[20, 16, 7, 3, 8],                    "D":[14, 3, 17, 2, 6]}) 

          # 將大于10的數(shù)字替換成0df.mask(df > 10, 0)



          8
          nlargest和nsmallest

          nlargest和nsmallest的作用在于可以讓我們看到根據(jù)特定的列排序的最大或者是最小的若干列,例如

          data = {'name': ['John', 'Mike', 'Tom', 'Greg', 'Jim'],        'income': [2500, 4500, 5000, 3000, 2000],        'age': [20, 24, 25, 23, 28]}df = pd.DataFrame(data)

          我們按照income這一列將數(shù)據(jù)排序,并且顯示出最大的前3行

          df.nlargest(3, 'income')



          9
          idxmax和idxmin

          主要用來返回最大值或者是最小值的位置,也就是索引值

          data = {'income': [8000, 9000, 10000, 10000, 20000],        'age': [2024252328]}df = pd.DataFrame(data, index = ['John''Mike''Tom''Greg''Jim'])

          我們找出income最高和最低的那個(gè)人是誰
          df['income'].idxmax()>>>> Jim
          df['income'].idxmin()>>> John


          10
          clip

          在給出指定范圍的前提下,對于數(shù)據(jù)集當(dāng)中超出該范圍的值進(jìn)行更改,例如我們將范圍限定在-4到6之間,超過6的數(shù)字會被設(shè)置為6,超過-4的數(shù)字會被設(shè)置為-4

          data = {'col_0': [9, -3, 0, -1, 5],        'col_1': [-2, -7, 6, 8, -5]}df = pd.DataFrame(data)

          df.clip(-4, 6)



          11
          at_time和between_time

          pandas當(dāng)中at_time()方法和between_time()方法主要是用來處理時(shí)間序列的數(shù)據(jù),根據(jù)給出的時(shí)間點(diǎn)或者時(shí)間范圍來篩選出數(shù)據(jù)

          index = pd.date_range("2021-08-01", periods=100, freq="H")data = pd.DataFrame({"col": list(range(100))}, index=index)data.head()

          我們篩選出那些下午2點(diǎn)的數(shù)據(jù)
          data.at_time("14:00")
          當(dāng)然我們可以使用between_time這個(gè)方法來挑選出某個(gè)時(shí)間范圍內(nèi)的數(shù)
          data.between_time("11:00", "12:00")

          ?


          12
          at和iat

          我們一般用pandas當(dāng)中的loc和iloc比較多,用來篩選出我們想要的數(shù)據(jù),而at和iat也能夠?qū)崿F(xiàn)loc和iloc的功能,而且更加的快捷
          data = {'name': ['John', 'Mike', 'Tom', 'Greg', 'Jim'],        'income': [8000, 9000, 10000, 10000, 20000],        'age': [20, 24, 25, 23, 28]}df = pd.DataFrame(data)

          # [index, label]df.at[1, "income"]>>> 9000
          [index, index]df.iat[2, 3]>>> 1000


          13
          pandas styler

          pandas還能夠?qū)?shù)據(jù)集當(dāng)中的數(shù)據(jù)進(jìn)行上色,我們可以通過該方法將某些我們覺得重要的數(shù)據(jù)給標(biāo)注出來,例如我們對數(shù)據(jù)集中每列的最大值最小值標(biāo)注出來

          df = pd.DataFrame(np.random.randn(5, 5), columns=list('ABCDE'))
          # 我們標(biāo)注出最大、最小的值df.style.highlight_max(color = "yellow")

          具體的可以去小編另外寫的一篇文章中去看個(gè)究竟:厲害了,Pandas表格還能五彩斑斕的展示數(shù)據(jù),究竟是怎么做到的呢?



          14
          hasnans

          假如數(shù)據(jù)集當(dāng)中存在空值,可以用hasnans方法來檢查,要是有空值,則返回True,反之則返回False
          s = pd.Series([2, 4, 6, "abcde", np.nan])s.hasnans>>>> True
          往期精彩回顧




          本站qq群851320808,加入微信群請掃碼:
          瀏覽 60
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  婷婷av网站 | 大香蕉免费网 | 波多野结衣系列在线天堂 | 日韩探花 | 大香焦久久久成人视频 |