成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

盤點(diǎn)66個(gè)Pandas函數(shù),輕松搞定“數(shù)據(jù)清洗”!

開發(fā) 后端
今天我們重新盤點(diǎn)66個(gè)Pandas函數(shù)合集,包括數(shù)據(jù)預(yù)覽、數(shù)值數(shù)據(jù)操作、文本數(shù)據(jù)操作、行/列操作等等,涉及“數(shù)據(jù)清洗”的方方面面。

Pandas 是基于NumPy的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。它提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。

數(shù)據(jù)預(yù)覽

對(duì)于探索性數(shù)據(jù)分析來說,做數(shù)據(jù)分析前需要先看一下數(shù)據(jù)的總體概況。??info()??方法用來查看數(shù)據(jù)集信息,??describe()??方法將返回描述性統(tǒng)計(jì)信息,這兩個(gè)函數(shù)大家應(yīng)該都很熟悉了。

describe方法默認(rèn)只給出數(shù)值型變量的常用統(tǒng)計(jì)量,要想對(duì)DataFrame中的每個(gè)變量進(jìn)行匯總統(tǒng)計(jì),可以將其中的參數(shù)include設(shè)為all。

??head()??方法和??tail()?? 方法則是分別顯示數(shù)據(jù)集的前n和后n行數(shù)據(jù)。如果想要隨機(jī)看N行的數(shù)據(jù),可以使用??sample()??方法。

df.sample(3)

輸出:

如果要檢查數(shù)據(jù)中各列的數(shù)據(jù)類型,可以使用??.dtypes??;如果想要值查看所有的列名,可以使用??.columns??。

df.columns

輸出:

Index(['日期', '銷量'], dtype='object')

前面介紹的函數(shù)主要是讀取數(shù)據(jù)集的數(shù)據(jù)信息,想要獲得數(shù)據(jù)集的大小(長(zhǎng)寬),可以使用??.shape??方法。

df.shape

輸出:

(5, 2)

另外,??len()??可以查看某列的行數(shù),??count()??則可以查看該列值的有效個(gè)數(shù),不包含無效值(Nan)。

缺失值與重復(fù)值

Pandas清洗數(shù)據(jù)時(shí),判斷缺失值一般采用??isnull()??方法。此外,??isnull().any()??會(huì)判斷哪些”列”存在缺失值,??isnull().sum()??用于將列中為空的個(gè)數(shù)統(tǒng)計(jì)出來。

df.isnull().any()

輸出:

日期    False
銷量 True
dtype: bool

發(fā)現(xiàn)“銷量”這列存在缺失值后,處理辦法要么刪除??dropna()?? ,要么填充??fillna()??。

df.fillna(50)

輸出:

Pandas清洗數(shù)據(jù)時(shí),判斷重復(fù)值一般采用??duplicated()??方法。如果想要直接刪除重復(fù)值,可以使用??drop_duplicates()?? 方法。此處較為常見,不再過多演示。


數(shù)值數(shù)據(jù)操作

我們?cè)谔幚頂?shù)據(jù)的時(shí)候,會(huì)遇到批量替換的情況,??replace()??是很好的解決方法。它既支持替換全部或者某一行,也支持替換指定的某個(gè)或指定的多個(gè)數(shù)值(用字典的形式),還可以使用正則表達(dá)式替換。

df["編號(hào)"].replace(r'BA.$', value='NEW', regex=True, inplace = True)

輸出:

在Pandas模塊中, 調(diào)???rank()???法可以實(shí)現(xiàn)數(shù)據(jù)排名。

df["排名"] = df.rank(method="dense").astype("int")

輸出:

??rank()???法中的method參數(shù),它有5個(gè)常?選項(xiàng),可以幫助我們實(shí)現(xiàn)不同情況下的排名。

??clip()??方法,用于對(duì)超過或者低于某些數(shù)的數(shù)值進(jìn)行截?cái)?sup>[1],來保證數(shù)值在一定范圍。比如每月的遲到天數(shù)一定是在0-31天之間。

df["遲到天數(shù)"] = df["遲到天數(shù)"].clip(0,31)

唯一值,??unique()??是以數(shù)組形式返回列的所有唯一值,而??nunique()??返回的是唯一值的個(gè)數(shù)。

df["gender"].unique()
df["gender"].nunique()

輸出:

在數(shù)值數(shù)據(jù)操作中,??apply()??函數(shù)的功能是將一個(gè)自定義函數(shù)作用于DataFrame的行或者列;??applymap()??函數(shù)的功能是將自定義函數(shù)作用于DataFrame的所有元素。他們通常也與匿名函數(shù)lambda一起使用。

df["數(shù)量"].apply(lambda x: x+1)

輸出:

文本數(shù)據(jù)操作

之前我們?cè)?jīng)介紹過??經(jīng)常被人忽視的:Pandas 文本型數(shù)據(jù)處理??。在對(duì)文本型的數(shù)據(jù)進(jìn)行處理時(shí),我們會(huì)大量應(yīng)用字符串的函數(shù),來實(shí)現(xiàn)對(duì)一列文本數(shù)據(jù)進(jìn)行操作[2]

函數(shù)方法

用法釋義

cat

字符串的拼接

contains

判斷某個(gè)字符串是否包含給定字符

startswith/endswith

判斷某個(gè)字符串是否以...開頭/結(jié)尾

get

獲取指定位置的字符串

len

計(jì)算字符串長(zhǎng)度

upper、lower

英文大小寫轉(zhuǎn)換

pad/center

在字符串的左邊、右邊或左右兩邊添加給定字符

repeat

重復(fù)字符串幾次

slice_replace

使用給定的字符串,替換指定的位置的字符

split

分割字符串,將一列擴(kuò)展為多列

strip、rstrip、lstrip

去除空白符、換行符

findall

利用正則表達(dá)式,去字符串中匹配,返回查找結(jié)果的列表

extract、extractall

接受正則表達(dá)式,抽取匹配的字符串(一定要加上括號(hào))

舉例:

df.insert(2, "姓名", 
          df["姓"].str.cat(df["名"], sep=""))

輸出:

df["手機(jī)號(hào)碼"] = df["手機(jī)號(hào)碼"].str.slice_replace(3,7,"*"*4)

輸出:

df["地址"].str.extract("([\u4e00-\u9fa5]+)")  

輸出:

行/列操作

數(shù)據(jù)清洗時(shí),會(huì)將帶空值的行刪除,此時(shí)DataFrame或Series類型的數(shù)據(jù)不再是連續(xù)的索引,可以使用??reset_index()??重置索引。

df.reset_index(drop=True)

輸出:

??rename()??重命名用于更改行列的標(biāo)簽,即行列的索引。可以傳入一個(gè)字典或者一個(gè)函數(shù)。在數(shù)據(jù)預(yù)處理中,比較常用。

df.rename(columns={'mark': 'sell'}, inplace=True)

輸出:

行列轉(zhuǎn)置,我們可以使用T屬性獲得轉(zhuǎn)置后的DataFrame。

df.T

輸出:

刪除行列,可以使用??drop()??。

df.drop(columns=["mark"])

輸出:

數(shù)據(jù)分析師在進(jìn)行數(shù)據(jù)處理時(shí)經(jīng)常會(huì)遇到長(zhǎng)寬表互轉(zhuǎn)的情況,這也是一道常見的數(shù)據(jù)分析面試題。

??melt()??方法可以將寬表轉(zhuǎn)長(zhǎng)表,即表格型數(shù)據(jù)轉(zhuǎn)為樹形數(shù)據(jù)。

df.melt(id_vars="姓名", var_name="科目", value_name="成績(jī)")

輸出:

??pivot()??方法可以將長(zhǎng)表轉(zhuǎn)寬表,即樹形數(shù)據(jù)轉(zhuǎn)為表格型數(shù)據(jù)。

df.pivot(index='姓名', columns='科目', values='成績(jī)')

輸出:

??pivot()??其實(shí)就是用 ??set_index()??創(chuàng)建層次化索引,再用??unstack()??重塑

df1.set_index(['姓名','科目']).unstack('科目') 

數(shù)據(jù)分組與數(shù)據(jù)透視表更是一個(gè)常見的需求,??groupby()??方法可以用于數(shù)據(jù)分組。

df.groupby("科目").mean()

由于??pivot_table()??數(shù)據(jù)透視表的參數(shù)比較多,就不再使用案例來演示了,具體用法可參考下圖。

數(shù)據(jù)篩選

如果是篩選行列的話,通常有以下幾種方法:

有時(shí)我們需要按條件選擇部分列、部分行,一般常用的方法有:

操作

語法

返回結(jié)果

選擇列

??df[col]??

Series

按索引選擇行

??df.loc[label]??

Series

按數(shù)字索引選擇行

??df.iloc[loc]??

Series

使用切片選擇行

??df[:5]??

DataFrame

用表達(dá)式篩選行[3]

??df[bool_vec]??

DataFrame

除此以外,還有很多方法/函數(shù)可以用于“數(shù)據(jù)篩選”。

如果想直接篩選包含特定字符的字符串,可以使用??contains()??這個(gè)方法。

例如,篩選戶籍地址列中包含“黑龍江”這個(gè)字符的所有行。

df[df["戶籍地址"].str.contains("黑龍江")]

??query()??查詢方法也可以用來篩選數(shù)據(jù),比如查詢“語文”成績(jī)大于“數(shù)學(xué)”成績(jī)的行記錄。

df.query("語文 > 英語")

輸出:

??select_dtypes()??方法可用于篩選某些數(shù)據(jù)類型的變量或列。舉例,我們僅選擇具有數(shù)據(jù)類型'int64'的列。

df.select_dtypes("int64")

輸出:

??isin()??接受一個(gè)列表,判斷該列中元素是否在列表中。

name_list = ["張三", "李四"]
df[df["姓名"].isin(name_list)]

輸出:

數(shù)值數(shù)據(jù)統(tǒng)計(jì)運(yùn)算

在對(duì)數(shù)值型的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)運(yùn)算時(shí),除了有算術(shù)運(yùn)算、比較預(yù)算還有各種常見的匯總統(tǒng)計(jì)運(yùn)行函數(shù),具體如下表所示。

函數(shù)方法

用法釋義

count

非NaN數(shù)據(jù)項(xiàng)計(jì)數(shù)

sum

求和

mean

平均值

median

中位數(shù)

mode

眾數(shù)

max

最大值

min

最小值

std

標(biāo)準(zhǔn)差

var

方差

quantile

分位數(shù)

skew

返回偏態(tài)系數(shù)

kurt

返回峰態(tài)系數(shù)

舉例:

df["語文"].max()

輸出:

155

最后,再說一個(gè)比較常用的統(tǒng)計(jì)運(yùn)算函數(shù)——累加??cumsum()??。

df["累計(jì)銷量"] = df["銷量"].cumsum()

輸出:

注:??cumprod()??方法是指連乘,用于與連加一樣,但使用頻率較少。

今天我們盤點(diǎn)了66個(gè)Pandas函數(shù)合集,但實(shí)際還有很多函數(shù)在本文中沒有介紹,包括時(shí)間序列、數(shù)據(jù)表的拼接與連接等等。此外,那些類似??describe()??這種大家非常熟悉的方法都省去了代碼演示。如果大家有在工作生活中進(jìn)行“數(shù)據(jù)清洗”非常有用的Pandas函數(shù),也可以在評(píng)論區(qū)交流。

參考資料

[1]小小明-Pandas的clip和replace正則替換: https://blog.csdn.net/as604049322/article/details/105985763

[2]經(jīng)常被人忽視的:Pandas文本型數(shù)據(jù)處理: https://mp.weixin.qq.com/s/Tdcb6jlyCc7XlQWZlvEd_w

[3]深入淺出Pandas: 利用Python進(jìn)行數(shù)據(jù)處理與分析

責(zé)任編輯:龐桂玉 來源: Python編程
相關(guān)推薦

2021-08-25 07:47:53

Pandas函數(shù)數(shù)據(jù)處理

2024-10-28 12:57:36

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

2009-09-13 20:28:38

Linq插入數(shù)據(jù)

2024-10-23 09:00:00

數(shù)據(jù)分析Pandas

2020-07-14 08:48:07

數(shù)據(jù)分析技術(shù)IT

2023-11-13 08:16:08

MySQL數(shù)據(jù)數(shù)據(jù)庫

2021-05-07 09:39:54

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

2025-06-10 08:25:00

Python文本分析數(shù)據(jù)分析

2011-05-10 16:27:55

網(wǎng)站優(yōu)化SEO

2022-09-16 08:04:25

阿里云權(quán)限網(wǎng)絡(luò)

2017-05-11 15:01:43

Androidweb布局

2009-12-11 15:37:58

Linux日志處理

2023-09-26 01:03:36

Pandas數(shù)據(jù)數(shù)據(jù)集

2022-02-23 20:53:54

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

2025-04-03 10:00:00

數(shù)據(jù)分析Pandas數(shù)據(jù)合并

2015-03-10 11:34:22

SQL Server數(shù)據(jù)匯總ROUPBY

2018-06-11 17:27:56

APP流量華為

2025-06-09 07:35:00

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

2025-02-07 08:39:32

Shell部署測(cè)試

2010-09-17 14:04:14

JVM內(nèi)存設(shè)置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一级全黄视频 | 亚洲欧美v| 色婷婷综合网 | 亚洲一区三区在线观看 | 日本不卡视频在线播放 | 久久99精品久久久久久青青日本 | 五月婷婷在线视频 | 国产激情视频网站 | 国产午夜视频 | 久操伊人| 亚洲大片| 成人在线看片 | 国产一区二区三区 | 欧美国产精品 | 欧美一区二区三区在线观看 | 一区二区三区福利视频 | 久久久精彩视频 | 国产精品毛片一区二区在线看 | 一区二区三区亚洲精品国 | 9999视频 | 成人伊人 | 国产线视频精品免费观看视频 | 久久久无码精品亚洲日韩按摩 | 观看av| 欧美一级艳情片免费观看 | 91在线中文字幕 | 另类专区成人 | 色婷婷亚洲一区二区三区 | 久久99精品视频 | 精品久久久久久久 | 自拍偷拍欧美 | 一二区视频 | 99精品一区二区 | 91综合网 | 亚洲男人天堂网 | 久久国产区 | 日韩精品av一区二区三区 | 亚洲成人精品国产 | 国产精品99999999 | 色综合久久伊人 | 91精品国产日韩91久久久久久 |