最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分享20個(gè)Pandas短小精悍的數(shù)據(jù)操作

 更新時(shí)間:2022年04月25日 09:21:15   作者:東哥起飛  
本文為大家整理了一個(gè)pandas數(shù)據(jù)操作的大集合,共20個(gè)功能,個(gè)個(gè)短小精悍,一次讓你愛個(gè)夠,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧

1. ExcelWriter

很多時(shí)候dataframe里面有中文,如果直接輸出到csv里,中文將顯示亂碼。而Excel就不一樣了,ExcelWriterpandas的一個(gè)類,可以使dataframe數(shù)據(jù)框直接輸出到excel文件,并可以指定sheets名稱。

df1?=?pd.DataFrame([["AAA",?"BBB"]],?columns=["Spam",?"Egg"])
df2?=?pd.DataFrame([["ABC",?"XYZ"]],?columns=["Foo",?"Bar"])
with?ExcelWriter("path_to_file.xlsx")?as?writer:
????df1.to_excel(writer,?sheet_name="Sheet1")
????df2.to_excel(writer,?sheet_name="Sheet2")

如果有時(shí)間變量,輸出時(shí)還可以date_format指定時(shí)間的格式。另外,它還可以通過mode設(shè)置輸出到已有的excel文件中,非常靈活。

with?ExcelWriter("path_to_file.xlsx",?mode="a",?engine="openpyxl")?as?writer:
????df.to_excel(writer,?sheet_name="Sheet3")

2. pipe

pipe管道函數(shù)可以將多個(gè)自定義函數(shù)裝進(jìn)同一個(gè)操作里,讓整個(gè)代碼更簡(jiǎn)潔,更緊湊。

比如,我們?cè)谧鰯?shù)據(jù)清洗的時(shí)候,往往代碼會(huì)很亂,有去重、去異常值、編碼轉(zhuǎn)換等等。如果使用pipe,將是這樣子的。

diamonds?=?sns.load_dataset("diamonds")

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

兩個(gè)字,干凈!

3. factorize

factorize這個(gè)函數(shù)類似sklearnLabelEncoder,可以實(shí)現(xiàn)同樣的功能。

#?Mind?the?[0]?at?the?end
diamonds["cut_enc"]?=?pd.factorize(diamonds["cut"])[0]

>>>?diamonds["cut_enc"].sample(5)

52103????2
39813????0
31843????0
10675????0
6634?????0
Name:?cut_enc,?dtype:?int64

區(qū)別是,factorize返回一個(gè)二值元組:編碼的列和唯一分類值的列表。

codes,?unique?=?pd.factorize(diamonds["cut"],?sort=True)

>>>?codes[:10]
array([0,?1,?3,?1,?3,?2,?2,?2,?4,?2],?dtype=int64)

>>>?unique
['Ideal',?'Premium',?'Very?Good',?'Good',?'Fair']

4. explode

explode爆炸功能,可以將array-like的值比如列表,炸開轉(zhuǎn)換成多行。

data?=?pd.Series([1,?6,?7,?[46,?56,?49],?45,?[15,?10,?12]]).to_frame("dirty")

data.explode("dirty",?ignore_index=True)

圖片

5. squeeze

很多時(shí)候,我們用.loc篩選想返回一個(gè)值,但返回的卻是個(gè)series。其實(shí),只要使用.squeeze()即可完美解決。比如:

#?沒使用squeeze
subset?=?diamonds.loc[diamonds.index?<?1,?["price"]]
#?使用squeeze
subset.squeeze("columns")

圖片

可以看到,壓縮完結(jié)果已經(jīng)是int64的格式了,而不再是series。

6. between

dataframe的篩選方法有很多,常見的loc、isin等等,但其實(shí)還有個(gè)及其簡(jiǎn)潔的方法,專門篩選數(shù)值范圍的,就是between,用法很簡(jiǎn)單。

diamonds[diamonds["price"]\
??????.between(3500,?3700,?inclusive="neither")].sample(5)

圖片

7. T

這是所有的dataframe都有的一個(gè)簡(jiǎn)單屬性,實(shí)現(xiàn)轉(zhuǎn)置功能。它在顯示describe時(shí)可以很好的搭配。

boston.describe().T.head(10)

圖片

8. pandas styler

pandas也可以像excel一樣,設(shè)置表格的可視化條件格式,而且只需要一行代碼即可(可能需要一丟丟的前端HTML和CSS基礎(chǔ)知識(shí))。

>>>?diabetes.describe().T.drop("count",?axis=1)\
?????????????????.style.highlight_max(color="darkred")

圖片

當(dāng)然了,條件格式有非常多種。

9. Pandas options

pandas里提供了很多宏設(shè)置選項(xiàng),被分為下面5大類。

dir(pd.options)
['compute',?'display',?'io',?'mode',?'plotting']

一般情況下使用display會(huì)多一點(diǎn),比如最大、最小顯示行數(shù),畫圖方法,顯示精度等等。

pd.options.display.max_columns?=?None
pd.options.display.precision?=?5

10. convert_dtypes

經(jīng)常使用pandas的都知道,pandas對(duì)于經(jīng)常會(huì)將變量類型直接變成object,導(dǎo)致后續(xù)無法正常操作。這種情況可以用convert_dtypes進(jìn)行批量的轉(zhuǎn)換,它會(huì)自動(dòng)推斷數(shù)據(jù)原來的類型,并實(shí)現(xiàn)轉(zhuǎn)換。

sample?=?pd.read_csv(
????"data/station_day.csv",
????usecols=["StationId",?"CO",?"O3",?"AQI_Bucket"],
)

>>>?sample.dtypes

StationId??????object
CO????????????float64
O3????????????float64
AQI_Bucket?????object
dtype:?object

>>>?sample.convert_dtypes().dtypes

StationId??????string
CO????????????float64
O3????????????float64
AQI_Bucket?????string
dtype:?object

11. select_dtypes

在需要篩選變量類型的時(shí)候,可以直接用selec _dtypes,通過includeexclude篩選和排除變量的類型。

#?選擇數(shù)值型的變量
diamonds.select_dtypes(include=np.number).head()
#?排除數(shù)值型的變量
diamonds.select_dtypes(exclude=np.number).head()

12. mask

mask可以在自定義條件下快速替換單元值,在很多三方庫的源碼中經(jīng)常見到。比如下面我們想讓age為50-60以外的單元為空,只需要在conohter寫好自定義的條件即可。

ages?=?pd.Series([55,?52,?50,?66,?57,?59,?49,?60]).to_frame("ages")

ages.mask(cond=~ages["ages"].between(50,?60),?other=np.nan)

圖片

13. 列軸的min、max

雖然大家都知道minmax的功能,但應(yīng)用在列上的應(yīng)該不多見。這對(duì)函數(shù)其實(shí)還可以這么用:

index?=?["Diamonds",?"Titanic",?"Iris",?"Heart?Disease",?"Loan?Default"]
libraries?=?["XGBoost",?"CatBoost",?"LightGBM",?"Sklearn?GB"]

df?=?pd.DataFrame(
????{lib:?np.random.uniform(90,?100,?5)?for?lib?in?libraries},?index=index
)

>>>?df

圖片

>>>?df.max(axis=1)

Diamonds?????????99.52684
Titanic??????????99.63650
Iris?????????????99.10989
Heart?Disease????99.31627
Loan?Default?????97.96728
dtype:?float64

14. nlargest、nsmallest

有時(shí)我們不僅想要列的最小值/最大值,還想看變量的前 N 個(gè)或 ~(top N) 個(gè)值。這時(shí)nlargestnsmallest就派上用場(chǎng)了。

diamonds.nlargest(5,?"price")

圖片

15. idmax、idxmin

我們用列軸使用maxmin時(shí),pandas 會(huì)返回最大/最小的值。但我現(xiàn)在不需要具體的值了,我需要這個(gè)最大值的位置。因?yàn)楹芏鄷r(shí)候要鎖定位置之后對(duì)整個(gè)行進(jìn)行操作,比如單提出來或者刪除等,所以這種需求還是很常見的。

使用idxmaxidxmin即可解決。

>>>?diamonds.price.idxmax()
27749

>>>?diamonds.carat.idxmin()
14

16. value_counts

在數(shù)據(jù)探索的時(shí)候,value_counts是使用很頻繁的函數(shù),它默認(rèn)是不統(tǒng)計(jì)空值的,但空值往往也是我們很關(guān)心的。如果想統(tǒng)計(jì)空值,可以將參數(shù)dropna設(shè)置為False

ames_housing?=?pd.read_csv("data/train.csv")

>>>?ames_housing["FireplaceQu"].value_counts(dropna=False,?normalize=True)

NaN????0.47260
Gd?????0.26027
TA?????0.21438
Fa?????0.02260
Ex?????0.01644
Po?????0.01370
Name:?FireplaceQu,?dtype:?float64

17. clip

異常值檢測(cè)是數(shù)據(jù)分析中常見的操作。使用clip函數(shù)可以很容易地找到變量范圍之外的異常值,并替換它們。

>>>?age.clip(50,?60)

圖片

18. at_time、between_time

在有時(shí)間粒度比較細(xì)的時(shí)候,這兩個(gè)函數(shù)超級(jí)有用。因?yàn)樗鼈兛梢赃M(jìn)行更細(xì)化的操作,比如篩選某個(gè)時(shí)點(diǎn),或者某個(gè)范圍時(shí)間等,可以細(xì)化到小時(shí)分鐘。

>>>?data.at_time("15:00")

圖片

from?datetime?import?datetime

>>>?data.between_time("09:45",?"12:00")

圖片

19. hasnans

pandas提供了一種快速方法hasnans來檢查給定series是否包含空值。

series?=?pd.Series([2,?4,?6,?"sadf",?np.nan])

>>>?series.hasnans
True

該方法只適用于series的結(jié)構(gòu)。

20. GroupBy.nth

此功能僅適用于GroupBy對(duì)象。具體來說,分組后,nth返回每組的第n行:

>>>?diamonds.groupby("cut").nth(5)

圖片

到此這篇關(guān)于分享20個(gè)Pandas短小精悍的數(shù)據(jù)操作的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的標(biāo)簽編碼和獨(dú)熱編碼示例詳解

    Python中的標(biāo)簽編碼和獨(dú)熱編碼示例詳解

    標(biāo)簽編碼是一種用于將分類列轉(zhuǎn)換為數(shù)值列的技術(shù),以便它們可以通過僅采用數(shù)值數(shù)據(jù)的機(jī)器學(xué)習(xí)模型進(jìn)行擬合,這篇文章主要介紹了Python中的標(biāo)簽編碼和獨(dú)熱編碼,需要的朋友可以參考下
    2023-07-07
  • Python連接DB2數(shù)據(jù)庫

    Python連接DB2數(shù)據(jù)庫

    DB2 是美國(guó)IBM公司開發(fā)的一套關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它主要的運(yùn)行環(huán)境為UNIX(包括IBM自家的AIX)、Linux、IBM i(舊稱OS/400)、z/OS,以及Windows服務(wù)器版本。今天我們來探討下如何使用Python連接DB2數(shù)據(jù)庫
    2016-08-08
  • Python run()函數(shù)和start()函數(shù)的比較和差別介紹

    Python run()函數(shù)和start()函數(shù)的比較和差別介紹

    這篇文章主要介紹了Python run()函數(shù)和start()函數(shù)的比較和差別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python給指定csv表格中的聯(lián)系人群發(fā)郵件(帶附件的郵件)

    python給指定csv表格中的聯(lián)系人群發(fā)郵件(帶附件的郵件)

    這篇文章主要介紹了python給指定csv表格中的聯(lián)系人群發(fā)郵件,本文通過代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python HTMLTestRunner可視化報(bào)告實(shí)現(xiàn)過程解析

    Python HTMLTestRunner可視化報(bào)告實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python HTMLTestRunner可視化報(bào)告實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python?Flask?JinJa2?語法使用示例詳解

    Python?Flask?JinJa2?語法使用示例詳解

    這篇文章主要為大家介紹了Python?Flask?JinJa2?語法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Windows下Python使用Pandas模塊操作Excel文件的教程

    Windows下Python使用Pandas模塊操作Excel文件的教程

    Pandas是一個(gè)強(qiáng)大的Python數(shù)據(jù)分析模塊,這里我們先使用ANACONDA來幫助獲取Pandas所以來的一些環(huán)境,然后來初步學(xué)習(xí)Windows下Python使用Pandas模塊操作Excel文件的教程
    2016-05-05
  • torch.optim優(yōu)化算法理解之optim.Adam()解讀

    torch.optim優(yōu)化算法理解之optim.Adam()解讀

    這篇文章主要介紹了torch.optim優(yōu)化算法理解之optim.Adam()解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 原生python實(shí)現(xiàn)knn分類算法

    原生python實(shí)現(xiàn)knn分類算法

    這篇文章主要介紹了原生python實(shí)現(xiàn)knn分類算法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python matplotlib繪圖實(shí)現(xiàn)刪除重復(fù)冗余圖例的操作

    python matplotlib繪圖實(shí)現(xiàn)刪除重復(fù)冗余圖例的操作

    這篇文章主要介紹了python matplotlib繪圖實(shí)現(xiàn)刪除重復(fù)冗余圖例的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評(píng)論

苍梧县| 保靖县| 重庆市| 敦化市| 互助| 石景山区| 五大连池市| 崇礼县| 青铜峡市| 北流市| 丹阳市| 贵定县| 远安县| 浦县| 平潭县| 布尔津县| 通江县| 葵青区| 孟州市| 镇宁| 张家港市| 库伦旗| 兰西县| 涿鹿县| 怀集县| 剑川县| 同德县| 墨江| 上高县| 青阳县| 磐石市| 漯河市| 镶黄旗| 昌都县| 青冈县| 蒲城县| 日喀则市| 万源市| 宁陕县| 湖北省| 高台县|