今天,就為大家總結(jié)一下 “Pandas數(shù)據(jù)處理的12技巧”,拿來即用,隨查隨用。
今天,就為大家總結(jié)一下 “Pandas數(shù)據(jù)處理的12技巧”,拿來即用,隨查隨用。
你還可以使用內(nèi)置的 Python 工具 pip 安裝 Pandas 并運(yùn)行以下命令:
$ pip install pandas
安裝完成后的提示成功,則可以環(huán)境中使用pandas包了。
import pandas
Pandas一維數(shù)組(數(shù)據(jù)列)可以保存任何數(shù)據(jù)類型。一般通過調(diào)用 pd.Series() 方法實(shí)現(xiàn),不指定index,默認(rèn)為0,1,2,3...。
import pandasimport numpyS = pandas.Series( [1, 2, 3, 4], # 數(shù)據(jù) index=["a", "b", "c", "d"], # 指定索引 dtype=numpy.int8, # 指定數(shù)據(jù)類型)S.name = "test" # 創(chuàng)建一維數(shù)組的名稱S.index.name = "index" # 創(chuàng)建一維數(shù)組的索引名稱print(S)
輸出:
indexa 1b 2c 3d 4Name: test, dtype: int8
創(chuàng)建具有列的二維數(shù)據(jù)結(jié)構(gòu)的對象(數(shù)據(jù)框)。一般通過調(diào)用 pd.DataFrame() 方法實(shí)現(xiàn),不指定index,默認(rèn)為0,1,2,3...。
import pandasdat_list = [ [1, 2, 3], [4, 6, 8], [10, 11, 12],]df = pandas.DataFrame( dat_list, index=["i1", "i3", "i2"], columns=["a", "b", "c"],)print(df)
輸出:
a b ci1 1 2 3i3 4 6 8i2 10 11 12
Pandas 支持從 CSV的讀寫,我們用 pd.read_csv() 和 pd.to_csv() 方法來實(shí)現(xiàn)。
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)df.to_csv("output/test.csv") # 導(dǎo)出到CSV文件dfnew = pandas.read_csv("output/test.csv", index_col=0) # index_col=0 表示第一列為索引print(dfnew)
Pandas 支持從 Excel的讀寫,我們用 pd.read_excel() 和 pd.to_excel() 方法來實(shí)現(xiàn)。
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)df.to_excel("output/test.xlsx") # 導(dǎo)出到exceldfnew = pandas.read_excel("output/test.xlsx", index_col=0) # index_col=0 表示第一列為索引print(dfnew)
Pandas 支持通過位置選擇值,我們用 df.iloc[row_index, column_index] 來實(shí)現(xiàn)。
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)print(df.iloc[2, 1]) # 6 結(jié)果為一個值print(df.iloc[[2], [1]]) # 結(jié)果為一個元素的數(shù)據(jù)框print(df.iloc[1:3, :]) # 結(jié)果為一個數(shù)據(jù)框
輸出:
A B C Di2 1 4 7 10i1 2 5 8 11i3 3 6 9 126 Bi3 6 A B C Di1 2 5 8 11i3 3 6 9 12
Pandas 支持通過名稱選擇值,我們用 df.loc[row_name, column_name] 來實(shí)現(xiàn)。
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)print(df.loc["i2", "C"]) # 6 結(jié)果為一個值print(df.loc[["i2"], ["C"]]) # 結(jié)果為一個元素的數(shù)據(jù)框print(df.loc[["i2", "i3"], ["A", "D"]]) # 切片
輸出:
A B C Di2 1 4 7 10i1 2 5 8 11i3 3 6 9 127 Ci2 7 A Di2 1 10i3 3 12
這是一個有意思的問題,如果重復(fù)了如何取值呢,如何去掉重復(fù)呢?
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i2"])print(df)print(df.loc["i2", "C"])df.columns = ["A", "B", "B", "D"]print(df)print(df.loc["i2", "B"])
輸出:
A B C Di2 1 4 7 10i1 2 5 8 11i2 3 6 9 12i2 7i2 9Name: C, dtype: int64 A B B Di2 1 4 7 10i1 2 5 8 11i2 3 6 9 12 B Bi2 4 7i2 6 9
Pandas 支持刪除行/列,我們用 df.drop([col/row name], axis=0/1) 來實(shí)現(xiàn)。
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)df.drop( ["i2", "i1"], axis=0, # axis=0刪除行,axis=1刪除列 inplace=True, # 如果為True,則在原數(shù)據(jù)上進(jìn)行操作,否則,創(chuàng)建一個新的數(shù)據(jù)對象 errors="ignore", # 忽略不存在的列)print(df)
輸出:
A B C Di2 1 4 7 10i1 2 5 8 11i3 3 6 9 12 A B C Di3 3 6 9 12
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12]}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)df['E'] = 0print(df)
輸出為:
A B C Di2 1 4 7 10i1 2 5 8 11i3 3 6 9 12 A B C D Ei2 1 4 7 10 0i1 2 5 8 11 0i3 3 6 9 12 0
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12],}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)df = df.append( pandas.DataFrame({"A": 13, "B": 14, "C": 15, "D": 16}, index=["i4"]), ignore_index=True,)print(df)
輸出:
A B C Di2 1 4 7 10i1 2 5 8 11i3 3 6 9 12 A B C D0 1 4 7 101 2 5 8 112 3 6 9 123 13 14 15 16
import pandasd = { "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9], "D": [10, 11, 12]}df = pandas.DataFrame(d, index=["i2", "i1", "i3"])print(df)df = df.sort_index( axis=0, # axis=0 按行標(biāo)簽排序,axis=1 按列標(biāo)簽排序 level=None, ascending=True, # 是否升序 inplace=False, # 是否修改原數(shù)據(jù) kind="quicksort", # 排序算法 na_positinotallow="last", # 如果有NA值,放在最后 sort_remaining=True, # 是否排序剩余列)print(df)
輸出:
A B C Di2 1 4 7 10i1 2 5 8 11i3 3 6 9 12 A B C Di1 2 5 8 11i2 1 4 7 10i3 3 6 9 12
上面分享的pandas入門的12個技巧,希望對你有所幫助。
本文鏈接:http://www.www897cc.com/showinfo-26-57288-0.htmlPandas入門的12個技巧
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com