21.1列間總和
求總分(總分=語文+數學+英語)
對於上壹章提到的學生報告單,只需要壹句話就可以計算出總分並填寫。
df,0,就地=真)
壹次將整個數據幀中的值“98,76,99”替換為“0”。
21.2排序
您可以將壹列排序為關鍵字段,或者將幾列分別排序為主鍵字段和輔鍵字段。排序可以按升序或降序排序。
函數sort_values()的語法格式如下:
df.sort_values(by=["col1 "," col2 ",......,“coln”],升序=False)
其中coln表示列名或列名列表;升序表示排序方式,值為True表示升序,可以默認,值為False表示降序。
比如:
Df=df.sort_values(by=['總分'],升序=False)
就是按“總分”從高到低排序。
Df=df.sort_values(by=['總分','語言'],升序=False)
就是按照“總分”從高到低排序。如果“總分”相同,則按“語文”得分從高到低排序。
21.3字段截斷
Slice()可以從列中截取壹個字符串。格式如下:
切片(開始、停止)
其中start表示起始位置;停止表示結束位置。
示例:
df[' grade ']= df[' student number ']. str . slice(0,2)
通過該語句,可以截取學號字段的第1和第2個字符,並賦給年級字段。
21.4記錄提取
可以提取符合條件的記錄。
例如:提取總分> 300的記錄。
df【df。總分> 300]
提取總分在300和310之間(含300和310)的記錄。
df【df。總分。在(306,310)之間]
提取學號中帶有“0803”的記錄。這樣可以很方便的提取壹個類的信息。
df【df。學生證。字符串包含(' 0803 ',na=False)]
這裏Na=False,表示如果遇到NaN這樣的數據,直接做錯配處理。
21.5修改記錄
1,整列替換
我們之前已經用數據填充了整列,填充時會覆蓋原來的數據。
即下面的語句:
Df['總分']=df['中文']+df['數學']+df['英文']
2.個別修改
如果值“99”被值“100”替換,可以使用以下語句:
df.replace('99 ',' 100 ')
替換指定列的值,如將中文列和英文列中的值' 99 '替換為值' 100 ',可以使用以下語句:
Df.replace({ '中文':99,'英文':99},100)
以下程序可用於驗證:
從熊貓導入read_excel
file='d:/student.xlsx '
Df = read _ excel (file,sheet _ name = 0,converters = { ' student number ':str })
打印(df[(df。中文==99) |(df。英語==99)])
Df=df.replace({ '中文':99,'英文':99},100)
打印(df[(df。中文==99) |(df。英語==99)])
運行結果如下:
序號學號姓名年級班級語文數學英語總分排名
28 29 090802鼎能通09南119 120 99 338南
29 30 090203沈09南109 108 99 316南
空數據幀
欄目:[序號,學號,姓名,年級,班級,語文,數學,英語,總分,排名]
索引:[]
可以看出,第壹條print()語句的輸出結果中有兩條記錄滿足“中文或英文99分”的條件。執行替換語句後,df中沒有符合“中文或英文99分”條件的記錄。
21.6記錄合並
函數concat()()的格式如下:
concat([dataFrame1,dataFrame2,......],ignore_index=True)
其中dataFrame1等表示要合並的dataFrame數據集;Ignore_index=True表示合並後重新索引。它的返回值也是DataFrame類型。
Concat()函數和append()函數的功能非常相似。
示例:
導入熊貓#導入熊貓模塊
從熊貓導入read_excel #導入read_execel
File='d:/student.xlsx' #變量File表示文件路徑。請註意'/'的用法數據見第18章表18-1。
Df = read _ excel (file,sheet _ name = 0,converters = { ' student number ':str })
#將Excel文件導入DataFrame變量。
Df=Df[:5] #截取df的前5條記錄。
打印(df) #輸出df
Df1=Df[:3] #截取的df的前三條記錄存儲在Df1中。
Df2=Df[3:5] #截取的df的最後兩條記錄存儲在Df2中。
Df3 =熊貓。concat ([df2,df1]) #合並df2和df1,存儲在DF3中。
打印(df3) #輸出df3
運行結果如下:
序號學號姓名年級班級語文數學英語總分排名
0 1 070101王博宇楠楠84 71 93楠楠。
1 2 070102陳冠濤楠楠89 89 89楠楠
李楠楠89 72 76楠楠
3 4 070204姜海燕南南89 89 89南南
4 5 070205林若曦楠楠91 95 83楠楠
序號學號姓名年級班級語文數學英語總分排名
3 4 070204姜海燕南南89 89 89南南
4 5 070205林若曦楠楠91 95 83楠楠
0 1 070101王博宇楠楠84 71 93楠楠。
1 2 070102陳冠濤楠楠89 89 89楠楠
李楠楠89 72 76楠楠
由於df1被合並到df2中,可以看出該索引仍然保持原來的狀態。
21.7統計次數
您可以用以下方法計算壹個值在壹行或壹個區域中出現的次數。
從熊貓導入read_excel
file='d:/student.xlsx '
Df = read _ excel (file,sheet _ name = 0,converters = { ' student number ':str })
df=df[:5]
打印(df)
打印(df['中文']。value_counts())
輸出結果如下:
序號學號姓名年級班級語文數學英語總分排名
0 1 070101王博宇楠楠84 71 93楠楠。
1 2 070102陳冠濤楠楠89 89 89楠楠
李楠楠89 72 76楠楠
3 4 070204姜海燕南南89 89 89南南
4 5 070205林若曦楠楠91 95 83楠楠
89 3
84 1
91 1
名稱:中文,型號:int64
可以看出,壹列中每個值的出現次數可以通過value_counts()函數來計算。
value_counts()函數的參數是:
升序,升序時升序=真,升序時升序=假(該參數可以默認);
Normalize,當normalize=True時,顯示的不再是每個值出現的次數,而是比例。
更改報表打印(df['中文']。value_counts())轉換為:
打印(df['中文']。value _ counts(升序=真,規範化=真))
輸出變成:
91 0.2
84 0.2
89 0.6
名稱:中文,型號:float64
21.8按值查找
打印(df['中文']。isin([84,91])
它的功能是查找“語言”列中的值與isin指向的列表中的元素壹致的記錄。如果結果為真,否則為假。
輸出結果:
0真
1假
2錯誤
3錯誤
4正確
名稱:中文,數據類型:布爾
21.9數據分區
按照壹個劃分標準,可以將數據按照區域進行劃分,用相應的標簽來表示,這可以通過cut()方法來實現。
語法格式如下:
剪切(系列,箱,右=真,標簽=空)
其中包括:
Series表示要分組的數據;
Bins表示分組的基礎,是壹個列表,其元素是分區的邊界值,比如[0,72,96,120],即分為三個分區,分別是0~72,72~96,96~120,默認為“不包含左包和右包”;
Right表示分組時右側是否閉合;
Labels表示分組的自定義標簽,或者它不能被重新定義。
讓我們將上述學生報告表中的語文成績分組,並增加新的壹欄“語文成績”。
進口熊貓作為pd
從熊貓導入read_excel #導入read_execel
file='d:/student.xlsx '
Df = read _ excel (file,sheet _ name = 0,converters = { ' student number ':str })
df[' grade ']= df[' student number ']. str . slice(0,2)
Df[' class' ]=df['學生編號'].str.slice(0,4)
Df。總分=df。中文+df。數學+df。英語。
bin =[0,72,96,最大值(df。中文)+1] #
Lab=['失敗','通過','優秀']
Grade=pd.cut(df。語言,垃圾箱,右=假,標簽=實驗室)。
Df['語言水平']=成績
print(df.head())
Print("語文成績統計結果:")
打印(df['語言級別']。value_counts())
運行結果如下:
序號學號姓名年級班級語文數學英語總分語文年級
0 1 0701王博宇07 0701 84 71 93 248通過。
1 2 070102陳冠濤07 0701 89 89 267過關。
李0701 89 72 76 237通過。
姜海燕通過了07 0702 89 89 267。
4 5 070205林若曦07 0702 91 95 83 269通過。
語文成績統計結果:
通行證17
優秀10
失敗4
名稱:語言級別,數據類型:int64