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

資訊專欄INFORMATION COLUMN

??數(shù)據(jù)科學(xué)-Pandas、Numpy、Matplotlib秘籍之精煉總結(jié)

Zhuxy / 1778人閱讀

前言:


先感受一下數(shù)據(jù)科學(xué)的魅力,上圖是在Smart Dubai 2017 GITEX科技周展臺上推出Smart Decision-Making Platform(智能決策平臺),于10月8日至12日在迪拜世界貿(mào)易中心舉行。游客可以通過一個“沉浸式的空間”將數(shù)據(jù)可視化,讓他們了解迪拜的未來。讓參觀者可以在現(xiàn)場查閱觀看全市數(shù)據(jù),這意味著迪拜將成為了世界上第一個與公眾分享實時實時數(shù)據(jù)的城市,同時還可以預(yù)測未來十年的發(fā)展。

最近,很多小伙伴在后臺私信我,咨詢有沒有數(shù)據(jù)處理及可視化的相關(guān)系統(tǒng)教程?我的回復(fù)是,這些庫只是工具,無需花費(fèi)很長的時間牢記這些命令的使用,學(xué)習(xí)一遍之后整理好筆記即可,遺忘之時再查找這些筆記使用即可

本文是博主本人結(jié)合自己的使用經(jīng)驗以及各大博主的分享精煉匯總而成,耗時進(jìn)半個月的時候,翻閱博客和參考資料無數(shù),最后精選了最實用、常用、好用的“Pandas、Numpy、Matplotlib”三大神兵利器的方法使用攻略。


文章目錄

Pandas精煉總結(jié)

1.屬性值中存在缺失,將變量轉(zhuǎn)換成Pandas可操作類型數(shù)據(jù)的方法

當(dāng)某個屬性數(shù)據(jù)中存在空值(NaN),則該屬性數(shù)據(jù)類型為object,使用convert_dtypes()將Series轉(zhuǎn)換為支持的dtypes。

1.convert_dtypes()處理DataFrame類型數(shù)據(jù),示例如下:

# dataframe 變量類型自動轉(zhuǎn)換df = pd.DataFrame(    {        "a": pd.Series([1, 2, 3], dtype=np.dtype("int32")),        "b": pd.Series(["x", "y", "z"], dtype=np.dtype("O")),        "c": pd.Series([True, False, np.nan], dtype=np.dtype("O")),        "d": pd.Series(["h", "i", np.nan], dtype=np.dtype("O")),        "e": pd.Series([10, np.nan, 20], dtype=np.dtype("float")),        "f": pd.Series([np.nan, 100.5, 200], dtype=np.dtype("float")),    })print(df.dtypes)dfn = df.convert_dtypes()print(dfn.dtypes)

2.convert_dtypes()處理Series變量類型數(shù)據(jù),示例如下:

# Series 變量類型自動轉(zhuǎn)換s = pd.Series(["a", "b", np.nan])print(s.dtypes)sn = s.convert_dtypes()print(sn.dtypes)

2.為數(shù)據(jù)表格添加顏色特性,實現(xiàn)更好可視化的方法

pandas可通過添加顏色條件,讓表格數(shù)據(jù)凸顯出統(tǒng)計特性。

import pandas as pddf = pd.read_csv("test.csv")

1.Fare變量值呈現(xiàn)條形圖,以清楚看出各個值得大小比較,可直接使用bar,示例如下:

df.style.bar("Fare",vmin=0)

2.讓Age變量呈現(xiàn)背景顏色的梯度變化,以體驗映射的數(shù)值大小,那么可直接使用background_gradient,深顏色代表數(shù)值大,淺顏色代表數(shù)值小,示例如下:

df.style.background_gradient("Greens",subset="Age")

3.讓所有缺失值都高亮出來,可使用highlight_null,示例如下:

df.style.highlight_null()

4.pandasstyle條件格式,組合用法非常簡單,示例如下:

df.style.bar("Fare",vmin=0).background_gradient("Greens",subset="Age").highlight_null()

3.Pandas中數(shù)值實現(xiàn)函數(shù)映射轉(zhuǎn)換的方法

使用pd.transform(func,axis)函數(shù):

  • func是指定用于處理數(shù)據(jù)的函數(shù),它可以是普通函數(shù)字符串函數(shù)名稱函數(shù)列表軸標(biāo)簽映射函數(shù)的字典。
  • axis是指要應(yīng)用到哪個軸,0代表列,1代表行。

1.func=“普通函數(shù)”,示例如下:

df = pd.DataFrame({"A": [1,2,3], "B": [10,20,30] })def plus_10(x):    return x+10df.transform(plus_10)# df.transform(lambda x: x+10)  等價寫法

2.func=“內(nèi)置的字符串函數(shù)”,示例如下:

df = pd.DataFrame({"A": [1,2,3], "B": [10,20,30] })df.transform("sqrt")

3.func=“多個映射函數(shù)”,示例如下:

df = pd.DataFrame({"A": [1,2,3], "B": [10,20,30] })df.transform([np.sqrt, np.exp])

4.func=“指定軸位置的映射函數(shù)”,示例如下:

df = pd.DataFrame({"A": [1,2,3], "B": [10,20,30] })df.transform({    "A": np.sqrt,    "B": np.exp,})

4.屬性值中出現(xiàn)長列表或字符串形式的數(shù)據(jù),實現(xiàn)分割處理的方法

工作中,比如用戶畫像的數(shù)據(jù)中也會遇到,客戶使用的app類型就會以這種長列表的形式或者以逗號隔開的字符串形式展現(xiàn)出來

1.使用explode()這個方法即可,一般我們會在后面跟一個去重的方法,explode()支持列表元組、Seriesnumpyndarray類型數(shù)據(jù),示例如下:

df.explode("愛好").drop_duplicates()

2.當(dāng)長數(shù)據(jù)不是explode能夠處理的數(shù)據(jù)類型時,使用Series.str.split()分割字符串的方法將其轉(zhuǎn)換為列表格式后處理,然后再進(jìn)行explode即可,示例如下:

df["愛好"] = df["愛好"].str.split()

df.explode("愛好").drop_duplicates()

5.DataFrame數(shù)據(jù)之間拼接的方法

源數(shù)據(jù)如下:

df1 = pd.DataFrame({     "name"["A","B""C","D"]"math"[60,89,82,70],    "physics"[66, 95,83,66],    "chemistry"[61,91,77,70] })df2 = pd.DataFrame({     "name"["E""F","G","H"],    "math"[66,95,83,66],    "physics"[60, 89,82,70],    "chemistry"[90,81,78,90] }

1.默認(rèn)情況下,它是沿axis=0垂直連接的,并且默認(rèn)情況下會保留df1和df2原來的索引。

pd.concat([df1,df2]

2.可以通過設(shè)置參數(shù)ignore_index=True,這樣索引就可以從0到n-1自動排序了。

pd.concat([df1,df2],ignore_index = True

3.如果想要沿水平軸連接兩個DataFrame,可以設(shè)置參數(shù)axis=1。

pd.concat([df1,df2],axis = 1

4.可以通過設(shè)置參數(shù)verify_integrity=True,將此設(shè)置True為時,如果存在重復(fù)的索引,將會報錯。

 pd.concat([df1,df2], verify_integrity=True)

6.DataFrame數(shù)據(jù)轉(zhuǎn)置的方法

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

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

7.統(tǒng)計屬性的數(shù)值分布頻率的方法

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

ames_housing = pd.read_csv("data/train.csv")print(ames_housing["FireplaceQu"].value_counts(dropna=False, normalize=True))

8.Pandas替換異常值的方法

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

 age.clip(50, 60)

9.Pandas篩選數(shù)據(jù)的方法

源數(shù)據(jù)如下:

1.直接在dataframe的[]中寫篩選的條件或者組合條件,示例如下:

# 篩選出大于NOX這變量平均值的所有數(shù)據(jù),然后按NOX降序排序。df[df["NOX"]>df["NOX"].mean()].sort_values(by="NOX",ascending=False).head()

#篩選出大于NOX這變量平均值且CHAS屬性值=1的所有數(shù)據(jù),然后按NOX降序排序。df[(df["NOX"]>df["NOX"].mean())& (df["CHAS"] ==1)].sort_values(by="NOX",ascending=False).head()

2.loc按標(biāo)簽值(列名和行索引取值)訪問,iloc按數(shù)字索引訪問,均支持單值訪問或切片查詢,loc還可以指定返回的列變量,示例如下:

# 按df["NOX"]>df["NOX"].mean()條件篩選出數(shù)據(jù),并篩選出指定CHAS變量,然后賦值=2df.loc[(df["NOX"]>df["NOX"].mean()),["CHAS"]] = 2

3.需要鎖定某些具體的值的,這時候就需要isin了。比如我們要限定NOX取值只能為0.538,0.713,0.437中時,示例如下:

df.loc[df["NOX"].isin([0.538,0.713,0.437]),:].sample(5)

# 也可以做取反操作,在篩選條件前加`~`符號df.loc[~df["NOX"].isin([0.538,0.713,0.437]),:].sample(5)

4.pandas里實現(xiàn)字符串的模糊篩選,可以用.str.contains()來實現(xiàn),示例如下:

train.loc[train["Name"].str.contains("Mrs|Lily"),:].head()

10.DataFrame數(shù)據(jù)之間合并的方法

merge():對于擁有相同的鍵的兩個DataFrame對象,需要將其進(jìn)行有效的拼接,整合到一個對象。

def merge(left, right, how="inner", on=None, left_on=None, right_on=None,         left_index=False, right_index=False, sort=True,         suffixes=("_x", "_y"), copy=True, indicator=False,         validate=None)

主要參數(shù)介紹:

  • left:DataFrame對象;
  • right:DataFrame對象;
  • how連接方式,inner或outer,默認(rèn)是outer
  • on指定用于連接的鍵,必須存在于左右兩個DataFrame中;
  • left_on:左側(cè)DataFrame中用于連接鍵的列名,當(dāng)左右對象列名不同但含義相同時使用
  • right_on:右側(cè)DataFrame中用于連接鍵的列名;
  • left_index使用左側(cè)DataFrame的行索引作為連接鍵(配合right_on)
  • right_index:使用右側(cè)DataFrame的行索引作為連接鍵(配合left_on);
  • sort對其按照連接鍵進(jìn)行排序;

源數(shù)據(jù)為:

df1 = pd.DataFrame(np.random.randint(10, size=(3, 3)), columns=["A", "B", "C"])df2 = pd.DataFrame(np.random.randint(10, size=(2, 2)), columns=["A", "B"])

pd.merge(df1, df2, how="outer", on="B")

pd.merge(df1, df2, how="outer", left_on="B", right_on="A")

11.Pandas刪除重復(fù)項的方法

1.drop_duplicates():刪除對象dataframe中重復(fù)的行,重復(fù)通過參數(shù)subset指定。

def drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)

主要參數(shù)介紹:

  • subset:指定的鍵(列),默認(rèn)為所有的列(即每行全部相同)
  • keep刪除重復(fù)項,除了第1個(first)或者最后一個(last);
  • inplace:是否直接對原來的對象進(jìn)行修改,默認(rèn)為False,生成一個拷貝`;
  • ignore_index:是否重建索引;
df1 = pd.DataFrame(np.random.randint(10, size=(3, 3)), columns=["A", "B", "C"])df1.drop_duplicates("A")

2.unique():相比于drop_duplicates方法,unique()只針對于Series對象,類似于Set。 通常是對dataframe中提取某一鍵,變成Series,再去重,統(tǒng)計個數(shù)。

print(len(df1["A"].unique().tolist()))

12.Pandas數(shù)據(jù)排序的方法

sort_values():按照某個鍵進(jìn)行排序。 查看相同鍵時行的某些變化,如例子中在A相同時B、C的變化。

def sort_values(by, axis=0, ascending=True, kind="quicksort", na_position="last", ignore_index=False)

主要參數(shù)介紹:

  • by:字符串或字符串列表,指定按照哪個鍵/索引進(jìn)行排序;
  • axis:指定排序的軸;
  • ascending:升序或降序,默認(rèn)為升序;
  • kind指定排序方法,‘quicksort’, ‘mergesort’, ‘heapsort;
  • ignore_index:是否重建索引;
df1.sort_values(by="A")

13.Pandas數(shù)據(jù)采樣的方法

sample():對對象進(jìn)行采樣。 當(dāng)dataframe對象數(shù)據(jù)量太大,導(dǎo)致做實驗過滿時,可以抽取一部分進(jìn)行實驗,提高效率。

def sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

主要參數(shù)介紹:

  • n:指定采樣的數(shù)量;
  • frac:指定采樣的比例,與n只能選擇其中一個;
  • replace允許或不允許對同一行進(jìn)行多次采樣;
  • weights采樣的權(quán)重,默認(rèn)為“None”將導(dǎo)致相同的概率權(quán)重;
  • random_state:類似于seed作用;
  • axis指定采樣的軸,默認(rèn)為行;
df1.sample(n=3)

df1.sample(frac=0.1)

14.Pandas判斷和刪除缺失值的方法

1.isna():isna方法返回一個布爾對象,每個元素是否為NaN。

df1.isna()

2.isnull():當(dāng)數(shù)據(jù)量很大時,上述很難觀察到某列是否存在缺失,此時可以用isnull()方法 。

 df1.isnull().all()  # 某列是否全部為NaN df1.isnull().any() # 某列是否出現(xiàn)NaN

3.dropna():dropna方法刪除含缺失值的行或列。

def dropna(axis=0, how="any", thresh=None, subset=None, inplace=False)

主要參數(shù)介紹:

  • axis:指定軸;
  • how參數(shù)為any時,行或列(axis決定)出現(xiàn)NaN時,就進(jìn)行刪除;為all時,行或列全為NaN時才進(jìn)行刪除
  • thresh:閾值,要求不為NAN的個數(shù)

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

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

相關(guān)文章

  • ApacheCN 編程/大數(shù)據(jù)/數(shù)據(jù)科學(xué)/人工智能學(xué)習(xí)資源 2019.6

    摘要:請回復(fù)這個帖子并注明組織個人信息來申請加入。權(quán)限分配靈活,能者居之。數(shù)量超過個,在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。導(dǎo)航歸檔社區(qū)自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權(quán),請聯(lián)系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 評論0 收藏0
  • ApacheCN 學(xué)習(xí)資源匯總 2019.3

    摘要:主頁暫時下線社區(qū)暫時下線知識庫自媒體平臺微博知乎簡書博客園合作侵權(quán),請聯(lián)系請抄送一份到特色項目中文文檔和教程與機(jī)器學(xué)習(xí)實用指南人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)比賽系列項目實戰(zhàn)教程文檔代碼視頻數(shù)據(jù)科學(xué)比賽收集平臺,,劍指,經(jīng)典算法實現(xiàn)系列課本課本描述 【主頁】 apachecn.org 【Github】@ApacheCN 暫時下線: 社區(qū) 暫時下線: cwiki 知識庫 自媒體平臺 ...

    array_huang 評論0 收藏0
  • ApacheCN 學(xué)習(xí)資源匯總 2019.3

    摘要:主頁暫時下線社區(qū)暫時下線知識庫自媒體平臺微博知乎簡書博客園合作侵權(quán),請聯(lián)系請抄送一份到特色項目中文文檔和教程與機(jī)器學(xué)習(xí)實用指南人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)比賽系列項目實戰(zhàn)教程文檔代碼視頻數(shù)據(jù)科學(xué)比賽收集平臺,,劍指,經(jīng)典算法實現(xiàn)系列課本課本描述 【主頁】 apachecn.org 【Github】@ApacheCN 暫時下線: 社區(qū) 暫時下線: cwiki 知識庫 自媒體平臺 ...

    Prasanta 評論0 收藏0
  • ApacheCN 編程/大數(shù)據(jù)/數(shù)據(jù)科學(xué)/人工智能學(xué)習(xí)資源 2019.4

    摘要:我們是一個大型開源社區(qū),旗下群共余人,數(shù)量超過個,網(wǎng)站日超過,擁有博客專家和簡書程序員優(yōu)秀作者認(rèn)證。我們組織公益性的翻譯活動學(xué)習(xí)活動和比賽組隊活動,并和等國內(nèi)著名開源組織保持良好的合作關(guān)系。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 我們是一個...

    tomorrowwu 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<