成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

4000字詳細(xì)說明,推薦20個(gè)好用到爆的Pandas函數(shù)方法

2501207950 / 2964人閱讀

摘要:往期回顧教程實(shí)現(xiàn)社交網(wǎng)絡(luò)可視化,看看你的人脈影響力如何轉(zhuǎn)載字概括精髓,必知必會(huì)例注意字歸納總結(jié)帶你做數(shù)據(jù)預(yù)處理新聞字張圖,一鍵生成炫酷的動(dòng)態(tài)交互式圖表分享收藏點(diǎn)贊在看

今天分享幾個(gè)不為人知的pandas函數(shù),大家可能平時(shí)看到的不多,但是使用起來倒是非常的方便,也能夠幫助我們數(shù)據(jù)分析人員大幅度地提高工作效率,同時(shí)也希望大家看完之后能夠有所收獲

  • items()方法

  • iterrows()方法

  • insert()方法

  • assign()方法

  • eval()方法

  • pop()方法

  • truncate()方法

  • count()方法

  • add_prefix()方法/add_suffix()方法

  • clip()方法

  • filter()方法

  • first()方法

  • isin()方法

  • df.plot.area()方法

  • df.plot.bar()方法

  • df.plot.box()方法

  • df.plot.pie()方法

items()方法

pandas當(dāng)中的items()方法可以用來遍歷數(shù)據(jù)集當(dāng)中的每一列,同時(shí)返回列名以及每一列當(dāng)中的內(nèi)容,通過以元組的形式,示例如下

df?=?pd.DataFrame({"species":?["bear",?"bear",?"marsupial"],??????????????????"population":?[1864,?22000,?80000]},??????????????????index=["panda",?"polar",?"koala"])df

output

species??populationpanda???????bear????????1864polar???????bear???????22000koala??marsupial???????80000

然后我們使用items()方法

for?label,?content?in?df.items():????print(f"label:?{label}")????print(f"content:?{content}",?sep="/n")????print("="?*?50)

output

label:?speciescontent:?panda?????????bearpolar?????????bearkoala????marsupialName:?species,?dtype:?object==================================================label:?populationcontent:?panda?????1864polar????22000koala????80000Name:?population,?dtype:?int64==================================================

相繼的打印出了‘species’和‘population’這兩列的列名和相應(yīng)的內(nèi)容

iterrows()方法

而對(duì)于iterrows()方法而言,其功能則是遍歷數(shù)據(jù)集當(dāng)中的每一行,返回每一行的索引以及帶有列名的每一行的內(nèi)容,示例如下

for?label,?content?in?df.iterrows():????print(f"label:?{label}")????print(f"content:?{content}",?sep="/n")????print("="?*?50)

output

label:?pandacontent:?species???????bearpopulation????1864Name:?panda,?dtype:?object==================================================label:?polarcontent:?species????????bearpopulation????22000Name:?polar,?dtype:?object==================================================label:?koalacontent:?species???????marsupialpopulation????????80000Name:?koala,?dtype:?object==================================================

insert()方法

insert()方法主要是用于在數(shù)據(jù)集當(dāng)中的特定位置處插入數(shù)據(jù),示例如下

df.insert(1,?"size",?[2000,?3000,?4000])

output

species??size??populationpanda???????bear??2000????????1864polar???????bear??3000???????22000koala??marsupial??4000???????80000

可見在DataFrame數(shù)據(jù)集當(dāng)中,列的索引也是從0開始的

assign()方法

assign()方法可以用來在數(shù)據(jù)集當(dāng)中添加新的列,示例如下

df.assign(size_1=lambda?x:?x.population?*?9?/?5?+?32)

output

species??population????size_1panda???????bear????????1864????3387.2polar???????bear???????22000???39632.0koala??marsupial???????80000??144032.0

從上面的例子中可以看出,我們通過一個(gè)lambda匿名函數(shù),在數(shù)據(jù)集當(dāng)中添加一個(gè)新的列,命名為‘size_1’,當(dāng)然我們也可以通過assign()方法來創(chuàng)建不止一個(gè)列

df.assign(size_1?=?lambda?x:?x.population?*?9?/?5?+?32,??????????size_2?=?lambda?x:?x.population?*?8?/?5?+?10)

output

species??population????size_1????size_2panda???????bear????????1864????3387.2????2992.4polar???????bear???????22000???39632.0???35210.0koala??marsupial???????80000??144032.0??128010.0

eval()方法

eval()方法主要是用來執(zhí)行用字符串來表示的運(yùn)算過程的,例如

df.eval("size_3?=?size_1?+?size_2")

output

species??population????size_1????size_2????size_3panda???????bear????????1864????3387.2????2992.4????6379.6polar???????bear???????22000???39632.0???35210.0???74842.0koala??marsupial???????80000??144032.0??128010.0??272042.0

當(dāng)然我們也可以同時(shí)對(duì)執(zhí)行多個(gè)運(yùn)算過程

df?=?df.eval("""size_3?=?size_1?+?size_2size_4?=?size_1?-?size_2""")

output

species??population????size_1????size_2????size_3???size_4panda???????bear????????1864????3387.2????2992.4????6379.6????394.8polar???????bear???????22000???39632.0???35210.0???74842.0???4422.0koala??marsupial???????80000??144032.0??128010.0??272042.0??16022.0

pop()方法

pop()方法主要是用來刪除掉數(shù)據(jù)集中特定的某一列數(shù)據(jù)

df.pop("size_3")

output

panda??????6379.6polar?????74842.0koala????272042.0Name:?size_3,?dtype:?float64

而原先的數(shù)據(jù)集當(dāng)中就沒有這個(gè)‘size_3’這一例的數(shù)據(jù)了

truncate()方法

truncate()方法主要是根據(jù)行索引來篩選指定行的數(shù)據(jù)的,示例如下

df?=?pd.DataFrame({"A":?["a",?"b",?"c",?"d",?"e"],???????????????????"B":?["f",?"g",?"h",?"i",?"j"],???????????????????"C":?["k",?"l",?"m",?"n",?"o"]},??????????????????index=[1,?2,?3,?4,?5])

output

A??B??C1??a??f??k2??b??g??l3??c??h??m4??d??i??n5??e??j??o

我們使用truncate()方法來做一下嘗試

df.truncate(before=2,?after=4)

output

A??B??C2??b??g??l3??c??h??m4??d??i??n

我們看到參數(shù)beforeafter存在于truncate()方法中,目的就是把行索引2之前和行索引4之后的數(shù)據(jù)排除在外,篩選出剩余的數(shù)據(jù)

count()方法

count()方法主要是用來計(jì)算某一列當(dāng)中非空值的個(gè)數(shù),示例如下

df?=?pd.DataFrame({"Name":?["John",?"Myla",?"Lewis",?"John",?"John"],???????????????????"Age":?[24.,?np.nan,?25,?33,?26],???????????????????"Single":?[True,?True,?np.nan,?True,?False]})

output

Name???Age?Single0???John??24.0???True1???Myla???NaN???True2??Lewis??25.0????NaN3???John??33.0???True4???John??26.0??False

我們使用count()方法來計(jì)算一下數(shù)據(jù)集當(dāng)中非空值的個(gè)數(shù)

df.count()

output

Name??????5Age???????4Single????4dtype:?int64

add_prefix()方法/add_suffix()方法

add_prefix()方法和add_suffix()方法分別會(huì)給列名以及行索引添加后綴和前綴,對(duì)于Series()數(shù)據(jù)集而言,前綴與后綴是添加在行索引處,而對(duì)于DataFrame()數(shù)據(jù)集而言,前綴與后綴是添加在列索引處,示例如下

s?=?pd.Series([1,?2,?3,?4])

output

0??? 11????22????33????4dtype:?int64

我們使用add_prefix()方法與add_suffix()方法在Series()數(shù)據(jù)集上

s.add_prefix("row_")

output

row_0????1row_1????2row_2????3row_3????4dtype:?int64

又例如

s.add_suffix("_row")

output

0_row????11_row????22_row????33_row????4dtype:?int64

而對(duì)于DataFrame()形式數(shù)據(jù)集而言,add_prefix()方法以及add_suffix()方法是將前綴與后綴添加在列索引處的

df?=?pd.DataFrame({"A":?[1,?2,?3,?4],?"B":?[3,?4,?5,?6]})

output

A??B0??1??31??2??42??3??53??4??6

示例如下

df.add_prefix("column_")

output

column_A??column_B0?????????1?????????31?????????2?????????42?????????3?????????53?????????4?????????6

又例如

df.add_suffix("_column")

output

A_column??B_column0?????????1?????????31?????????2?????????42?????????3?????????53?????????4?????????6

clip()方法

clip()方法主要是通過設(shè)置閾值來改變數(shù)據(jù)集當(dāng)中的數(shù)值,當(dāng)數(shù)值超過閾值的時(shí)候,就做出相應(yīng)的調(diào)整

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

output

df.clip(lower?=?-4,?upper?=?4)

output

col_0??col_10??????4?????-21?????-3?????-42??????0??????43?????-1??????44??????4?????-4

我們看到參數(shù)lowerupper分別代表閾值的上限與下限,數(shù)據(jù)集當(dāng)中超過上限與下限的值會(huì)被替代。

filter()方法

pandas當(dāng)中的filter()方法是用來篩選出特定范圍的數(shù)據(jù)的,示例如下

df?=?pd.DataFrame(np.array(([1,?2,?3],?[4,?5,?6],?[7,?8,?9],?[10,?11,?12])),??????????????????index=["A",?"B",?"C",?"D"],??????????????????columns=["one",?"two",?"three"])

output

one??two??threeA????1????2??????3B????4????5??????6C????7????8??????9D???10???11?????12

我們使用filter()方法來篩選數(shù)據(jù)

df.filter(items=["one",?"three"])

output

one??threeA????1??????3B????4??????6C????7??????9D???10?????12

我們還可以使用正則表達(dá)式來篩選數(shù)據(jù)

df.filter(regex="e$",?axis=1)

output

one??threeA????1??????3B????4??????6C????7??????9D???10?????12

當(dāng)然通過參數(shù)axis來調(diào)整篩選行方向或者是列方向的數(shù)據(jù)

df.filter(like="B",?axis=0)

output

one??two??threeB????4????5??????6

first()方法

當(dāng)數(shù)據(jù)集當(dāng)中的行索引是日期的時(shí)候,可以通過該方法來篩選前面幾行的數(shù)據(jù)

index_1?=?pd.date_range("2021-11-11",?periods=5,?freq="2D")ts?=?pd.DataFrame({"A":?[1,?2,?3,?4,?5]},?index=index_1)ts

output

A2021-11-11??12021-11-13??22021-11-15??32021-11-17??42021-11-19??5

我們使用first()方法來進(jìn)行一些操作,例如篩選出前面3天的數(shù)據(jù)

ts.first("3D")

output

A2021-11-11??12021-11-13??2

isin()方法

isin()方法主要是用來確認(rèn)數(shù)據(jù)集當(dāng)中的數(shù)值是否被包含在給定的列表當(dāng)中

df?=?pd.DataFrame(np.array(([1,?2,?3],?[4,?5,?6],?[7,?8,?9],?[10,?11,?12])),??????????????????index=["A",?"B",?"C",?"D"],??????????????????columns=["one",?"two",?"three"])df.isin([3,?5,?12])

output

one????two??threeA??False??False???TrueB??False???True??FalseC??False??False??FalseD??False??False???True

若是數(shù)值被包含在列表當(dāng)中了,也就是3、5、12當(dāng)中,返回的是True,否則就返回False

df.plot.area()方法

下面我們來講一下如何在Pandas當(dāng)中通過一行代碼來繪制圖表,將所有的列都通過面積圖的方式來繪制

df?=?pd.DataFrame({????"sales":?[30,?20,?38,?95,?106,?65],????"signups":?[7,?9,?6,?12,?18,?13],????"visits":?[20,?42,?28,?62,?81,?50],},?index=pd.date_range(start="2021/01/01",?end="2021/07/01",?freq="M"))ax?=?df.plot.area(figsize?=?(10,?5))

output

df.plot.bar()方法

下面我們看一下如何通過一行代碼來繪制柱狀圖

df?=?pd.DataFrame({"label":["A",?"B",?"C",?"D"],?"values":[10,?30,?50,?70]})ax?=?df.plot.bar(x="label",?y="values",?rot=20)

output

當(dāng)然我們也可以根據(jù)不同的類別來繪制柱狀圖

age?=?[0.1,?17.5,?40,?48,?52,?69,?88]weight?=?[2,?8,?70,?1.5,?25,?12,?28]index?=?["A",?"B",?"C",?"D",?"E",?"F",?"G"]df?=?pd.DataFrame({"age":?age,?"weight":?weight},?index=index)ax?=?df.plot.bar(rot=0)

output

當(dāng)然我們也可以橫向來繪制圖表

ax?=?df.plot.barh(rot=0)

output

df.plot.box()方法

我們來看一下箱型圖的具體的繪制,通過pandas一行代碼來實(shí)現(xiàn)

data?=?np.random.randn(25,?3)df?=?pd.DataFrame(data,?columns=list("ABC"))ax?=?df.plot.box()

output

df.plot.pie()方法

接下來是餅圖的繪制

df?=?pd.DataFrame({"mass":?[1.33,?4.87?,?5.97],???????????????????"radius":?[2439.7,?6051.8,?6378.1]},??????????????????index=["Mercury",?"Venus",?"Earth"])plot?=?df.plot.pie(y="mass",?figsize=(8,?8))

output

除此之外,還有折線圖、直方圖、散點(diǎn)圖等等,步驟與方式都與上述的技巧有異曲同工之妙,大家感興趣的可以自己另外去嘗試。

教程

Python實(shí)現(xiàn)社交網(wǎng)絡(luò)可視化,看看你的人脈影響力如何

轉(zhuǎn)載

8000字概括精髓,pandas必知必會(huì)50例

注意

4000字歸納總結(jié) Pandas+Sklearn 帶你做數(shù)據(jù)預(yù)處理

新聞

7000字 23張圖,Pandas一鍵生成炫酷的動(dòng)態(tài)交互式圖表

分享收藏點(diǎn)贊在看

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123739.html

相關(guān)文章

  • 推薦一款阿里開源的 Java 診斷工具,好用到爆

    摘要:是什么鬼是一款阿里巴巴開源的線上診斷工具,功能非常強(qiáng)大,可以解決很多線上不方便解決的問題。診斷使用的是命令行交互模式,支持,操作系統(tǒng),命令還支持使用鍵對(duì)各種信息的自動(dòng)補(bǔ)全,診斷起來非常利索。顯示當(dāng)前系統(tǒng)的實(shí)時(shí)數(shù)據(jù)面板,按即可退出。 Arthas是什么鬼? Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強(qiáng)大,可以解決很多線上不方便解決的問題。 Arthas診斷使用的是...

    Rango 評(píng)論0 收藏0
  • Python數(shù)據(jù)分析入門之pandas總結(jié)基礎(chǔ)(二)

    摘要:一大熊貓世界來去自如的老生常談,從基礎(chǔ)來看,我們?nèi)匀魂P(guān)心對(duì)于與外部數(shù)據(jù)是如何交互的。函數(shù)受限制問題唯一重要的參數(shù),標(biāo)志著一個(gè)的第個(gè)頁將會(huì)被取出。數(shù)據(jù)分析入門之總結(jié)基礎(chǔ)一歡迎來翔的博客查看完成版。 一.大熊貓世界來去自如:Pandas的I/O 老生常談,從基礎(chǔ)來看,我們?nèi)匀魂P(guān)心pandas對(duì)于與外部數(shù)據(jù)是如何交互的。 1.1 結(jié)構(gòu)化數(shù)據(jù)輸入輸出 read_csv與to_csv 是?對(duì)...

    verano 評(píng)論0 收藏0
  • 騰訊大廈與我有個(gè)約定(面試精華帖)

    摘要:第二天相同的時(shí)間相同的地方,我卻走錯(cuò)了地方,原來成都騰訊大廈有兩棟。 在一個(gè)雨蒙蒙的清晨,百般無聊的閑逛中,突然回憶起了我這一生中的第一次面試經(jīng)歷。雖然結(jié)果是以失敗而告終,但此時(shí)此刻的回憶,帶給我的并不是失敗而是成長。 作為一名實(shí)習(xí)生,我深刻的感受到在校園與社會(huì)夾縫中生活的不易。也十分的幸運(yùn),我還有足夠的青春與活力驅(qū)動(dòng)著我去學(xué)習(xí),讓我的未來不再遙不可及;讓我能在社會(huì)的這份土壤里扎根成長...

    monw3c 評(píng)論0 收藏0
  • 騰訊大廈與我有個(gè)約定(面試精華帖)

    摘要:第二天相同的時(shí)間相同的地方,我卻走錯(cuò)了地方,原來成都騰訊大廈有兩棟。 在一個(gè)雨蒙蒙的清晨,百般無聊的閑逛中,突然回憶起了我這一生中的第一次面試經(jīng)歷。雖然結(jié)果是以失敗而告終,但此時(shí)此刻的回憶,帶給我的并不是失敗而是成長。 作為一名實(shí)習(xí)生,我深刻的感受到在校園與社會(huì)夾縫中生活的不易。也十分的幸運(yùn),我還有足夠的青春與活力驅(qū)動(dòng)著我去學(xué)習(xí),讓我的未來不再遙不可及;讓我能在社會(huì)的這份土壤里扎根成長...

    yimo 評(píng)論0 收藏0
  • 騰訊大廈與我有個(gè)約定(面試精華帖)

    摘要:第二天相同的時(shí)間相同的地方,我卻走錯(cuò)了地方,原來成都騰訊大廈有兩棟。 在一個(gè)雨蒙蒙的清晨,百般無聊的閑逛中,突然回憶起了我這一生中的第一次面試經(jīng)歷。雖然結(jié)果是以失敗而告終,但此時(shí)此刻的回憶,帶給我的并不是失敗而是成長。 作為一名實(shí)習(xí)生,我深刻的感受到在校園與社會(huì)夾縫中生活的不易。也十分的幸運(yùn),我還有足夠的青春與活力驅(qū)動(dòng)著我去學(xué)習(xí),讓我的未來不再遙不可及;讓我能在社會(huì)的這份土壤里扎根成長...

    時(shí)飛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<