亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Pandas技巧大全:含具體代碼實(shí)現(xiàn)

netmou / 2248人閱讀

摘要:查看數(shù)據(jù)的基本統(tǒng)計信息。用處是用于數(shù)據(jù)讀寫處理更改提取等一系列操作的包,可以說,所有能實(shí)現(xiàn)的功能,都可以通過代碼輕松實(shí)現(xiàn),因此,對于學(xué)習(xí)非常重要。如果在里,需要翻到最低和最右,而且可能由于溢出無法窮盡可以簡單的實(shí)現(xiàn)。

放在前面的話? ? ????? ? ? ??

????????這學(xué)期刻意少選了一些課,希望能夠多一些輸入,讓自己的內(nèi)在能力提升起來,做一個實(shí)干家而不是口嗨家。

????????于是干脆結(jié)合平時數(shù)據(jù)處理過程中遇到的問題與實(shí)戰(zhàn)資料,進(jìn)行系統(tǒng)的總結(jié),形成一篇篇文檔。既是對自己學(xué)習(xí)的記錄,也可能對看到的朋友有幫助。由于水平有限目前需要依靠大量的參考資料來支撐,也盡數(shù)列在【參考文獻(xiàn)】中,可以溯源查看。

????????非常感謝松鼠在過程中給出的建議和支持,沒有松鼠的鼓勵可能我完全堅持不到不斷完善和更新,有人支持的感覺真好!哈哈哈哈哈

為什么總結(jié)Pandas?

????????之前學(xué)習(xí)Python總覺得各種函數(shù)的使用非常“空洞”,不知道針對哪些數(shù)據(jù)用怎樣的方法,像是使用一個一個黑盒,經(jīng)常發(fā)生“報錯”。

????????究其原因,發(fā)現(xiàn)是我自己對于數(shù)據(jù)處理的類型以及對應(yīng)的方法不夠熟悉導(dǎo)致的,因此,在此根據(jù)網(wǎng)絡(luò)資料和kaggle實(shí)戰(zhàn)總結(jié)pandas的相關(guān)使用指南。未來數(shù)據(jù)處理過程中,只要是pandas類型的數(shù)據(jù),可以放心使用以下方法達(dá)到目的,不會出現(xiàn)報錯和意外。

????????重要的是,本帖子里的方法只是最簡單的基礎(chǔ)和入門,pandas是一個非常博大精深的庫,眾多方法和函數(shù)具有無限的組合,只是作為初學(xué)者的一個初窺。

????????官方的API地址:API reference — pandas 1.3.3 documentation官方的權(quán)威指南,一切問題以官方指南為準(zhǔn)。

? ? ? ? 水平有限肯定有很多不足,如果發(fā)現(xiàn)或有任何建議,請朋友一定聯(lián)系我,感謝!

???????

目錄

放在前面的話? ? ????? ? ? ??

為什么總結(jié)Pandas?

參考文獻(xiàn)

特點(diǎn)

用處

導(dǎo)入庫

數(shù)據(jù)類型

Series

DataFrame

Series求交、并、差

Series數(shù)據(jù)分箱

Series合并為DataFrame

Series轉(zhuǎn)化為特定shape的DataFrame

Series垂直合并

Series字符串?dāng)?shù)據(jù)首字母大寫

讀寫文件

CSV文件

Excel文件

SQL

其它

創(chuàng)建隨機(jī)矩陣

案例數(shù)據(jù)

整體操作

數(shù)據(jù)的行數(shù)和列數(shù)

查看數(shù)據(jù)行、列、數(shù)據(jù)類型、大小

查看數(shù)據(jù)的基本統(tǒng)計信息:count、mean、std、min、25%、50%、75%、max。

按列操作

查看有哪些列

重命名列名

改變行索引列的名稱

每列的數(shù)據(jù)量

每列去重后的數(shù)據(jù)量

每列的最大值

每列的最小值

某列的最大值or最小值的索引

每列的均值、中位數(shù)、方差、標(biāo)準(zhǔn)差

每列的四分位數(shù)

統(tǒng)計每列的所有取值及其出現(xiàn)次數(shù)

按某列值排序

每列的求和

累計和、累計積、累計最大值、累計最小值

新列:列計算

列之間的相關(guān)系數(shù)

按行操作

前n行

后n行

隨機(jī)抽取n行

返回某列最大的前n行數(shù)據(jù)

返回某列滿足特定值的行

選擇與過濾

篩選列

篩選行

篩選特定數(shù)據(jù)框

篩選器

排序

根據(jù)某列的值排序

根據(jù)索引排序

刪除數(shù)據(jù)

刪除特定的列

刪除Series特定值

刪除特定的行

數(shù)據(jù)類型轉(zhuǎn)換

查看數(shù)據(jù)類型

將某列數(shù)據(jù)轉(zhuǎn)化為特定的數(shù)據(jù)類型

Apply函數(shù)

def函數(shù)

lambda函數(shù)


???????

參考文獻(xiàn)

特點(diǎn)

pandas的操作很像搭積木,遇到實(shí)際的問題,我們需要不斷分解直到最簡單的模塊組合,再對應(yīng)具體的pandas函數(shù)組合。

用處

pandas是用于數(shù)據(jù)讀寫、處理、更改、提取等一系列操作的包,可以說,Excel所有能實(shí)現(xiàn)的功能,pandas都可以通過代碼輕松實(shí)現(xiàn),因此,pandas對于Python學(xué)習(xí)非常重要。

導(dǎo)入庫

import pandas as pd

數(shù)據(jù)類型

根據(jù)實(shí)際場景,Pandas支持兩種類型的數(shù)據(jù)結(jié)構(gòu)。

  1. Series

  2. Dataframe

Series

????????Series可以理解成可以“自定義標(biāo)簽”的一維列表,可以人為的設(shè)定標(biāo)簽的名稱;你可以把它形象的理解成,第一個參數(shù)是一個列表(也可以是其它,例如range(0,5)),第二個參數(shù)是你希望的列表的索引值。

一般列表默認(rèn)的索引是從0到n,略顯死板;Series可以自定義標(biāo)簽索引,這是它的最大優(yōu)勢

?# 自定義一個Series,索引為a,b,c,d?# 注意:Series可以是任意數(shù)據(jù)類型!比如1和"a"?houSeries = pd.Series([1,2,"a",4], index=["a","b","c","d"])?houSeries
?a ?  1?b ?  2?c ?  a?d ?  4?dtype: int64

注意:如果不人為給出索引,那么默認(rèn)的索引為從0開始

?houSeries2 = pd.Series([1,2,3,4])?houSeries2
?0 ?  1?1 ?  2?2 ?  3?3 ?  4?dtype: int64

DataFrame

DataFrame可以理解成一個二維的excel表

Series求交、并、差

?ser_i = pd.Series(np.intersect1d(ser1, ser2)) ?# 交集?ser_u = pd.Series(np.union1d(ser1, ser2)) ?# 并集?ser_s = ser_u[~ser_u.isin(ser_i)]# 差集

Series數(shù)據(jù)分箱

?train["CategoricalFare"] = pd.qcut(train["Fare"], 4)?# 數(shù)據(jù)分箱,分成4個箱子
  • 目的

連續(xù)變量離散化:1~100分成4箱

  • 為什么要分箱?

  1. 離散變量便于特征的增加和減少,便于模型快速迭代

  2. 稀疏向量內(nèi)積乘法更快,計算結(jié)果便于存儲,容易擴(kuò)展

  3. 離散化后的特征對異常數(shù)據(jù)有很強(qiáng)的魯棒性,例如,連續(xù)異常值5000可能對模型影響很大,但如果分箱后,模型影響很小

  4. 為模型引入非線性,提升模型表達(dá)能力,加大擬合

  5. 模型更加穩(wěn)定,不會因?yàn)楦鲃e數(shù)據(jù)增加而影響模型精度

  6. 簡化模型,防止模型過擬合

Series合并為DataFrame

?# 1.pd.concat()函數(shù)?data = pd.concat([ser1, ser2], axis=1)???# 2.pd.DataFrame()函數(shù)?data = pd.DataFrame({"col1": ser1, "col2": ser2})

Series轉(zhuǎn)化為特定shape的DataFrame

?# 把series的值提取出來,轉(zhuǎn)化為7x5的矩陣dataframe?data = pd.DataFrame(series.values.reshape(7,5))

Series垂直合并

?# 類似列表,直接加在后面?ser3 = ser1.append(ser2)

Series字符串?dāng)?shù)據(jù)首字母大寫

?# 方法一:title()函數(shù)結(jié)合lambda?ser.map(lambda x: x.title())???# 方法二upper()結(jié)合lambda?ser.map(lambda x: x[0].upper() + x[1:])???# 方法三title()結(jié)合列表推導(dǎo)式?pd.Series([i.title() for i in ser])

讀寫文件

CSV文件

?# 讀?df = pd.read_csv("data.csv",nrows=5)?# 寫?df.to_csv(filename) 

Excel文件

?# 讀?pd.read_excel("filename")?# 寫?pd.to_excel("dir/dataFrame.xlsx", sheet_name="Sheet1")

SQL

此處以MySQL為例

首先,我們要創(chuàng)建sqlalchemy對象連接MySQL。

SQLAlchemy的作用,是把關(guān)系數(shù)據(jù)庫的表結(jié)構(gòu)映射到對象上,讓我們能在Python上間接處理數(shù)據(jù)。

?pip install sqlalchemy?pip install mysql-connector-python
?# 導(dǎo)入庫?from sqlalchemy import create_engine?# 連接MySQL數(shù)據(jù)庫?engine = create_engine("mysql+mysqlconnector://root:123456@127.0.0.1:3306/test",echo=False)?# 參數(shù)含義:mysql表示使用MySQL數(shù)據(jù)庫;mysqlconnector表示使用庫;root是用戶名;“:”后、“@”前是我們的密碼;@后是host地址;端口號是3306;最后是數(shù)據(jù)庫的名字“test”?# echo=False表示不輸出sql語句

其次,我們從sql中讀取數(shù)據(jù)。

?import pymysql?conn = pymysql.connect(? ? ?host = "127.0.0.1", #數(shù)據(jù)庫的host? ? ?user="root", #用戶名? ? ?passwd="12345678", #密碼? ? ?port=3306, #port? ? ?db="db_school" #數(shù)據(jù)庫的名字? ? ?charset="utf8" #處理中文數(shù)據(jù)?)?df = pd.read_sql("""?    select * from student_grade?""", con=conn)
 

隨后,我們把Python數(shù)據(jù)寫入sql中。

?# 方法1當(dāng)數(shù)據(jù)表不存在時,每次覆蓋整個表?df.to_sql(name="student", con=engine, if_exists="replace")?# name為sql表名;con為連接,對應(yīng)engine;if_exists=“replace”表示覆蓋。???# 方法2當(dāng)數(shù)據(jù)表已經(jīng)存在時,追加即可?df.to_sql(name="student", con=engine, if_exists="append")

其它

?# 分隔符文本的讀?pd.read_table(filename)???# json格式的讀寫?pd.read_json(json_string)?df.to_json(filename) ???# 傳入html格式,進(jìn)行解析?# 注意:read_html只能讀取網(wǎng)頁中的表格類數(shù)據(jù)!?# 注意:一般只能處理靜態(tài)網(wǎng)頁;動態(tài)網(wǎng)頁要用selenium?pd.read_html(url)?df.to_html(filename) ???# 剪切板?pd.read_clipboard()?df.to_clipboard() 

創(chuàng)建隨機(jī)矩陣

?# 創(chuàng)建一個10行5列的隨機(jī)數(shù)矩陣?pd.DataFrame(np.random.rand(10,5))
01234
00.6717850.8794040.3504730.6896890.857887
10.7108170.4956260.3612290.6832980.872921
20.6231850.2451170.2815890.5311990.893249
30.3732950.4326490.8427310.1275290.713869
40.0386100.6413080.9030390.8291210.395986
50.7740260.8562680.1842180.0582890.145508
60.7580300.4952850.8679130.4117900.781194
70.2451900.6186230.7380770.3008380.992442
80.4926210.7235530.9580070.8341200.618777
90.9443070.8771470.1750410.0585990.470091

案例數(shù)據(jù)

后文代碼中使用的數(shù)據(jù)為2021東京奧運(yùn)會各國的獎牌數(shù)量統(tǒng)計,包括:加權(quán)排名、國家、金牌數(shù)量、銀牌數(shù)量、銅牌數(shù)量、金牌總計、獎牌數(shù)量排名

整體操作

數(shù)據(jù)的行數(shù)和列數(shù)

拿到數(shù)據(jù)第一步往往先查看數(shù)據(jù)有多少行、多少列。

如果在Excel里,需要翻到最低和最右,而且可能由于溢出無法窮盡;Python可以簡單的實(shí)現(xiàn)。

?data.shape

查看數(shù)據(jù)行、列、數(shù)據(jù)類型、大小

?data.info()
??RangeIndex: 93 entries, 0 to 92?Data columns (total 7 columns):? # ? Column ? ? ? ? Non-Null Count  Dtype ?---  ------ ? ? ? ? --------------  ----- ? 0 ? Rank ? ? ? ? ? 93 non-null ? ? int64 ? 1 ? Team/NOC ? ? ? 93 non-null ? ? object? 2 ? Gold ? ? ? ? ? 93 non-null ? ? int64 ? 3 ? Silver ? ? ? ? 93 non-null ? ? int64 ? 4 ? Bronze ? ? ? ? 93 non-null ? ? int64 ? 5 ? Total ? ? ? ?  93 non-null ? ? int64 ? 6 ? Rank by Total  93 non-null ? ? int64 ?dtypes: int64(6), object(1)?memory usage: 5.2+ KB

數(shù)據(jù)的行數(shù)、索引、列、每列的非缺失值數(shù)量、數(shù)據(jù)類型、數(shù)據(jù)的內(nèi)存大小

查看數(shù)據(jù)的基本統(tǒng)計信息:count、mean、std、min、25%、50%、75%、max。

?data.describe()

按列操作

這里的操作可以想象是Excel中,對每列數(shù)據(jù)進(jìn)行統(tǒng)計和觀察。

查看有哪些列

拿到數(shù)據(jù)后,我們先看一下數(shù)據(jù)有哪些列

?# 注意,不用加()因?yàn)闆]有要傳入的參數(shù)?data.columns
?Index(["Rank", "Team/NOC", "Gold", "Silver", "Bronze", "Total",? ? ? ? "Rank by Total"],? ? ?  dtype="object")

重命名列名

當(dāng)我們發(fā)現(xiàn)一些列名比較奇怪或者不規(guī)范需要更改的時候,Excel里我們需要“找到需要更改的列名——點(diǎn)擊表格——編輯”,pandas我們可以用代碼更改。

?# 把“Gold”名字改成“金牌”?# columns中,第一個參數(shù)為原名,:后為新名?data.rename(columns= {"Gold" : "金牌"}).head()
RankTeam/NOC金牌SilverBronzeTotalRank by Total
01United States of America3941331131
12People"s Republic of China383218882
23Japan271417585
34Great Britain222122654
45ROC202823713

改變行索引列的名稱

data.index.name = "ye"
ye
01United States of America3941331131
12People"s Republic of China383218882
23Japan271417585
34Great Britain222122

每列的數(shù)據(jù)量

我希望統(tǒng)計每列數(shù)據(jù)有多少行,如果在Excel里,我們可能需要翻到最后一頁。Python只需要一行代碼。

?data.count()?# 或 len(data)
?Rank ? ? ? ? ? ? 93?Team/NOC ? ? ? ? 93?Gold ? ? ? ? ? ? 93?Silver ? ? ? ? ? 93?Bronze ? ? ? ? ? 93?Total ? ? ? ? ?  93?Rank by Total ?  93?dtype: int64

表示Rank列有93行數(shù)據(jù)

每列去重后的數(shù)據(jù)量

有時候我們希望看到每列有多少獨(dú)特的值,特別是當(dāng)獨(dú)特值具有關(guān)鍵意義的時候。

?# 注意是nunique()而不是unique()??!?data.nunique()
?Rank ? ? ? ? ? ? 67?Team/NOC ? ? ? ? 93?Gold ? ? ? ? ? ? 14?Silver ? ? ? ? ? 17?Bronze ? ? ? ? ? 21?Total ? ? ? ? ?  30?Rank by Total ?  30?dtype: int64

每列的最大值

我們希望看到每一列的最大值,例如,我們希望知道“獲得金牌最多的”有多少?

?# 統(tǒng)計每列數(shù)據(jù)的最大值:例如,我想看得到金牌、銀牌、銅牌數(shù)量最多為多少??data.max()
?Rank ? ? ? ? ? ? ? ? ?  86?Team/NOC ? ? ? ? Venezuela?Gold ? ? ? ? ? ? ? ? ?  39?Silver ? ? ? ? ? ? ? ?  41?Bronze ? ? ? ? ? ? ? ?  33?Total ? ? ? ? ? ? ? ?  113?Rank by Total ? ? ? ? ? 77?dtype: object

每列的最小值

同理,我們想知道,獲得金牌最少的是多少?

?# 統(tǒng)計每列的最小值:例如,我想看金牌最低的為多少??data.min()
?Rank ? ? ? ? ? ? ? ? ? ? 1?Team/NOC ? ? ? ? Argentina?Gold ? ? ? ? ? ? ? ? ? ? 0?Silver ? ? ? ? ? ? ? ? ? 0?Bronze ? ? ? ? ? ? ? ? ? 0?Total ? ? ? ? ? ? ? ? ?  1?Rank by Total ? ? ? ? ?  1?dtype: object

某列的最大值or最小值的索引

有時候我們不僅需要直到最大值或最小值是誰,我們也希望直到對應(yīng)的索引是多少,便于我們定位。

由于要定位索引,必須要針對某列,不能針對Dataframe整體,必須篩選列;Series可以直接用。

?# "Gold"列的最小值的索引?data["Gold"].idxmin()???# "Gold"列的最大值的索引?data["Gold"].idxmax()

每列的均值、中位數(shù)、方差、標(biāo)準(zhǔn)差

除了最基本的量、最大最小值,我們還希望了解每列數(shù)據(jù)的一些基本的統(tǒng)計特征。例如,平均金牌數(shù)量?金牌數(shù)量的中位數(shù)?隊(duì)伍之間獲得金牌的數(shù)量的差異大嗎(方差or標(biāo)準(zhǔn)差)

?# 均值?data.mean()
?Rank ? ? ? ? ? ? 46.333333?Gold ? ? ? ? ? ?  3.655914?Silver ? ? ? ? ?  3.634409?Bronze ? ? ? ? ?  4.322581?Total ? ? ? ? ?  11.612903?Rank by Total ?  43.494624?dtype: float64

有趣的是,pandas會自動把非數(shù)字的列給忽視掉,只計算數(shù)值列的均值

?# 中位數(shù)?data.median()
?Rank ? ? ? ? ? ? 46.0?Gold ? ? ? ? ? ?  1.0?Silver ? ? ? ? ?  1.0?Bronze ? ? ? ? ?  2.0?Total ? ? ? ? ? ? 4.0?Rank by Total ?  47.0?dtype: float64
?# 標(biāo)準(zhǔn)差?data.std()
?Rank ? ? ? ? ? ? 26.219116?Gold ? ? ? ? ? ?  7.022471?Silver ? ? ? ? ?  6.626339?Bronze ? ? ? ? ?  6.210372?Total ? ? ? ? ?  19.091332?Rank by Total ?  24.171769?dtype: float64
?# 方差?data.var()
?Rank ? ? ? ? ? ? 687.442029?Gold ? ? ? ? ? ?  49.315101?Silver ? ? ? ? ?  43.908368?Bronze ? ? ? ? ?  38.568724?Total ? ? ? ? ?  364.478962?Rank by Total ?  584.274427?dtype: float64

每列的四分位數(shù)

除了總的均值、方差這些量,我們有時候希望獲得數(shù)據(jù)的階段性情況,例如,我想知道“前25%的人的金牌數(shù)量大約為多少”(從小到大),第75%的人的金牌數(shù)量大約為多少。

這時,我們需要引入四分位數(shù)。

具體取25%還是75%,取幾個點(diǎn),可以根據(jù)自己的喜好設(shè)定。

?data.quantile([0.25, 0.5, 0.75])
RankGoldSilverBronzeTotalRank by Total
0.2524.00.00.01.02.023.0
0.5046.01.01.02.04.047.0
0.7570.03.04.05.011.066.0

每一列數(shù)據(jù),從小到大排序,第25%、第50%、第75%的數(shù)據(jù)為多少。

結(jié)果發(fā)現(xiàn),由于50%時的金牌為1,說明至少有大約50%的國家,沒有金牌或只有1枚金牌。

統(tǒng)計每列的所有取值及其出現(xiàn)次數(shù)

例如,我想要知道,金牌的數(shù)量一共有哪些?獲得39塊金牌的共有多少人?獲得0塊金牌的共有多少人?

對應(yīng)在Excel的操作是:“數(shù)據(jù)——自動篩選——統(tǒng)計值的出現(xiàn)次數(shù)”

?# 統(tǒng)計Gold列的值的出現(xiàn)次數(shù)?data["Gold"].value_counts()
?0 ? ? 28?1 ? ? 22?2 ? ? 11?3 ? ? 11?4 ? ?  5?7 ? ?  4?10 ? ? 4?6 ? ?  2?17 ? ? 1?20 ? ? 1?22 ? ? 1?27 ? ? 1?38 ? ? 1?39 ? ? 1?Name: Gold, dtype: int64

第一列為值,第二列為出現(xiàn)頻次。

結(jié)果說明,共有28個國家一枚金牌都沒有獲得,有一個國家獲得了39枚金牌。

按某列值排序

例如,我們希望數(shù)據(jù)根據(jù)“金牌列”進(jìn)行升序排序;對應(yīng)Excel里面的排序操作。

?# 默認(rèn)為升序?# 添加參數(shù)ascending= False則變成降序?data.sort_values("Gold").head()
RankTeam/NOCGoldSilverBronzeTotalRank by Total
9286Syrian Arab Republic001177
6566Colombia041542
6667Azerbaijan034733
6768Dominican Republic032542
6869Armenia022447

每列的求和

求每列的值的總和,例如,整個2021東京奧運(yùn)會,一共有多少枚金牌?

?data.sum()
?Rank ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  4309?Team/NOC ? ? ? ? United States of AmericaPeople"s Republic of C...?Gold ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 340?Silver ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 338?Bronze ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 402?Total ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1080?Rank by Total ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4045?dtype: object

累計和、累計積、累計最大值、累計最小值

有時候我們希望列之間實(shí)現(xiàn)累加疊積的關(guān)系,例如,隨著國家的增多,累計金牌數(shù)量的變化?

?# 累計求和:依次統(tǒng)計前1、2、3、4、5...n行的累計和?data.cumsum()
RankTeam/NOCGoldSilverBronzeTotalRank by Total
01United States of America3941331131
13United States of AmericaPeople"s Republic of C...7773512013
26United States of AmericaPeople"s Republic of C...10487682598
310United States of AmericaPeople"s Republic of C...1261089032412
415United States of AmericaPeople"s Republic of C...14613611339515
........................
883965United States of AmericaPeople"s Republic of C...34033839810763737
894051United States of AmericaPeople"s Republic of C...34033839910773814
904137United States of AmericaPeople"s Republic of C...34033840010783891
914223United States of AmericaPeople"s Republic of C...34033840110793968
924309United States of AmericaPeople"s Republic of C...34033840210804045
?# 累計積:切忌不能放入字符串進(jìn)去,必須為可計算的數(shù)值?data.cumprod()???# 累計最大值?data.cummax()???# 累計最小值?data.cummin()

新列:列計算

有時候我們需要對多列之間進(jìn)行計算,得到第三列作為我們所需要的列。

例如,我們希望統(tǒng)計每個國家的金牌和銀牌的數(shù)量,我們把兩列想加得到第三列

data["gold_Silver"] = df.Gold + df.Silver

列之間的相關(guān)系數(shù)

?data.corr()

按行操作

前n行

當(dāng)數(shù)據(jù)量比較大的時候,我們會查看前n行大致了解一下

?# .head()默認(rèn)前5行,可以根據(jù)參數(shù)改變?data.head()

后n行

?# 同head?data.tail()

隨機(jī)抽取n行

?# 默認(rèn)抽取一行?data.sample()

返回某列最大的前n行數(shù)據(jù)

比如我想知道,銀牌數(shù)量最多的前n個數(shù)據(jù)的樣子是怎樣的

?data.nlargest(5,"Gold")

返回某列滿足特定值的行

例如,我想知道,銀牌數(shù)量大于10的國家都有哪些

?data[data.Silver>10]

選擇與過濾

篩選列

選擇特定的列

?# 選擇"Gold"列的數(shù)據(jù)?data["Gold"]???# 同理?data.Gold???# 根據(jù)列名篩選:篩選Gold和Silver列?data[["Gold","Silver"]]

篩選行

選擇特定的行

?# 篩選第10行到最后的數(shù)據(jù)?data[10:]???# 返回索引從5~7的行數(shù)據(jù)?data.loc[5:7]???# 篩選某列數(shù)據(jù)的某一行?data["Gold"][0]

篩選特定數(shù)據(jù)框

  1. 篩選第n行第m列的數(shù)據(jù)框

  2. 篩選第~行第~列的數(shù)據(jù)框

?# 返回第2行,第3列的數(shù)據(jù)框?data.iloc[[1],[2]]???# 根據(jù)行索引和列名篩選?data.loc[:,"Gold":"Bronze"]

篩選器

?# 自己創(chuàng)建過濾條件?filters = data.Gold>5?data[filters]???# 使用.filter函數(shù)和regex匹配?# regex="^G"表示匹配開頭為G的列?data.filter(regex="^G").head()???# 多重條件?# (1)np.logical_and()函數(shù)?data[np.logical_and(data["Gold"]>10,data["Silver"]<50)]?# (2)直接使用&?data[(data["Gold"]>10)&(data["Silver"]<50)]

Python內(nèi)置的正則表達(dá)式引擎——regex模塊

常見的正則模塊re有4270行C語言代碼,而regex模塊有24513行C語言代碼,更加強(qiáng)大!!

排序

根據(jù)某列的值排序

?data.sort_values("Gold",ascending=False).head()

根據(jù)索引排序

?# 默認(rèn)升序?data.sort_index()

刪除數(shù)據(jù)

刪除特定的列

?# columns=不能?。?!?data.drop(columns=["Gold"])?data.drop(columns=["Gold","Silver"])???# 使用axis參數(shù):刪除Gold列?data.drop("Gold", axis=1)

刪除Series特定值

?# 刪除Series中索引為"a"值?hou_Series.drop("a")

刪除特定的行

?# 刪除索引為0,1的行?data.drop([0,1])

數(shù)據(jù)類型轉(zhuǎn)換

查看數(shù)據(jù)類型

查看每列數(shù)據(jù)是整型?浮點(diǎn)?字符串?

?data.dtypes

將某列數(shù)據(jù)轉(zhuǎn)化為特定的數(shù)據(jù)類型

?# dataType為特定的數(shù)據(jù)類型?data["Gold"] = data["Gold"].astype("dataType")

Apply函數(shù)

有時候我們需要自定義實(shí)現(xiàn)一些個性化的功能,這時我們可以通過apply函數(shù)實(shí)現(xiàn)

def函數(shù)

?def power(x):? ? ?return x*2?data.Gold.apply(power).head()

lambda函數(shù)

df.Gold.apply(lambda x: x*2).head()

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

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

相關(guān)文章

  • Pandas數(shù)據(jù)類型轉(zhuǎn)換的幾個小技巧

    摘要:利用的一些輔助函數(shù)進(jìn)行類型轉(zhuǎn)換的函數(shù)和復(fù)雜的自定函數(shù)之間有一個中間段,那就是的一些輔助函數(shù)。這些輔助函數(shù)對于某些特定數(shù)據(jù)類型的轉(zhuǎn)換非常有用如。 利用Pandas進(jìn)行數(shù)據(jù)分析時,確保使用正確的數(shù)據(jù)類型是非常重要的,否則可能會導(dǎo)致一些不可預(yù)知的錯誤發(fā)生。筆者使用Pandas已經(jīng)有一段時間了,但是還是會在一些小問題上犯錯誤,追根溯源發(fā)現(xiàn)在對數(shù)據(jù)進(jìn)行操作時某些特征列并不是Pandas所能處理的...

    luckyw 評論0 收藏0
  • 聊聊一行讀研時最成功的投資

    摘要:大家好,我是一行今天給大家聊聊一行在讀研里最成功的投資,那必然是鍵盤邊上的每一本技術(shù)書啦畢竟股票基金這種投資即使賺了錢,過段時間就得還回去,非常的神奇但是讀過的每一本技術(shù)書籍,都內(nèi)化在手指上了,只要給個鍵盤,就能給它實(shí) ...

    CarterLi 評論0 收藏0
  • 10個Python Pandas技巧,使您的工作更有效率

    摘要:是一個廣泛用于結(jié)構(gòu)化數(shù)據(jù)的包。因此,的任何變化都會導(dǎo)致發(fā)生變化。這是檢查值分布的命令。這也是每個人都會使用的命令。我想在這里指出兩個技巧。另一個技巧是處理混合在一起的整數(shù)和缺失值。將所有浮點(diǎn)數(shù)舍入為整數(shù)。 showImg(https://segmentfault.com/img/remote/1460000019138448?w=432&h=270); Pandas是一個廣泛用于結(jié)構(gòu)化...

    stormjun 評論0 收藏0
  • Pandas之旅(四) : 可能是社區(qū)內(nèi)最實(shí)用的Pandas技巧

    摘要:不為人知的七大實(shí)用技巧大家好,我今天勤快地回來了,這一期主要是和大家分享一些的實(shí)用技巧,會在日常生活中大大提升效率,希望可以幫助到大家還是老樣子,先給大家奉上這一期的章節(jié)目錄自定義選項(xiàng),設(shè)置實(shí)用中模塊構(gòu)建測試數(shù)據(jù)巧用訪問器合并其他列拼接使用 Pandas不為人知的七大實(shí)用技巧 大家好,我今天勤快地回來了,這一期主要是和大家分享一些pandas的實(shí)用技巧,會在日常生活中大大提升效率,希望...

    iflove 評論0 收藏0
  • 4000字詳細(xì)說明,推薦20個好用到爆的Pandas函數(shù)方法

    摘要:往期回顧教程實(shí)現(xiàn)社交網(wǎng)絡(luò)可視化,看看你的人脈影響力如何轉(zhuǎn)載字概括精髓,必知必會例注意字歸納總結(jié)帶你做數(shù)據(jù)預(yù)處理新聞字張圖,一鍵生成炫酷的動態(tài)交互式圖表分享收藏點(diǎn)贊在看 今天分享幾個不為人知的pandas函數(shù),大家可能平時看到的不多,但是使用起來倒是非常的方便,也能夠幫助我們數(shù)據(jù)分析人員大...

    2501207950 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<