我用Python展示Excel中常用的20個操作
作者?|?劉早起
來源 |?早起Python
前言
Excel與Python都是數(shù)據(jù)分析中常用的工具,本文將使用動態(tài)圖(Excel)+代碼(Python)的方式來演示這兩種工具是如何實現(xiàn)數(shù)據(jù)的讀取、生成、計算、修改、統(tǒng)計、抽樣、查找、可視化、存儲等數(shù)據(jù)處理中的常用操作!
數(shù)據(jù)讀取
說明:讀取本地Excel數(shù)據(jù)
Excel

Pandas
Pandas支持讀取本地Excel、txt文件,也支持從網(wǎng)頁直接讀取表格數(shù)據(jù),只用一行代碼即可,例如讀取上述本地Excel數(shù)據(jù)可以使用pd.read_excel("示例數(shù)據(jù).xlsx")

數(shù)據(jù)生成
說明:生成指定格式/數(shù)量的數(shù)據(jù)
Excel
rand()函數(shù)生成隨機數(shù),并手動拉取指定范圍
Pandas
在Pandas中可以結(jié)合NumPy生成由指定隨機數(shù)(均勻分布、正態(tài)分布等)生成的矩陣,例如同樣生成10*2的0—1均勻分布隨機數(shù)矩陣為,使用一行代碼即可:pd.DataFrame(np.random.rand(10,2))

數(shù)據(jù)存儲
說明:將表格中的數(shù)據(jù)存儲至本地
Excel
在Excel中需要點擊保存并設(shè)置格式/文件名
?
Pandas
?在Pandas中可以使用pd.to_excel("filename.xlsx")來將當前工作表格保存至當前目錄下,當然也可以使用to_csv保存為csv等其他格式,也可以使用絕對路徑來指定保存位置

數(shù)據(jù)篩選
說明:按照指定要求篩選數(shù)據(jù)
Excel
使用我們之前的示例數(shù)據(jù),在Excel中篩選出薪資大于5000的數(shù)據(jù)步驟如下
?
?
Pandas
在Pandas中,可直接對數(shù)據(jù)框進行條件篩選,例如同樣進行單個條件(薪資大于5000)的篩選可以使用df[df['薪資水平']>5000],如果使用多個條件的篩選只需要使用&(并)與|(或)操作符實現(xiàn)

數(shù)據(jù)插入
說明:在指定位置插入指定數(shù)據(jù)
Excel
在Excel中我們可以將光標放在指定位置并右鍵增加一行/列,當然也可以在添加時對數(shù)據(jù)進行一些計算,比如我們就可以使用IF函數(shù)(=IF(G2>10000,"高","低")),將薪資大于10000的設(shè)為高,低于10000的設(shè)為低,添加一列在最后

Pandas
在pandas中,如果不借助自定義函數(shù)的話,我們可以使用cut方法來實現(xiàn)同樣操作
bins?=?[0,10000,max(df['薪資水平'])]
group_names?=?['低','高']
df['new_col']?=?pd.cut(df['薪資水平'],?bins,?labels=group_names)
數(shù)據(jù)刪除
說明:刪除指定行/列/單元格
Excel

Pandas
在pandas中刪除數(shù)據(jù)也很簡單,比如刪除最后一列使用del df['new_col']即可

數(shù)據(jù)排序
說明:按照指定要求對數(shù)據(jù)排序
Excel
在Excel中可以點擊排序按鈕進行排序,例如將示例數(shù)據(jù)按照薪資從高到低進行排序可以按照下面的步驟進行

Pandas
在pandas中可以使用sort_values進行排序,使用ascending來控制升降序,例如將示例數(shù)據(jù)按照薪資從高到低進行排序可以使用df.sort_values("薪資水平",ascending=False,inplace=True)

缺失值處理
說明:對缺失值(空值)按照指定要求處理
Excel
在Excel中可以按照查找—>定位條件—>空值來快速定位數(shù)據(jù)中的空值,接著可以自己定義缺失值的填充方式,比如將缺失值用上一個數(shù)據(jù)進行填充

Pandas
在pandas中可以使用data.isnull().sum()來檢查缺失值,之后可以使用多種方法來填充或者刪除缺失值,比如我們可以使用df = df.fillna(axis=0,method='ffill')來橫向/縱向用缺失值前面的值替換缺失值

數(shù)據(jù)去重
說明:對重復(fù)值按照指定要求處理
Excel
在Excel中可以通過點擊數(shù)據(jù)—>刪除重復(fù)值按鈕并選擇需要去重的列即可,例如對示例數(shù)據(jù)按照創(chuàng)建時間列進行去重,可以發(fā)現(xiàn)去掉了196 個重復(fù)值,保留了 629 個唯一值。

Pandas
在pandas中可以使用drop_duplicates來對數(shù)據(jù)進行去重,并且可以指定列以及保留順序,例如對示例數(shù)據(jù)按照創(chuàng)建時間列進行去重df.drop_duplicates(['創(chuàng)建時間'],inplace=True),可以發(fā)現(xiàn)和Excel處理的結(jié)果一致,保留了?629?個唯一值。

格式修改
說明:修改指定數(shù)據(jù)的格式
Excel

Pandas
在Pandas中沒有一個固定修改格式的方法,不同的數(shù)據(jù)格式有著不同的修改方法,比如類似Excel中將創(chuàng)建時間修改為年-月-日可以使用df['創(chuàng)建時間'] = df['創(chuàng)建時間'].dt.strftime('%Y-%m-%d')

數(shù)據(jù)交換
說明:交換指定數(shù)據(jù)
Excel
在Excel中交換數(shù)據(jù)是很常用的操作,以交換示例數(shù)據(jù)中地址與崗位兩列為例,可以選中地址列,按住shift鍵并拖動邊緣至下一列松開即可

Pandas
在pandas中交換兩列也有很多方法,以交換示例數(shù)據(jù)中地址與崗位兩列為例,可以通過修改列號來實現(xiàn)

數(shù)據(jù)合并
說明:將兩列或多列數(shù)據(jù)合并成一列
Excel

Pandas
在Pandas中合并多列比較簡單,類似于之前的數(shù)據(jù)插入操作,例如合并示例數(shù)據(jù)中的地址+崗位列使用df['合并列'] = df['地址'] + df['崗位']

數(shù)據(jù)拆分
說明:將一列按照規(guī)則拆分為多列
Excel
在Excel中可以通過點擊數(shù)據(jù)—>分列并按照提示的選項設(shè)置相關(guān)參數(shù)完成分列,但是由于該列含有[]等特殊字符,所以需要先使用查找替換去掉

Pandas
在Pandas中可以使用.split來完成分列,但是在分列完畢后需要使用merge來將分列完的數(shù)據(jù)添加至原DataFrame,對于分列完的數(shù)據(jù)含有[]字符,我們可以使用正則或者字符串lstrip方法進行處理,但因不是pandas特性,此處不再展開。

數(shù)據(jù)分組
說明:對數(shù)據(jù)進行分組計算
Excel
在Excel中對數(shù)據(jù)進行分組計算需要先對需要分組的字段進行排序,之后可以通過點擊分類匯總并設(shè)置相關(guān)參數(shù)完成,比如對示例數(shù)據(jù)的學歷進行分組并求不同學歷的平均薪資

Pandas
在Pandas中對數(shù)據(jù)進行分組計算可以使用groupby輕松搞定,比如使用df.groupby("學歷").mean()一行代碼即可對示例數(shù)據(jù)的學歷進行分組并求不同學歷的平均薪資,結(jié)果與Excel一致

數(shù)據(jù)計算
說明:對數(shù)據(jù)進行一些計算
Excel

Pandas
在Pandas中可以直接使用類似數(shù)據(jù)篩選的方法來統(tǒng)計薪資大于10000的崗位數(shù)量len(df[df["薪資水平"]>10000])

數(shù)據(jù)統(tǒng)計
說明:對數(shù)據(jù)進行一些統(tǒng)計計算
Excel
在Excel中有很多統(tǒng)計相關(guān)的公式,也有現(xiàn)成的分析工具,比如對薪資水平列進行描述性統(tǒng)計分析,可以通過添加工具庫之后點擊數(shù)據(jù)分析按鈕并設(shè)置相關(guān)參數(shù)

Pandas
在pandas中也有現(xiàn)成的函數(shù)describe快速完成對數(shù)據(jù)的描述性統(tǒng)計,比如使用df["薪資水平"].describe()即可得到薪資列的描述性統(tǒng)計結(jié)果

數(shù)據(jù)可視化
說明:對數(shù)據(jù)進行可視化
Excel
在Excel中可以通過點擊插入并選擇圖表來快速完成對數(shù)據(jù)的可視化,比如制作薪資的直方圖,并且有很多樣式可以直接使用

Pandas
在Pandas中也支持直接對數(shù)據(jù)繪制不同可視化圖表,例如直方圖,可以使用plot或者直接使用hist來制作df["薪資水平"].hist()

數(shù)據(jù)抽樣
說明:對數(shù)據(jù)按要求采樣
Excel
在Excel中抽樣可以使用公式也可以使用分析工具庫中的抽樣,但是僅支持對數(shù)值型的列抽樣,比如隨機抽20個示例數(shù)據(jù)中薪資的樣本

Pandas
在pandas中有抽樣函數(shù)sample可以直接抽樣,并且支持任意格式的數(shù)據(jù)抽樣,可以按照數(shù)量/比例抽樣,比如隨機抽20個示例數(shù)據(jù)中的樣本

數(shù)據(jù)透視表
說明:制作數(shù)據(jù)透視表
Excel
數(shù)據(jù)透視表是一個非常強大的工具,在Excel中有現(xiàn)成的工具,只需要選中數(shù)據(jù)—>點擊插入—>數(shù)據(jù)透視表即可生成,并且支持字段的拖取實現(xiàn)不同的透視表,非常方便,比如制作地址、學歷、薪資的透視表

Pandas
在Pandas中制作數(shù)據(jù)透視表可以使用pivot_table函數(shù),例如制作地址、學歷、薪資的透視表pd.pivot_table(df,index=["地址","學歷"],values=["薪資水平"]),雖然結(jié)果一樣,但是并沒有Excel一樣方便調(diào)整與多樣

vlookup
說明:利用VLOOKUP查找數(shù)據(jù)
Excel
VLOOKUP算是EXCEL中最核心的功能之一了,我們用一個簡單的數(shù)據(jù)來進行示例

Pandas
在Pandas中沒有現(xiàn)成的vlookup函數(shù),所以實現(xiàn)匹配查找需要一些步驟,首先我們讀取該表格


最后修改索引并使用update進行兩表的匹配

結(jié)束語
以上就是使用Pandas來演示如何實現(xiàn)Excel中的常用操作的全部過程,其實可以發(fā)現(xiàn)Excel的優(yōu)點就是大多由交互式的點擊完成數(shù)據(jù)處理,而Pandas則完全依賴于代碼,對于有些操作比如數(shù)據(jù)透視表,用Excel制作更加方便,而有些操作比如數(shù)據(jù)的分組、計算等,因Pandas可以與NumPy等其他優(yōu)秀的Python庫結(jié)合而顯得更加強大,所以我們在處理數(shù)據(jù)時也需要正確選擇使用的工具!

