欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)—pandas基礎(chǔ)教程

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)—pandas基礎(chǔ)教程

http://yzkb.51969.com/

目錄

pandas數(shù)據(jù)結(jié)構(gòu)

Series結(jié)構(gòu)如下 創(chuàng)建Series對(duì)象 獲取數(shù)據(jù)DataFrame結(jié)構(gòu) 創(chuàng)建DataFrame對(duì)象

DataFrame使用

讀取數(shù)據(jù) 數(shù)據(jù)查看 索引操作

基礎(chǔ)索引 loc 索引和 iloc 索引 重置索引 rename 函數(shù) 賦值修改索引 索引排序 多重索引 嵌套列表創(chuàng)造多重索引 MultiIndex類 MultiIndex.from_tuples():將元組列表轉(zhuǎn)化為MultiIndex MultiIndex.from_arrays():將數(shù)組列表轉(zhuǎn)化為MultiIndex 多重索引查看數(shù)據(jù) 交換分層順序 排序分層 數(shù)據(jù)清洗

處理空值 isnull()檢查空值 notnull()函數(shù) dropna()刪除空值 fiilna()填充空值 ffill()函數(shù) bfill()函數(shù)重復(fù)值的處理 duplicated drop_duplicates異常值的處理更改數(shù)據(jù)類型 數(shù)據(jù)合并

merge()主鍵合并數(shù)據(jù)join() 根據(jù)行索引合并數(shù)據(jù)combine_first()合并重疊數(shù)據(jù) 旋轉(zhuǎn)數(shù)據(jù) groupby()分組聚合

數(shù)據(jù)分組 按列分組 用Series對(duì)象分組 用函數(shù)分組數(shù)據(jù)聚合 用內(nèi)置函數(shù)聚合函數(shù) agg()面向列的聚合 對(duì)每一列數(shù)據(jù)用同一個(gè)函數(shù) 用多種函數(shù)聚合數(shù)據(jù) 對(duì)不同列使用不同的函數(shù) apply()函數(shù)value_counts()和get() 指定某個(gè)元素的個(gè)別操作

查看某列符條件的值刪除某列符條件的值修改某列的某個(gè)數(shù)值 添加數(shù)據(jù)

pandas數(shù)據(jù)結(jié)構(gòu)

Series結(jié)構(gòu)如下

Series 類似于一維數(shù)組的對(duì)象,可以保存任何類型的數(shù)據(jù),由一組數(shù)據(jù)和相關(guān)的索引兩部分組成

Series結(jié)構(gòu)如下

index(索引)element(數(shù)據(jù))0112233445

創(chuàng)建Series對(duì)象

pandas.Series(data=None,index=None,dtype=None,copy=Fales)

data :傳入的數(shù)據(jù)index: 索引,必須是唯一的,且數(shù)據(jù)長(zhǎng)度相同,如沒(méi)有傳入則默認(rèn)生成從0~N的整數(shù)索引dtype :數(shù)據(jù)的類型cope:是否復(fù)制數(shù)據(jù),默認(rèn)為False

創(chuàng)建對(duì)象

# 生成數(shù)據(jù)

print(pandas.Series([1,2,3,4,5]))

# 運(yùn)行返回:(左列為索引,右列為數(shù)據(jù))

0 1

1 2

2 3

3 4

4 5

添加索引

# 添加索引

print(pd.Series(data=['a','b','c','d','e'],index=[1,2,3,4,5]))

# 運(yùn)行返回:(左列為索引,右列為數(shù)據(jù))

a 1

b 2

c 3

d 4

e 5

使用字典(dict)生成數(shù)組

# 鍵為索引,值為數(shù)據(jù)

print(pd.Series({'a':1,'b':2,'c':3,'d':4,'e':5}))

# 運(yùn)行返回:(左列為索引,右列為數(shù)據(jù))

a 1

b 2

c 3

d 4

e 5

獲取數(shù)據(jù)

index獲取索引 和 values獲取數(shù)據(jù)

sr = pd.Series({'a':1,'b':2,'c':3,'d':4,'e':5})

# 獲取索引

print(sr.index)

# 運(yùn)行返回:

Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

# 獲取數(shù)據(jù)

print(sr.values)

# 運(yùn)行返回:

[1 2 3 4 5]

索引數(shù)據(jù)

sr = pd.Series({'a':1,'b':2,'c':3,'d':4,'e':5})

# 按照索引名索引

print(sr['a'])

# 運(yùn)行返回:

1

# 按位置索引

print(sr[3])

# 運(yùn)行返回:

4

DataFrame

DataFrame是一個(gè)類似于二維數(shù)組或表格的對(duì)象,由索引和數(shù)據(jù)組成,于Series不同的是DataFrame有行索引和列索引。

創(chuàng)建DataFrame對(duì)象

pandas.DataFrame(data=None,index=None,columns=None)

data :傳入的數(shù)據(jù)index:行標(biāo)簽,如沒(méi)有傳入則默認(rèn)生成從0~N的整數(shù)索引columns:列表簽,如沒(méi)有傳入則默認(rèn)生成從0~N的整數(shù)索引

列表創(chuàng)建

print(pandas.DataFrame([['a','b','c'],['d','e','f']['g','h','i']]))

# 運(yùn)行返回:

0 1 2

0 a b c

1 d e f

2 g h i

字典創(chuàng)建:

print(pd.DataFrame({"a":[1,2,3],"b":[4,5,6],"c":[7,8,9]})

# 運(yùn)行返回:

a b c

1 4 7

2 5 8

3 6 9

指定索引

# columns 指定列索引

print(pd.DataFrame([['a','b','c'],['d','e','f']],columns=['No1','No2','No3']))

# 運(yùn)行返回:

No1 No2 No3

0 a b c

1 d e f

# 指定行索引

print(pd.DataFrame([['a','b','c'],['d','e','f']],index=['No1','No2']))

# 運(yùn)行返回:

0 1 2

No1 a b c

No2 d e f

DataFrame使用

讀取數(shù)據(jù)

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

# as 是給pandas起別名方便后續(xù)使用

import pandas as pd

導(dǎo)入數(shù)據(jù):

# xxx為文件路徑

df = pd.read_csv(r"xxx") ## 導(dǎo)入csv 文件

df = pd .read_excel(r"xxx") ## 導(dǎo)入excel 文件

導(dǎo)出數(shù)據(jù):

# df 為要導(dǎo)出的數(shù)據(jù)

# xxx為文件路徑

df . to_csv ("xxx") ## 導(dǎo)出為csv 文件

df .to_excel ("xxx") ## 導(dǎo)出為excel 文件

有時(shí)候會(huì)報(bào)錯(cuò)是因?yàn)榫幋a格式的問(wèn)題,主要的編碼格式有 “utf-8” ,“gbk”。 在導(dǎo)入的時(shí)候加上encoding=“編碼格式” 如:pd.read_csv(r"xxx",encoding=“gbk”)

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

維度查看:

# 維度查看

df.shape

每一列數(shù)據(jù)的格式:

# 每一列數(shù)據(jù)的格式:

df.dtypes

某一列格式:

# 某一列格式:

df['B'].dtype

查看某一列的唯一值

# 查看某一列的唯一值:

df['B'].unique()

查看數(shù)據(jù)表的值:

# 查看數(shù)據(jù)表的值:

df.values

查看數(shù)據(jù)表的行索引:

# 查看數(shù)據(jù)表的行索引:

df.index

查看列索引:

# 查看列索引:

df.columns

查看前5行數(shù)據(jù)、后5行數(shù)據(jù):

# 查看前5行數(shù)據(jù)、后5行數(shù)據(jù):

# 括號(hào)內(nèi)加參數(shù),查看指定數(shù)量

df.head() #默認(rèn)前5行數(shù)據(jù)

df.tail() #默認(rèn)后5行數(shù)據(jù)

索引操作

基礎(chǔ)索引

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18]],columns=['a','b','c','d','e','f'])

print(df)

# 運(yùn)行返回:

a b c d e f

0 1 2 3 4 5 6

1 7 8 9 10 11 12

2 13 14 15 16 17 18

# 獲取b列數(shù)據(jù)

print(df["b"])

# 運(yùn)行返回:# b列數(shù)據(jù)

0 2

1 8

2 14

# 獲取不連續(xù)的Series對(duì)象

print(df[["b","d"]]) # 注意是兩個(gè)“[[]]”

# 運(yùn)行返回:

b d

0 2 4

1 8 10

2 14 16

# 使用切片獲取數(shù)據(jù)

# 獲取前兩行的數(shù)據(jù)

print(df[:2])

# 運(yùn)行返回:

a b c d e f

0 1 2 3 4 5 6

1 7 8 9 10 11 12

# 綜合使用

# 先通過(guò)切片獲取前兩行數(shù)據(jù)

# 再通過(guò)不連續(xù)索引獲取b,d列的數(shù)據(jù)

print(df[:2][['b','d']]) # 注意是兩個(gè)“[[]]”

# 運(yùn)行返回:

b d

0 2 4

1 8 10

loc索引 和 iloc索引

loc標(biāo)簽索引 和 iloc位置索引

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4,5,6],[7,8,9,10,11,12]],columns=['a','b','c','d','e','f'])

print(df)

# 運(yùn)行返回:

a b c d e f

0 1 2 3 4 5 6

1 7 8 9 10 11 12

# loc 標(biāo)簽索引

print(df.loc[:,["a","c"]])

# iloc 位置索引

print(df.iloc:,[0,2])

# 上述兩種方式運(yùn)行返回相同:

a c

0 1 3

1 7 9

重置索引

rename 函數(shù)

用字典更改索引

df = pd.DataFrame([[1,2,3,4,5,6],[7,8,9,10,11,12]],columns=['a','b','c','d','e','f'])

print(df)

# 運(yùn)行返回:

a b c d e f

0 1 2 3 4 5 6

1 7 8 9 10 11 12

# 可添加 inplace=True 參數(shù),更改源數(shù)據(jù)

print(df.rename(index={0:'A',1:'B'}))

# 運(yùn)行返回:

a b c d e f

A 1 2 3 4 5 6

B 7 8 9 10 11 12

# 可添加 inplace=True 參數(shù),更改源數(shù)據(jù)

print(df.rename(columns={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}))

# 運(yùn)行返回:

1 2 3 4 5 6

0 1 2 3 4 5 6

1 7 8 9 10 11 12

賦值修改索引

給列索引,行索引賦值來(lái)修改索引

df = pd.DataFrame([[1,2,3,4,5,6],[7,8,9,10,11,12]],columns=['a','b','c','d','e','f'])

print(df)

# 運(yùn)行返回;

a b c d e f

0 1 2 3 4 5 6

1 7 8 9 10 11 12

# 給 index 賦值

df.index = ["A", "B"]

print(df)

# 運(yùn)行返回:

a b c d e f

A 1 2 3 4 5 6

B 7 8 9 10 11 12

# 給 columns 賦值

df.columns = [1,2,3,4,5,6]

# 運(yùn)行返回:

1 2 3 4 5 6

0 1 2 3 4 5 6

1 7 8 9 10 11 12

索引排序

df = pd.DataFrame([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]],index=[4,2,3,1])

print(df)

# 運(yùn)行返回:

0 1 2 3 4

4 1 2 3 4 5

2 6 7 8 9 10

3 11 12 13 14 15

1 16 17 18 19 20

# ascending 參數(shù)是否為升序

print(df.sort_index(ascending=True))

# 運(yùn)行返回:

0 1 2 3 4

1 16 17 18 19 20

2 6 7 8 9 10

3 11 12 13 14 15

4 1 2 3 4 5

# ascending=False 降序排列

print(df.sort_index(ascending=False))

# 運(yùn)行返回:

0 1 2 3 4

4 1 2 3 4 5

3 11 12 13 14 15

2 6 7 8 9 10

1 16 17 18 19 20

多重索引

嵌套列表創(chuàng)造多重索引

# 創(chuàng)建表

# 注意必須保持列表長(zhǎng)度一致

df = pd.DataFrame(

[[1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16],[17,18]],

index=[["A","A","A","B","B","B","c","c","c"],['a','b','c','d','e','f','g','h','i']]

)

print(df)

# 運(yùn)行返回:

0 1

A a 1 2

b 3 4

c 5 6

B d 7 8

e 9 10

f 11 12

c g 13 14

h 15 16

i 17 18

print(df.loc["A"])

# 運(yùn)行返回:

0 1

a 1 2

b 3 4

c 5 6

MultiIndex類

導(dǎo)入庫(kù) from pandas import MultiIndex

MultiIndex.from_tuples():將元組列表轉(zhuǎn)化為MultiIndexMultiIndex.from_arrays():將數(shù)組列表轉(zhuǎn)化為MultiIndexMultiIndex.from_product():從多個(gè)集合的笛卡乘積中創(chuàng)建一個(gè)MultiIndex

MultiIndex.from_tuples():將元組列表轉(zhuǎn)化為MultiIndex

import pandas as pd

from pandas import MultiIndex

# 先創(chuàng)建一個(gè)MultiIndex對(duì)象

mul_index = MultiIndex.from_tuples(

# 元組的第一個(gè)元素是外層索引,第二個(gè)元素是內(nèi)層索引

tuples=[('A','a1'),('A','a2'),('B','b1'),('B','b2')],

# names傳入列表,表示兩層索引的名稱。

names=["外層索引","內(nèi)層索引"]

)

# 再創(chuàng)建個(gè)DataFrame,把剛創(chuàng)建的MultiIndex對(duì)象傳給index。

df = pd.DataFrame([[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]],index=mul_index)

print(df)

# 運(yùn)行返回:

0 1 2 3

外層索引 內(nèi)層索引

A a1 1 1 1 1

a2 2 2 2 2

B b1 3 3 3 3

b2 4 4 4 4

MultiIndex.from_arrays():將數(shù)組列表轉(zhuǎn)化為MultiIndex

import pandas as pd

from pandas import MultiIndex

df = MultiIndex.from_arrays(

# arrays傳入一個(gè)嵌套列表,表示多重軸索引。

# 第一個(gè)列表是外層索引,第二個(gè)是內(nèi)層索引。

arrays=[['A','A','B','B'],['a1','a2','b1','b2']],

# names傳入列表,表示兩層索引的名稱。

names=["外層索引","內(nèi)層索引"]

)

df = pd.DataFrame([[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]],index=df)

print(df)

# 運(yùn)行返回:

0 1 2 3

外層索引 內(nèi)層索引

A a1 1 1 1 1

a2 2 2 2 2

B b1 3 3 3 3

b2 4 4 4 4

多重索引查看數(shù)據(jù)

import pandas as pd

from pandas import MultiIndex

df = MultiIndex.from_arrays(

arrays=[['A','A','B','B'],['a1','a2','b1','b2']],

names=["外層索引","內(nèi)層索引"]

)

df = pd.DataFrame([[1,2,3,4],[5,6,7,8],[11,12,13,14],[15,16,17,18]],index=df)

print(df)

# 運(yùn)行返回:

0 1 2 3

外層索引 內(nèi)層索引

A a1 1 2 3 4

a2 5 6 7 8

B b1 11 12 13 14

b2 15 16 17 18

# 用外索引查看數(shù)據(jù)

# 查看“A”的數(shù)據(jù)

print(df.loc["A"])

# 運(yùn)行返回:

0 1 2 3

內(nèi)層索引

a1 1 2 3 4

a2 5 6 7 8

# 用內(nèi)索引查看數(shù)據(jù)

# 查看a1的數(shù)據(jù)

print(df.loc["A","a2"])

# 或著df.loc["B"].loc["b1"]也行

# 返回的是一個(gè)Series類型的對(duì)象

# 運(yùn)行返回:

0 5

1 6

2 7

3 8

Name: (A, a2), dtype: int64

交換分層順序

swaplevel() 函數(shù)

print(df)

# 運(yùn)行返回:

0 1 2 3

外層索引 內(nèi)層索引

A a1 1 2 3 4

a2 5 6 7 8

B b1 11 12 13 14

b2 15 16 17 18

print(df.swaplevel())

# 運(yùn)行返回:

0 1 2 3

內(nèi)層索引 外層索引

a1 A 1 2 3 4

a2 A 5 6 7 8

b1 B 11 12 13 14

b2 B 15 16 17 18

排序分層

sort_index()

df = MultiIndex.from_arrays(

arrays=[['1','2','3','4'],['44','33','22','11']],

names=["外層索引","內(nèi)層索引"]

)

df = pd.DataFrame([[1,2,3,4],[5,6,7,8],[11,12,13,14],[15,16,17,18]],index=df)

print(df):

# 運(yùn)行返回:

0 1 2 3

外層索引 內(nèi)層索引

1 44 1 2 3 4

2 33 5 6 7 8

3 22 11 12 13 14

4 11 15 16 17 18

# ascending參數(shù)True升序,F(xiàn)ales降序

print(df.sort_index(ascending=False))

# 運(yùn)行返回:

0 1 2 3

外層索引 內(nèi)層索引

4 11 15 16 17 18

3 22 11 12 13 14

2 33 5 6 7 8

1 44 1 2 3 4

數(shù)據(jù)清洗

處理空值

isnull()檢查空值

import pandas as pd

df = pd.DataFrame([[1,2,3,4],[4,5,None,7],[8,9,10,11]])

print(df)

# 運(yùn)行返回:

0 1 2 3

0 1 2 3.0 4

1 4 5 NaN 7

2 8 9 10.0 11

print(df.isnull())

# 運(yùn)行返回:

0 1 2 3

0 False False False False

1 False False True False

2 False False False False

notnull()函數(shù)

notnul()函數(shù)的功能與isnull()函數(shù)一樣 不同點(diǎn)在于isnull()遇到空值返回的是False,而notnull()返回的是True。

dropna()刪除空值

dropna() 主要用于刪除空值和缺失值的行或列。axis:確定過(guò)濾行或列 0或index,刪除包含缺失值的行,默認(rèn)為0 1或colunmns:刪除包含缺失值的列how: 確定過(guò)濾的標(biāo)準(zhǔn) any :默認(rèn)值,如果存在NaN值,則刪除該行或該列。 all:如果所有值都是NaN,則刪除改行或該列threshl:表示有效數(shù)據(jù)(非空值)至少要多少個(gè)才保留該列或行,否則就刪除該行或列。subset:在的特定的列中尋找空值。inplace:是否修改源數(shù)據(jù)。

df = pd.DataFrame([[1,2,None,4],[4,5,None,7],[8,9,10,11]],index=['a','b','c'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 NaN 4

b 4 5 NaN 7

c 8 9 10.0 11

# 刪除有空值的行

print(df.dropna(axis=0))

# 運(yùn)行返回:

0 1 2 3

c 8 9 10.0 11

# 刪除用空值的列

print(df.dropna(axis=1))

# 運(yùn)行返回:

0 1 3

a 1 2 4

b 4 5 7

c 8 9 11

# 刪除有效值小于2的值:

print(df.dropna(axis=1,thresh=2))

# 運(yùn)行返回:

0 1 3

a 1 2 4

b 4 5 7

c 8 9 11

fillna()填充空值

value:用來(lái)填充的數(shù)據(jù)limit:可以連續(xù)傳播的最大數(shù)量,默認(rèn)為None。

df = pd.DataFrame([[1,2,None,4],[4,5,None,7],[8,9,10,11]],index=['a','b','c'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 NaN 4

b 4 5 NaN 7

c 8 9 10.0 11

# 填充空值

print(df.fillna(value="a"))

# 運(yùn)行返回:

0 1 2 3

a 1 2 a 4

b 4 5 a 7

c 8 9 10.0 11

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[4,5,None,7],[8,9,10,None]],index=['a','b','c'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3.0 4.0

b 4 5 NaN 7.0

c 8 9 10.0 NaN

# 用字典指定列填充

# 鍵為列標(biāo)簽,字典的值為要填充的值

print(df.fillna({2:10,3:20}))

# 運(yùn)行返回:

0 1 2 3

a 1 2 3.0 4.0

b 4 5 10.0 7.0

c 8 9 10.0 20.0

ffill()函數(shù)

將前一個(gè)有效數(shù)據(jù)向后傳播,填充空值

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[4,5,None,7],[8,9,10,None],[11,12,13,None]],index=['a','b','c','d'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3.0 4.0

b 4 5 NaN 7.0

c 8 9 10.0 NaN

d 11 12 13.0 NaN

# 將前一個(gè)有效數(shù)據(jù)向后傳播,填充空值

df = df.ffill()

# 運(yùn)行返回:

0 1 2 3

a 1 2 3.0 4.0

b 4 5 3.0 7.0

c 8 9 10.0 7.0

d 11 12 13.0 7.0

bfill()函數(shù)

將后一個(gè)有效數(shù)據(jù)向前傳播,填充空值

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[4,5,None,7],[8,9,10,None],[11,12,13,None]],index=['a','b','c','d'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3.0 4.0

b 4 5 NaN 7.0

c 8 9 10.0 NaN

d 11 12 13.0 14.0

# 將后一個(gè)有效數(shù)據(jù)向前傳播,填充空值

print(df.dfill())

# 運(yùn)行返回:

0 1 2 3

a 1 2 3.0 4.0

b 4 5 10.0 7.0

c 8 9 10.0 14.0

d 11 12 13.0 14.0

重復(fù)值的處理

duplicated

subset:用于指定識(shí)別重復(fù)的列標(biāo)簽,默認(rèn)識(shí)別所有的列,注意:要全部列都重復(fù)才會(huì)標(biāo)記。keep:參數(shù)

first:從前向后查找,除第一次以外,其余都標(biāo)記為重復(fù),默認(rèn)為此選項(xiàng)。last: 從后向前查找,除最后一次以外,其余都標(biāo)記為重復(fù)。False:所有相同的都標(biāo)記為重復(fù)。

df = pd.DataFrame([[1,2,3,4],[1,5,8,7],[1,9,10,11],[11,12,13,14],[11,12,13,14]],index=['a','b','c','d','f'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 1 5 8 7

c 1 9 10 11

d 11 12 13 14

f 11 12 13 14

# 默認(rèn)識(shí)別所有的列

print(df.duplicated())

# 運(yùn)行返回:

a False

b False

c False

d False

f True

# 識(shí)別指定值的重復(fù)值

print(df.duplicated(subset=0))

# 運(yùn)行返回:

a False

b True

c True

d False

f True

keep

df = pd.DataFrame([[1,2,3,4],[1,5,8,7],[1,9,10,11],[11,12,13,14]],index=['a','b','c','d'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 1 5 8 7

c 1 9 10 11

d 11 12 13 14

# first()

# 從前向后查找,保留第一個(gè)值

print(df.duplicated(subset=0,keep="first"))

# 運(yùn)行返回:

a False

b True

c True

d False

# last()

# 從后向前查找,保留最后值

print(df.duplicated(subset=0,keep="last"))

# 運(yùn)行返回:

a True

b True

c False

d False

# False

print(df.duplicated(subset=0,keep=False))

# 運(yùn)行返回:

a True

b True

c True

d False

drop_duplicates

刪除重復(fù)值

subset:用于指定識(shí)別重復(fù)的一行刪除,默認(rèn)識(shí)別所有的列,注意:要全部列都重復(fù)才會(huì)刪除。keep:參數(shù)

first:從前向后查找,除第一次以外,其余都標(biāo)記為重復(fù),默認(rèn)為此選項(xiàng)。last: 從后向前查找,除最后一次以外,其余都標(biāo)記為重復(fù)。False:所有相同的都標(biāo)記為重復(fù)。

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[1,5,8,7],[1,9,10,11],[11,12,13,14]],index=['a','b','c','d'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 1 5 8 7

c 1 9 10 11

d 11 12 13 14

print(df.drop_duplicates(subset=0,keep="first"))

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

d 11 12 13 14

print(df.drop_duplicates(subset=0,keep="last"))

# 運(yùn)行返回:

0 1 2 3

c 1 9 10 11

d 11 12 13 14

print(df.drop_duplicates(subset=0,keep=False))

# 運(yùn)行返回:

0 1 2 3

d 11 12 13 14

異常值的處理

正態(tài)分布3 "3σ"法則μ為平均值,σ為方差

數(shù)值分布在μ?σ

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

dtypes函數(shù)查看數(shù)據(jù)的類型

astyp函數(shù)強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型

dtype參數(shù):表示數(shù)據(jù)要轉(zhuǎn)換成的類型errors參數(shù):轉(zhuǎn)換錯(cuò)誤的處理的方法,有 raise 或 errors 兩種參數(shù)。

raise:碰到錯(cuò)誤時(shí)允許發(fā)生異常,就會(huì)報(bào)錯(cuò)。errors:就會(huì)跳過(guò)異常,保持原來(lái)數(shù)據(jù)格式,繼續(xù)轉(zhuǎn)換后面的數(shù)據(jù)。

df = pd.DataFrame({"a":['b',6,4,5,6,5,4,5],"b":[5,6,4,5,6,5,4,5]})

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

print(df.dtypes)

# 運(yùn)行返回:

a object

b int64

# 查看數(shù)據(jù)

print(df)

# 運(yùn)行返回:

a b

0 b 5

1 6 6

2 4 4

3 5 5

4 6 6

5 5 5

6 4 4

7 5 5

# 將b列轉(zhuǎn)換成"float64"類型

print(df["b"].astype(dtype="float64"))

# 運(yùn)行返回:

0 5.0

1 6.0

2 4.0

3 5.0

4 6.0

5 5.0

6 4.0

7 5.0

# 如果將字符("a"列)轉(zhuǎn)換為浮點(diǎn)數(shù)(“float64”)則會(huì)報(bào)錯(cuò)

print(df["b"].astype(dtype="float64",errors="raise"))

# 無(wú)法將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)

# ValueError: could not convert string to float: 'b'

# 將字符("a"列)轉(zhuǎn)換成”float64“格式,把errors參數(shù)設(shè)置為"ignore",跳過(guò)錯(cuò)誤。

df = df.astype(dtype="float64",errors="ignore")

print(type(df[0]))

print(type(df[1]))

# 運(yùn)行返回:

數(shù)據(jù)合并

concat()軸向堆疊數(shù)據(jù)

axis :表示連接的軸向,0或1。join:表示連接的方式,inner為內(nèi)連接,outer為外連接。ignore_index:接收布爾值,默認(rèn)為False,True表示清除現(xiàn)有索引并重置索引值。keys:接收序列,添加最外層索引。

# 創(chuàng)建列表

a = pd.DataFrame({"a":[1,2,3,4,5],"b":[6,7,8,9,10]})

b = pd.DataFrame({"c":[11,12,13,14,15],"d":[16,17,18,19,20]})

# 查看數(shù)據(jù)

print(a)

print(b)

# 運(yùn)行返回:

a b

0 1 6

1 2 7

2 3 8

3 4 9

4 5 10

c d

0 11 16

1 12 17

2 13 18

3 14 19

4 15 20

# axis = 0

# 表示連接的軸向,0或1

print(pd.concat([a,b],axis=0))

# 運(yùn)行返回:

a b c d

0 1.0 6.0 NaN NaN

1 2.0 7.0 NaN NaN

2 3.0 8.0 NaN NaN

3 4.0 9.0 NaN NaN

4 5.0 10.0 NaN NaN

0 NaN NaN 11.0 16.0

1 NaN NaN 12.0 17.0

2 NaN NaN 13.0 18.0

3 NaN NaN 14.0 19.0

4 NaN NaN 15.0 20.0

# axis = 1

# 表示連接的軸向,0或1

print(pd.concat([a,b],axis=1))

# 運(yùn)行返回:

a b c d

0 1 6 11 16

1 2 7 12 17

2 3 8 13 18

3 4 9 14 19

4 5 10 15 20

# ignore_index = False

print(pd.concat([a,b],axis=0,ignore_index=False))

# 運(yùn)行返回:

a b c d

0 1.0 6.0 NaN NaN

1 2.0 7.0 NaN NaN

2 3.0 8.0 NaN NaN

3 4.0 9.0 NaN NaN

4 5.0 10.0 NaN NaN

0 NaN NaN 11.0 16.0

1 NaN NaN 12.0 17.0

2 NaN NaN 13.0 18.0

3 NaN NaN 14.0 19.0

4 NaN NaN 15.0 20.0

# ignore_index = True

# True表示清除現(xiàn)有索引并重置索引值。

print(pd.concat([a,b],axis=0,ignore_index=True))

# 運(yùn)行返回:

a b c d

0 1.0 6.0 NaN NaN

1 2.0 7.0 NaN NaN

2 3.0 8.0 NaN NaN

3 4.0 9.0 NaN NaN

4 5.0 10.0 NaN NaN

5 NaN NaN 11.0 16.0

6 NaN NaN 12.0 17.0

7 NaN NaN 13.0 18.0

8 NaN NaN 14.0 19.0

9 NaN NaN 15.0 20.0

# 添加 keys = ['A','B']

# 當(dāng)axis = 0 時(shí)

# keys:接收序列,添加最外層索引。

print(pd.concat([a,b],axis=0,keys=['A','B']))

# 運(yùn)行返回:

a b c d

A 0 1.0 6.0 NaN NaN

1 2.0 7.0 NaN NaN

2 3.0 8.0 NaN NaN

3 4.0 9.0 NaN NaN

4 5.0 10.0 NaN NaN

B 0 NaN NaN 11.0 16.0

1 NaN NaN 12.0 17.0

2 NaN NaN 13.0 18.0

3 NaN NaN 14.0 19.0

4 NaN NaN 15.0 20.0

# 當(dāng)axis = 1 時(shí)

# keys:接收序列,添加最外層索引

print(pd.concat([a,b],axis=1,keys=['A','B']))

# 運(yùn)行返回:

A B

a b c d

0 1 6 11 16

1 2 7 12 17

2 3 8 13 18

3 4 9 14 19

4 5 10 15 20

join:表示連接的方式,inner為內(nèi)連接,outer為外連接。

a = pd.DataFrame({"a":[1,2,3,4,5],"b":[6,7,8,9,10]})

b = pd.DataFrame({"b":[6,7,8,9,10],"c":[11,12,13,14,15]})

# 查看數(shù)據(jù)

print(a)

print(b)

# 運(yùn)行返回:

a b

0 1 6

1 2 7

2 3 8

3 4 9

4 5 10

b c

0 6 11

1 7 12

2 8 13

3 9 14

4 10 15

# join="inner" 表示內(nèi)連接,僅返回交集(重疊)的部分。

print(pd.concat([a,b],axis=0,join="inner"))

# 運(yùn)行返回:

b

0 6

1 7

2 8

3 9

4 10

0 6

1 7

2 8

3 9

4 10

# join="outer" 表示外連接,返回兩組數(shù)據(jù)的并集部分。

print(pd.concat([a,b],axis=0,join="outer"))

# 運(yùn)行返回:

a b c

0 1.0 6 NaN

1 2.0 7 NaN

2 3.0 8 NaN

3 4.0 9 NaN

4 5.0 10 NaN

0 NaN 6 11.0

1 NaN 7 12.0

2 NaN 8 13.0

3 NaN 9 14.0

4 NaN 10 15.0

merge()主鍵合并數(shù)據(jù)

left:參與合并的左側(cè)DataFrame對(duì)象 right:參與合并的右側(cè)DataFrame對(duì)象 how:表示連接方法。 no:用于連接的鍵

a = pd.DataFrame({"a":[1,2,3,4,5],"b":[6,7,8,9,10]})

b = pd.DataFrame({"b":[6,7,8,9,10],"c":[11,12,13,14,15]})

# 查看數(shù)據(jù)

print(a)

print(b)

# 運(yùn)行返回:

a b

0 1 6

1 2 7

2 3 8

3 4 9

4 5 10

b c

0 6 11

1 7 12

2 8 13

3 9 14

4 10 15

# left:參與合并的左側(cè)DataFrame對(duì)象

# right:參與合并的右側(cè)DataFrame對(duì)象

# left=a,right=b

print(pd.merge(left=a,right=b))

# 運(yùn)行返回:

a b c

0 1 6 11

1 2 7 12

2 3 8 13

3 4 9 14

4 5 10 15

# left=b,right=a

print(pd.merge(left=b,right=a))

b c a

0 6 11 1

1 7 12 2

2 8 13 3

3 9 14 4

4 10 15 5

on:用于連接的列名,必須存在于左右兩個(gè)DataFrame中對(duì)象中。

# 創(chuàng)建數(shù)組

a = pd.DataFrame({"key":[1,2,3,4,5],"a":[1,2,3,4,5],"b":[6,7,8,9,10]})

b = pd.DataFrame({"key":[1,2,3,4,5],"b":[6,7,8,9,10],"c":[11,12,13,14,15]})

print(a)

print(b)

# 運(yùn)行返回:

key a b

0 1 1 6

1 2 2 7

2 3 3 8

3 4 4 9

4 5 5 10

key b c

0 1 6 11

1 2 7 12

2 3 8 13

3 4 9 14

4 5 10 15

# 設(shè)置 on = ["key","b"]

print(pd.merge(left=a,right=,on=["key","b"]))

# 運(yùn)行返回:

key a b c

0 1 1 6 11

1 2 2 7 12

2 3 3 8 13

3 4 4 9 14

4 5 5 10 15

join() 根據(jù)行索引合并數(shù)據(jù)

no:用于連接列名。 how:可以從 left,right,outer,inner 中選一個(gè)。 sort:接收布爾值,對(duì)合并的數(shù)據(jù)進(jìn)行排序。

how

inner取行索引的交集outer取行索引的并集left使用左邊df的行索引right使用右邊df的行索引

# 創(chuàng)建數(shù)組

a = pd.DataFrame({"key":[1,2,3,4,5],"a":[1,2,3,4,5]},index=[1,2,3,4,5])

b = pd.DataFrame({"b":[6,7,8,9,10],"c":[11,12,13,14,15]},index=[1,2,3,4,6])

print(a)

# 運(yùn)行返回:

key a

1 1 1

2 2 2

3 3 3

4 4 4

5 5 5

print(b)

# 運(yùn)行返回:

b c

1 6 11

2 7 12

3 8 13

4 9 14

6 10 15

# inner 取行索引的交集

print(a.join(b,how="inner"))

# 運(yùn)行返回:

key a b c

1 1 1 6 11

2 2 2 7 12

3 3 3 8 13

4 4 4 9 14

# outer 取行索引的并集

print(a.join(b,how="outer"))

# 運(yùn)行返回:

key a b c

1 1.0 1.0 6.0 11.0

2 2.0 2.0 7.0 12.0

3 3.0 3.0 8.0 13.0

4 4.0 4.0 9.0 14.0

5 5.0 5.0 NaN NaN

6 NaN NaN 10.0 15.0

# left 使用左邊df的行索引

print(a.join(b,how="left"))

# 運(yùn)行返回:

key a b c

1 1 1 6.0 11.0

2 2 2 7.0 12.0

3 3 3 8.0 13.0

4 4 4 9.0 14.0

5 5 5 NaN NaN

# right 使用右邊df的行索引

print(a.join(b,how="right"))

# 運(yùn)行返回:

key a b c

1 1.0 1.0 6 11

2 2.0 2.0 7 12

3 3.0 3.0 8 13

4 4.0 4.0 9 14

6 NaN NaN 10 15

combine_first()合并重疊數(shù)據(jù)

a = pd.DataFrame({'A':[None,1,2,3],'B':[None,2,None,4],'key':[1,2,3,4]})

b = pd.DataFrame({"A":[6,7,8],"B":[11,12,13]},)

print(a)

# 運(yùn)行返回:

A B key

0 NaN NaN 1

1 1.0 2.0 2

2 2.0 NaN 3

3 3.0 4.0 4

print(b)

# 運(yùn)行返回:

A B

0 6 11

1 7 12

2 8 13

# 合并重疊數(shù)據(jù)

print(a.combine_first(b))

A B key

0 6.0 11.0 1

1 1.0 2.0 2

2 2.0 13.0 3

3 3.0 4.0 4

旋轉(zhuǎn)數(shù)據(jù)

stack() 函數(shù)

stack() 可以將數(shù)據(jù)的列旋轉(zhuǎn)成行

level:默認(rèn)為-1表示操作內(nèi)層索引,0表示操作外層索引。dropna:傳入布爾值,表示是否將旋轉(zhuǎn)后的空值刪除,默認(rèn)為刪除。

a = pd.DataFrame({'A':[None,1,2,3],'B':[None,2,None,4],'key':[1,2,3,4]})

print(a)

# 運(yùn)行返回:

A B key

0 NaN NaN 1

1 1.0 2.0 2

2 2.0 NaN 3

3 3.0 4.0 4

# stack()可以將數(shù)據(jù)的列旋轉(zhuǎn)成行

print(a.stack(dropna=False))

# 運(yùn)行返回:

0 A NaN

B NaN

key 1.0

1 A 1.0

B 2.0

key 2.0

2 A 2.0

B NaN

key 3.0

3 A 3.0

B 4.0

key 4.0

unstack() 函數(shù)

unstack() 可以將數(shù)據(jù)的列索引旋轉(zhuǎn)成行索引

level:默認(rèn)為-1表示操作內(nèi)層索引,0表示操作外層索引。fill_values:可以將旋轉(zhuǎn)產(chǎn)生的空值,指定數(shù)據(jù)填充。

a = pd.DataFrame({'A':[None,1,2,3],'B':[None,2,None,4],'key':[1,2,3,4]})

print(a)

# 運(yùn)行返回:

A B key

0 NaN NaN 1

1 1.0 2.0 2

2 2.0 NaN 3

3 3.0 4.0 4

# unstack()可以將數(shù)據(jù)的列索引旋轉(zhuǎn)成行索引

print(a.unstack())

# 運(yùn)行返回:

A 0 NaN

1 1.0

2 2.0

3 3.0

B 0 NaN

1 2.0

2 NaN

3 4.0

key 0 1.0

1 2.0

2 3.0

3 4.0

pivot() 軸向旋轉(zhuǎn)

index:用于創(chuàng)建新的DataFrame對(duì)象的行索引,如果未設(shè)置,則使用原DataFrame對(duì)象的索引。 columns:用于創(chuàng)建新的DataFrame對(duì)象中的值。 values:用于填充新的DataFrame對(duì)象的值。

a = pd.DataFrame({"出售日期":['5月25日','5月25日','5月25日','6月18日','6月18日','6月18日'],"商品名稱":['榮耀','小米','oppo','榮耀','小米','oppo'],"價(jià)格":[999,1399,1399,800,1200,1250]})

print(a)

# 運(yùn)行返回:

出售日期 商品名稱 價(jià)格

0 5月25日 榮耀 999

1 5月25日 小米 1399

2 5月25日 oppo 1399

3 6月18日 榮耀 800

4 6月18日 小米 1200

5 6月18日 oppo 1250

# 重新組織數(shù)組

print(a.pivot(index="出售日期",columns="商品名稱",values="價(jià)格"))

# 運(yùn)行返回:

商品名稱 oppo 小米 榮耀

出售日期

5月25日 1399 1399 999

6月18日 1250 1200 800

groupby()分組聚合

數(shù)據(jù)分組

按列分組

a = pd.DataFrame({

"key":['c','b','c','a','b','b','a','c','a'],

"data":[2,4,6,8,10,1,144,16,18]

})

print(a)

# 運(yùn)行返回:

key data

0 c 2

1 b 4

2 c 6

3 a 8

4 b 10

5 b 1

6 a 144

7 c 16

8 a 18

# 讓df對(duì)象按key列分組

print(a.groupby("key"))

# 運(yùn)行返回:得到一個(gè)可迭代代對(duì)象

# 用for循環(huán)遍歷

for i in a.groupby("key"):

print(i)

# 運(yùn)行返回:

('a', key data

3 a 8

6 a 144

8 a 18)

('b', key data

1 b 4

4 b 10

5 b 1)

('c', key data

0 c 2

2 c 6

7 c 16)

用Series對(duì)象分組

a = pd.DataFrame({

"key":['c','b','c','a','b','b','a','c','a'],

"data":[2,4,6,8,10,1,144,16,18]

})

print(a)

# 運(yùn)行返回:

key data

0 c 2

1 b 4

2 c 6

3 a 8

4 b 10

5 b 1

6 a 144

7 c 16

8 a 18

# 用Series對(duì)象分組

# 創(chuàng)建Series對(duì)象

s = pd.Series(['a','b','c','c','b','a','d','d','d'])

# 分組

for i in a.groupby(s):

print(i)

# 運(yùn)行返回:

('a', key data

0 c 2

5 b 1)

('b', key data

1 b 4

4 b 10)

('c', key data

2 c 6

3 a 8)

('d', key data

6 a 144

7 c 16

8 a 18)

# 傳入的Series對(duì)象中,相同字段參數(shù)的對(duì)應(yīng)行在一組。

# 列表中'a'對(duì)應(yīng)索引0和5,則第0行和第5行在一組。

# 長(zhǎng)度不相等的Series對(duì)象分組

# 創(chuàng)建Series對(duì)象

s = pd.Series(['a','b','a','b'])

# 分組

for i in a.groupby(s):

print(i)

# 運(yùn)行返回:

('a', key data

0 c 2

2 c 6)

('b', key data

1 b 4

3 a 8)

# 在長(zhǎng)度不同相等時(shí)

# 只有4行數(shù)據(jù),則只用分組前4行.

# 列表中'a'對(duì)應(yīng)索引0和2,則第0行和第2行在一組。

用函數(shù)分組

# 創(chuàng)建數(shù)組

a = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15]

},index=['a','bb','ccc','ddd','e'])

# 查看數(shù)組

print(a)

# 運(yùn)行返回:

A B C

a 1 6 11

bb 2 7 12

ccc 3 8 13

ddd 4 9 14

e 5 10 1

# 用len函數(shù)分組

for i in a.groupby(len):

print(i)

# 運(yùn)行返回:

(1, A B C

a 1 6 11

e 5 10 15)

(2, A B C

bb 2 7 12)

(3, A B C

ccc 3 8 13

ddd 4 9 14)

# 用len函數(shù)分組,就以行索引的長(zhǎng)度分組,則索引長(zhǎng)度一樣的分在一組。

# len()函數(shù)對(duì)行索引執(zhí)行求長(zhǎng)度的操作,返回行索引的長(zhǎng)度,長(zhǎng)度一致的一組。

數(shù)據(jù)聚合

用內(nèi)置函數(shù)聚合函數(shù)

sum()計(jì)算每組的總和。mean()計(jì)算每組的平均值。count()計(jì)算每組的非空值數(shù)量(不包括NaN)。max()找出每組的最大值。min()找出每組的最小值。std()計(jì)算每組的標(biāo)準(zhǔn)差。var()計(jì)算每組的方差。median()計(jì)算每組的中位數(shù)。prod()計(jì)算每組的乘積。first() 和 last()分別返回每組的第一個(gè)和最后一個(gè)值(按索引順序)。nunique()返回每組的唯一值數(shù)量。size()返回每組的數(shù)量。

a = pd.DataFrame({

"key":['c','b','c','a','b','b','a','c','a'],

"data":[2,4,6,8,10,1,144,16,18]

})

print(a)

# 運(yùn)行返回:

key data

0 c 2

1 b 4

2 c 6

3 a 8

4 b 10

5 b 1

6 a 144

7 c 16

8 a 18

# 用列分組

# 按key列分組,求每個(gè)分組的平均值

print(a.groupby("key").mean())

# 運(yùn)行返回:

data

key

a 56.666667

b 5.000000

c 8.000000

agg()面向列的聚合

func:表示用于聚合數(shù)據(jù)的函數(shù),可以是單個(gè)函數(shù)或函數(shù)列表。axis:表示函數(shù)用于軸的方向,默認(rèn)為0。

對(duì)每一列數(shù)據(jù)用同一個(gè)函數(shù)

a = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(a)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# dict():轉(zhuǎn)化成列表

# 按key列分組

print(dict([x for x in a.groupby("key")]))

#運(yùn)行返回:

{'a': A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a, 'b': A B C D key

3 4 9 14 2 b

4 5 10 15 1 b}

# 輸出a組數(shù)據(jù)

print(dict([x for x in a.groupby("key")])["a"])

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

# 求每個(gè)分組的值

print(a.groupby("key").agg(sum))

# 運(yùn)行返回:

A B C D

key

a 6 21 36 12

b 9 19 29 3

用多種函數(shù)聚合數(shù)據(jù)

a = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(a)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 用兩種數(shù)據(jù)聚合,向agg()中傳入列表。

print(a.groupby("key").agg([sum,len]))

# 運(yùn)行返回:

A A B B C C D D

sum len sum len sum len sum len

key

a 6 3 21 3 36 3 12 3

b 9 2 19 2 29 2 3 2

# 生成的DataFrame對(duì)象有兩層索引,內(nèi)層索引為傳入的len和sum。

對(duì)不同列使用不同的函數(shù)

a = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(a)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 用字典格式傳入函數(shù)

# 字典的鍵為列,值為要傳入的函數(shù):{"列名":"函數(shù)名"}

print(a.groupby("key").agg({"A":'sum',"B":'max',"C":'mean'}))

# 運(yùn)行返回:

A B C

key

a 6 8 12.0

b 9 10 14.5

apply()函數(shù)

func:表示用于某行或某列的函數(shù)。axis:表示函數(shù)用于軸的方向,默認(rèn)為0。

# 創(chuàng)建數(shù)組

a = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(a)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 定義一個(gè)函數(shù),將每個(gè)元素加10。

def jia(a):

return a.iloc[:,:4] + 10

# 用apply()函數(shù)將定義的jia()函數(shù)應(yīng)用到列表中。

print(a.groupby("key").apply(jia))

# 運(yùn)行返回:

A B C D

key

a 0 11 16 21 15

1 12 17 22 14

2 13 18 23 13

b 3 14 19 24 12

4 15 20 25 11

數(shù)據(jù)獲取

value_counts() 函數(shù)能夠快速提供數(shù)據(jù)每個(gè)值出現(xiàn)的次數(shù)

get() 函數(shù)在分組后直接查看想要的組

import pandas as pd

df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6],"C":[7,8,9],"D":["a","a","b"]})

print(df)

# 運(yùn)行返回:

A B C D

0 1 4 7 a

1 2 5 8 a

2 3 6 9 b

# 得到一個(gè)可迭代對(duì)象

print(df.groupby("D"))

# 運(yùn)行返回

[print(i) for i in df.groupby("D")]

# 運(yùn)行返回:

('a', A B C D

0 1 4 7 a

1 2 5 8 a)

('b', A B C D

2 3 6 9 b)

# value_counts()

# 該函數(shù)能夠快速提供數(shù)據(jù)每個(gè)值出現(xiàn)的次數(shù)

print(df.groupby("D").value_counts())

# 運(yùn)行返回:

D A B C

a 1 4 7 1

2 5 8 1

b 3 6 9 1

print(df.groupby("D")["A"].value_counts())

# 運(yùn)行返回:

D A

a 1 1

2 1

b 3 1

# get()

# 在分組后直接查看想要的組

df = df.groupby("D")["A"].value_counts()

print(df.get("a"))

A

1 1

2 1

指定某個(gè)元素的個(gè)別操作

查看某列符條件的值

# 創(chuàng)建數(shù)組

df = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(df)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 查看A列中小于3的行

print(df[df["A"] < 3 ]["A"])

# 運(yùn)行返回:

0 1

1 2

# 查看數(shù)組中A列不等于3的行

print(df[df["A"] != 3 ])

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

3 4 9 14 2 b

4 5 10 15 1 b

# 查看A列中等于3的行索引

print(df[df["A"] == 3 ].index)

# 運(yùn)行返回:

Index([2], dtype='int64')

刪除某列符條件的值

# 創(chuàng)建數(shù)組

df = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(df)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 刪除A列中小于3的行

df = df.drop(df[df["A"] < 3 ].index)

print(df)

# 運(yùn)行返回:

A B C D key

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

修改某列的某個(gè)數(shù)值

# 創(chuàng)建數(shù)組

df = pd.DataFrame({

"A":[1,2,3,4,5],

"B":[6,7,8,9,10],

"C":[11,12,13,14,15],

"D":[5,4,3,2,1],

"key":['a','a','a','b','b']

}

print(df)

# 運(yùn)行返回:

A B C D key

0 1 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 修改某列的某個(gè)數(shù)值

df.loc[0,'A'] = 'xxx'

print(df)

# 運(yùn)行返回:

A B C D key

0 xxx 6 11 5 a

1 2 7 12 4 a

2 3 8 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

# 修改A列中小于3的數(shù)據(jù)為"xxx"

# 找出A列中小于3的數(shù)據(jù)的索引

a = df[df["B"] <= 8 ].index

# 修改數(shù)據(jù)

df.loc[a,'B'] = 'xxx'

print(df)

# 運(yùn)行返回:

A B C D key

0 1 xxx 11 5 a

1 2 xxx 12 4 a

2 3 xxx 13 3 a

3 4 9 14 2 b

4 5 10 15 1 b

添加數(shù)據(jù)行或列

添加列

直接賦值法

語(yǔ)法:df [“新列名”] = 新列的值

import pandas as pd

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[0,5,8,7],[1,9,10,11],[0,12,13,14],[11,12,13,14]],index=['a','b','c','d','f'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 0 5 8 7

c 1 9 10 11

d 0 12 13 14

f 11 12 13 14

# 語(yǔ)法:df["新列名"]=新列的值

# 直接命名列名為"abc",添加列數(shù)據(jù)["a","b","c","d","e"]

df["abc"] = ["a","b","c","d","e"]

print(df)

# 運(yùn)行返回:

0 1 2 3 abc

a 1 2 3 4 a

b 0 5 8 7 b

c 1 9 10 11 c

d 0 12 13 14 d

f 11 12 13 14 e

在指定位置插入列

insert()函數(shù)

語(yǔ)法:DataFrame.insert(loc, column, value,allow_duplicates = False)

參數(shù)說(shuō)明loc必要字段,int類型數(shù)據(jù),表示插入新列的列位置,原來(lái)在該位置的列將向右移。column必要字段,插入新列的列名。value必要字段,新列插入的值。如果僅提供一個(gè)值,將為所有行設(shè)置相同的值??梢允莍nt,string,float等,甚至可以是series /值列表。

import pandas as pd

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[0,5,8,7],[1,9,10,11],[0,12,13,14],[11,12,13,14]],index=['a','b','c','d','f'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 0 5 8 7

c 1 9 10 11

d 0 12 13 14

f 11 12 13 14

# 在第二個(gè)位置添加列

# df.insert(位置,"列名",數(shù)據(jù))

df.insert(2,"abc",["a","b","c","d","e"])

print(df)

# 運(yùn)行返回:

0 1 abc 2 3

a 1 2 a 3 4

b 0 5 b 8 7

c 1 9 c 10 11

d 0 12 d 13 14

f 11 12 e 13 14

添加行

注意!添加行要加df.loc[“列名”] = [數(shù)據(jù)]

import pandas as pd

# 創(chuàng)建數(shù)組

df = pd.DataFrame([[1,2,3,4],[0,5,8,7],[1,9,10,11],[0,12,13,14],[11,12,13,14]],index=['a','b','c','d','f'])

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 0 5 8 7

c 1 9 10 11

d 0 12 13 14

f 11 12 13 14

# 注意!添加行要加df.loc[""]

df.loc["abc"] = ["a","b","c","d"]

print(df)

# 運(yùn)行返回:

0 1 2 3

a 1 2 3 4

b 0 5 8 7

c 1 9 10 11

d 0 12 13 14

f 11 12 13 14

abc a b c d

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)—pandas基礎(chǔ)教程

http://yzkb.51969.com/

精彩鏈接

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/18990273.html

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

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄