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

資訊專欄INFORMATION COLUMN

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

netmou / 2194人閱讀

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

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

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

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

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

為什么總結(jié)Pandas?

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

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

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

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

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

???????

目錄

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

為什么總結(jié)Pandas?

參考文獻(xiàn)

特點(diǎn)

用處

導(dǎo)入庫(kù)

數(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)計(jì)信息:count、mean、std、min、25%、50%、75%、max。

按列操作

查看有哪些列

重命名列名

改變行索引列的名稱

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

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

每列的最大值

每列的最小值

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

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

每列的四分位數(shù)

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

按某列值排序

每列的求和

累計(jì)和、累計(jì)積、累計(jì)最大值、累計(jì)最小值

新列:列計(jì)算

列之間的相關(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í)際的問題,我們需要不斷分解直到最簡(jiǎn)單的模塊組合,再對(duì)應(yīng)具體的pandas函數(shù)組合。

用處

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

導(dǎo)入庫(kù)

import pandas as pd

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

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

  1. Series

  2. Dataframe

Series

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

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

?# 自定義一個(gè)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可以理解成一個(gè)二維的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個(gè)箱子
  • 目的

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

  • 為什么要分箱?

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

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

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

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

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

  6. 簡(jiǎn)化模型,防止模型過擬合

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

首先,我們要?jiǎng)?chuàng)建sqlalchemy對(duì)象連接MySQL。

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

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

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

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

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

?# 方法1當(dāng)數(shù)據(jù)表不存在時(shí),每次覆蓋整個(gè)表?df.to_sql(name="student", con=engine, if_exists="replace")?# name為sql表名;con為連接,對(duì)應(yīng)engine;if_exists=“replace”表示覆蓋。???# 方法2當(dāng)數(shù)據(jù)表已經(jīng)存在時(shí),追加即可?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)頁(yè)中的表格類數(shù)據(jù)!?# 注意:一般只能處理靜態(tài)網(wǎng)頁(yè);動(dòng)態(tài)網(wǎng)頁(yè)要用selenium?pd.read_html(url)?df.to_html(filename) ???# 剪切板?pd.read_clipboard()?df.to_clipboard() 

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

?# 創(chuàng)建一個(gè)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)會(huì)各國(guó)的獎(jiǎng)牌數(shù)量統(tǒng)計(jì),包括:加權(quán)排名、國(guó)家、金牌數(shù)量、銀牌數(shù)量、銅牌數(shù)量、金牌總計(jì)、獎(jiǎng)牌數(shù)量排名

整體操作

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

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

如果在Excel里,需要翻到最低和最右,而且可能由于溢出無法窮盡;Python可以簡(jiǎn)單的實(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)計(jì)信息:count、mean、std、min、25%、50%、75%、max。

?data.describe()

按列操作

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

查看有哪些列

拿到數(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ī)范需要更改的時(shí)候,Excel里我們需要“找到需要更改的列名——點(diǎn)擊表格——編輯”,pandas我們可以用代碼更改。

?# 把“Gold”名字改成“金牌”?# columns中,第一個(gè)參數(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)計(jì)每列數(shù)據(jù)有多少行,如果在Excel里,我們可能需要翻到最后一頁(yè)。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ù)量

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

?# 注意是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)計(jì)每列數(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)計(jì)每列的最小值:例如,我想看金牌最低的為多少??data.min()
?Rank ? ? ? ? ? ? ? ? ? ? 1?Team/NOC ? ? ? ? Argentina?Gold ? ? ? ? ? ? ? ? ? ? 0?Silver ? ? ? ? ? ? ? ? ? 0?Bronze ? ? ? ? ? ? ? ? ? 0?Total ? ? ? ? ? ? ? ? ?  1?Rank by Total ? ? ? ? ?  1?dtype: object

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

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

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

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

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

除了最基本的量、最大最小值,我們還希望了解每列數(shù)據(jù)的一些基本的統(tǒng)計(jì)特征。例如,平均金牌數(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會(huì)自動(dòng)把非數(shù)字的列給忽視掉,只計(jì)算數(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í)候希望獲得數(shù)據(jù)的階段性情況,例如,我想知道“前25%的人的金牌數(shù)量大約為多少”(從小到大),第75%的人的金牌數(shù)量大約為多少。

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

具體取25%還是75%,取幾個(gè)點(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%時(shí)的金牌為1,說明至少有大約50%的國(guó)家,沒有金牌或只有1枚金牌。

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

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

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

?# 統(tǒng)計(jì)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個(gè)國(guó)家一枚金牌都沒有獲得,有一個(gè)國(guó)家獲得了39枚金牌。

按某列值排序

例如,我們希望數(shù)據(jù)根據(jù)“金牌列”進(jìn)行升序排序;對(duì)應(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

每列的求和

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

?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

累計(jì)和、累計(jì)積、累計(jì)最大值、累計(jì)最小值

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

?# 累計(jì)求和:依次統(tǒng)計(jì)前1、2、3、4、5...n行的累計(jì)和?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ì)積:切忌不能放入字符串進(jìn)去,必須為可計(jì)算的數(shù)值?data.cumprod()???# 累計(jì)最大值?data.cummax()???# 累計(jì)最小值?data.cummin()

新列:列計(jì)算

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

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

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

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

?data.corr()

按行操作

前n行

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

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

后n行

?# 同head?data.tail()

隨機(jī)抽取n行

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

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

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

?data.nlargest(5,"Gold")

返回某列滿足特定值的行

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

?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語(yǔ)言代碼,而regex模塊有24513行C語(yǔ)言代碼,更加強(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í)候我們需要自定義實(shí)現(xiàn)一些個(gè)性化的功能,這時(shí)我們可以通過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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

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

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

    luckyw 評(píng)論0 收藏0
  • 聊聊一行讀研時(shí)最成功的投資

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

    CarterLi 評(píng)論0 收藏0
  • 10個(gè)Python Pandas技巧,使您的工作更有效率

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

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

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

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

    摘要:往期回顧教程實(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ù)分析人員大...

    2501207950 評(píng)論0 收藏0

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

0條評(píng)論

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