真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python截取函數(shù),python數(shù)組截取

Python其實(shí)很簡(jiǎn)單 第二十一章 DataFrame數(shù)據(jù)處理

將Excel中的的數(shù)據(jù)讀入數(shù)據(jù)框架DataFrame后,可以非常方便的進(jìn)行各種數(shù)據(jù)處理。

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、申請(qǐng)域名、網(wǎng)站空間、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶(hù)提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶(hù)的口碑塑造優(yōu)易品牌,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。

21.1 列間求和

求總分(總分=語(yǔ)文+數(shù)學(xué)+英語(yǔ))

對(duì)于上一章所提到的學(xué)生成績(jī)表,僅用一個(gè)語(yǔ)句即可完成總分計(jì)算,并填充。

df['總分']=df['語(yǔ)文']+df['數(shù)學(xué)']+df['英語(yǔ)']

完整代碼如下:

from pandas import read_excel

file='d:/student.xlsx' #見(jiàn)第18章表18-1

df=read_excel(file,sheet_name=0,converters={'學(xué)號(hào)':str})

df['總分']=df['語(yǔ)文']+df['數(shù)學(xué)']+df['英語(yǔ)']

print(df.head()) #df.head()的作用是僅顯示5行記錄。

運(yùn)行結(jié)果如下:

序號(hào) 學(xué)號(hào) 姓名 年級(jí) 班級(jí) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 名次

0 1 070101 王博宇 NaN NaN 84 71 93 248 NaN

1 2 070102 陳冠濤 NaN NaN 89 89 89 267 NaN

2 3 070103 李文博 NaN NaN 89 72 76 237 NaN

3 4 070204 姜海燕 NaN NaN 89 89 89 267 NaN

4 5 070205 林若溪 NaN NaN 91 95 83 269 NaN

21.2替換

既可以將對(duì)滿足條件的行和列的數(shù)據(jù)替換,也可以對(duì)整個(gè)集合的數(shù)據(jù)按照條件進(jìn)行替換。

df['總分'].replace(310,'x',inplace=True)

將總分列的數(shù)值“310”替換為“x”。inplace=True表示改變?cè)瓟?shù)據(jù)。

df.replace(76,0,inplace=True)

將整個(gè)DataFrame中的數(shù)值“76”替換為“0”。

df.replace([98,76,99],0,inplace=True)

將整個(gè)DataFrame中的數(shù)值“98,76,99”一次替換為“0”。

21.2排序

既可以將某一列作為關(guān)鍵字段排序,也可以將幾個(gè)列分別作為主、次關(guān)鍵字段進(jìn)行排序。排序既可以按升序排序,也可以按降序排序。

函數(shù)sort_values()的語(yǔ)法格式如下:

df.sort_values(by=[“col1”,”col2”,......,”coln”],ascending=False)

其中,coln表示列名,也可以是列名的列表;ascending表示排序方式,值為T(mén)rue表示升序,可以省缺,值為False表示降序。

如:

df=df.sort_values(by=['總分'],ascending=False)

表示按照“總分”從高到低排序。

df=df.sort_values(by=['總分','語(yǔ)文'],ascending=False)

表示按照“總分”從高到低排序,若“總分”相同,再按照“語(yǔ)文”成績(jī)從高到低排序。

21.3 字段截取

函數(shù)slice()可以從某列中截取字符串。格式如下:

slice(start,stop)

其中,start表示開(kāi)始位置;stop表示結(jié)束位置

例:

df['年級(jí)']=df['學(xué)號(hào)'].str.slice(0,2)

通過(guò)此語(yǔ)句可以截取學(xué)號(hào)字段的第1、2個(gè)字符,并賦值給年級(jí)字段。

21.4 記錄抽取

可以抽取滿足條件的記錄。

例:抽取總分300的記錄。

df[df.總分300]

抽取總分在300到310之間(包括300和310)的記錄。

df[df.總分.between(306,310)]

抽取學(xué)號(hào)中包含“0803”的記錄。這樣可以非常方便的抽取某個(gè)班的信息。

df[df.學(xué)號(hào).str.contains('0803',na=False)]

此處的na=False,含義是如遇到NaN這樣的數(shù)據(jù),直接做不匹配處理。

21.5修改記錄

1、整列替換

我們?cè)谇懊嬉呀?jīng)給整列填充過(guò)數(shù)據(jù),填充時(shí)原來(lái)的數(shù)據(jù)就被覆蓋了。

即如下語(yǔ)句:

df['總分']=df['語(yǔ)文']+df['數(shù)學(xué)']+df['英語(yǔ)']

2、個(gè)別修改

如將值‘99’替換為值‘100’,可用如下語(yǔ)句:

df.replace('99','100')

將指定列的值替,如將語(yǔ)文列和英語(yǔ)列的值‘99’替換為值‘100’,可用如下語(yǔ)句:

df.replace({'語(yǔ)文':99,'英語(yǔ)':99},100)

可用如下程序去驗(yàn)證:

from pandas import read_excel

file='d:/student.xlsx'

df=read_excel(file,sheet_name=0,converters={'學(xué)號(hào)':str})

print(df[(df.語(yǔ)文==99) |(df.英語(yǔ)==99)])

df=df.replace({'語(yǔ)文':99,'英語(yǔ)':99},100)

print(df[(df.語(yǔ)文==99) |(df.英語(yǔ)==99)])

運(yùn)行結(jié)果為:

序號(hào) 學(xué)號(hào) 姓名 年級(jí) 班級(jí) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 名次

28 29 090802 丁能通 09 NaN 119 120 99 338 NaN

29 30 090203 沈丹妮 09 NaN 109 108 99 316 NaN

Empty DataFrame

Columns: [序號(hào), 學(xué)號(hào), 姓名, 年級(jí), 班級(jí), 語(yǔ)文, 數(shù)學(xué), 英語(yǔ), 總分, 名次]

Index: []

可以看出,第一個(gè)print()語(yǔ)句輸出的結(jié)果中滿足條件“語(yǔ)文或英語(yǔ)為99分”的有兩條記錄,替換語(yǔ)句執(zhí)行以后,df中再?zèng)]有滿足條件“語(yǔ)文或英語(yǔ)為99分”的記錄了。

21.6記錄合并

函數(shù)concat()的格式如下:

concat([dataFrame1,dataFrame2,......],ignore_index=True)

其中,dataFrame1等表示要合并的DataFrame數(shù)據(jù)集合;ignore_index=True表示合并之后的重新建立索引。其返回值也是DataFrame類(lèi)型。

concat()函數(shù)和append()函數(shù)的功能非常相似。

例:

import pandas #導(dǎo)入pandas模塊

from pandas import read_excel #導(dǎo)入read_execel

file='d:/student.xlsx' #變量file表示文件路徑,注意'/'的用法 數(shù)據(jù)見(jiàn)第18章表18-1

df=read_excel(file,sheet_name=0,converters={'學(xué)號(hào)':str})

# 將Excel文件導(dǎo)入到DataFrame變量中

df=df[:5] #截取df的前5個(gè)記錄

print(df) #輸出df

df1=df[:3] #截取df的前3個(gè)記錄存入df1中

df2=df[3:5] #截取df的最后2個(gè)記錄存入df2中

df3=pandas.concat([df2,df1]) #將df2與df1合并存入df3中

print(df3) #輸出df3

運(yùn)行結(jié)果如下:

序號(hào) 學(xué)號(hào) 姓名 年級(jí) 班級(jí) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 名次

0 1 070101 王博宇 NaN NaN 84 71 93 NaN NaN

1 2 070102 陳冠濤 NaN NaN 89 89 89 NaN NaN

2 3 070103 李文博 NaN NaN 89 72 76 NaN NaN

3 4 070204 姜海燕 NaN NaN 89 89 89 NaN NaN

4 5 070205 林若溪 NaN NaN 91 95 83 NaN NaN

序號(hào) 學(xué)號(hào) 姓名 年級(jí) 班級(jí) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 名次

3 4 070204 姜海燕 NaN NaN 89 89 89 NaN NaN

4 5 070205 林若溪 NaN NaN 91 95 83 NaN NaN

0 1 070101 王博宇 NaN NaN 84 71 93 NaN NaN

1 2 070102 陳冠濤 NaN NaN 89 89 89 NaN NaN

2 3 070103 李文博 NaN NaN 89 72 76 NaN NaN

由于合并時(shí)是將df1合并到df2中,可以看出,索引仍然保持原來(lái)的狀態(tài)。

21.7統(tǒng)計(jì)次數(shù)

可以用如下方法統(tǒng)計(jì)出某個(gè)值在某行或者某個(gè)范圍出現(xiàn)的次數(shù)。

from pandas import read_excel

file='d:/student.xlsx'

df=read_excel(file,sheet_name=0,converters={'學(xué)號(hào)':str})

df=df[:5]

print(df)

print(df['語(yǔ)文'].value_counts())

輸出結(jié)果如下:

序號(hào) 學(xué)號(hào) 姓名 年級(jí) 班級(jí) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 名次

0 1 070101 王博宇 NaN NaN 84 71 93 NaN NaN

1 2 070102 陳冠濤 NaN NaN 89 89 89 NaN NaN

2 3 070103 李文博 NaN NaN 89 72 76 NaN NaN

3 4 070204 姜海燕 NaN NaN 89 89 89 NaN NaN

4 5 070205 林若溪 NaN NaN 91 95 83 NaN NaN

89 3

84 1

91 1

Name: 語(yǔ)文, dtype: int64

可以看出,通過(guò)value_counts()函數(shù)可以統(tǒng)計(jì)出列中各值出現(xiàn)的次數(shù)。

value_counts()函數(shù)的參數(shù)還有 :

ascending,當(dāng)ascending=True時(shí)升序排列,當(dāng)ascending=False時(shí)升序排列(此時(shí)該參數(shù)可省缺);

normalize,當(dāng)normalize=True時(shí),顯示的不再是各值出現(xiàn)的次數(shù),而是占比。

將上例中的語(yǔ)句print(df['語(yǔ)文'].value_counts())改為:

print(df['語(yǔ)文'].value_counts(ascending=True,normalize=True))

則輸出結(jié)果變成了:

91 0.2

84 0.2

89 0.6

Name: 語(yǔ)文, dtype: float64

21.8按值查找

print(df['語(yǔ)文'].isin([84,91]))

它的作用是查找‘語(yǔ)文’列中值和isin所指的列表中元素一致的記錄,如果找到結(jié)果為T(mén)rue,否則為False。

輸出結(jié)果:

0 True

1 False

2 False

3 False

4 True

Name: 語(yǔ)文, dtype: bool

21.9數(shù)據(jù)分區(qū)

根據(jù)某個(gè)分區(qū)標(biāo)準(zhǔn),將數(shù)據(jù)按照所屬區(qū)域進(jìn)行劃分,并用相應(yīng)的標(biāo)簽表示,可以用cut()方法來(lái)實(shí)現(xiàn)。

語(yǔ)法格式如下:

cut(series, bins, right=True, labels=NULL)

其中:

series表示需要分組的數(shù)據(jù);

bins表示分組的依據(jù),是一個(gè)列表,其元素為劃分分區(qū)的邊界值,如[0,72,96,120],就是劃分3個(gè)分區(qū),即0~72、72~96、96~120,默認(rèn)的是“左包右不包”;

right表示分組時(shí)右邊是否閉合;

labels表示分組的自定義標(biāo)簽,也可以不重新定義。

下面對(duì)上述學(xué)生成績(jī)表中的語(yǔ)文成績(jī)進(jìn)行分組,并增加一個(gè)新的列“語(yǔ)文等級(jí)”。

import pandas as pd

from pandas import read_excel #導(dǎo)入read_execel

file='d:/student.xlsx'

df=read_excel(file,sheet_name=0,converters={'學(xué)號(hào)':str})

df['年級(jí)']=df['學(xué)號(hào)'].str.slice(0,2)

df['班級(jí)']=df['學(xué)號(hào)'].str.slice(0,4)

df.總分=df.語(yǔ)文+df.數(shù)學(xué)+df.英語(yǔ)

bins=[0,72,96,max(df.語(yǔ)文)+1] #

lab=['不及格','及格','優(yōu)秀']

grade=pd.cut(df.語(yǔ)文,bins,right=False,labels=lab)

df['語(yǔ)文等級(jí)']=grade

print(df.head())

print("語(yǔ)文成績(jī)分等級(jí)統(tǒng)計(jì)結(jié)果:")

print(df['語(yǔ)文等級(jí)'].value_counts())

運(yùn)行結(jié)果如下:

序號(hào) 學(xué)號(hào) 姓名 年級(jí) 班級(jí) 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 語(yǔ)文等級(jí)

0 1 070101 王博宇 07 0701 84 71 93 248 及格

1 2 070102 陳冠濤 07 0701 89 89 89 267 及格

2 3 070103 李文博 07 0701 89 72 76 237 及格

3 4 070204 姜海燕 07 0702 89 89 89 267 及格

4 5 070205 林若溪 07 0702 91 95 83 269 及格

語(yǔ)文成績(jī)分等級(jí)統(tǒng)計(jì)結(jié)果:

及格 17

優(yōu)秀 10

不及格 4

Name: 語(yǔ)文等級(jí), dtype: int64

Python小知識(shí):如何截取路徑中的文件名

Python截取路徑中的文件名

假設(shè)有一個(gè)文件的路徑名為:“K:\Project\FilterDriver\DriverCodes\hello.txt”,而且路徑和文件名都不是固定的。如何得到hello.txt這段字符串呢?

一、字符串分割–split()函數(shù)

1

2

path="K:/Project/FilterDriver/DriverCodes/hello.txt"

printpath.split("/")[-1]

執(zhí)行結(jié)果:hello.txt。

二、使用basename()函數(shù)

1

2

3

import os.path

filePath="K:/Project/FilterDriver/DriverCodes/hello.txt"

printos.path.basename(filePath)

執(zhí)行的結(jié)果仍然是hello.txt。

python 截取指定字符前后的所有字符的函數(shù)

可以參考下面的代碼:

#!/usr/bin/python

# encoding: utf-8

# filename: baiduzhidao.py

ln = "4564612131856+654654654654"

print ln.split("+")

#~ Result:

#~ python -u "baiduzhidao.py"

#~ ['4564612131856', '654654654654']

#~ Exit code: 0? ? Time: 0.052

Python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得Python成為一門(mén)易讀、易維護(hù),并且被大量用戶(hù)所歡迎的、用途廣泛的語(yǔ)言,設(shè)計(jì)者開(kāi)發(fā)時(shí)總的指導(dǎo)思想是,對(duì)于一個(gè)特定的問(wèn)題,只要有一種最好的方法來(lái)解決就好了。

Python本身被設(shè)計(jì)為可擴(kuò)充的。并非所有的特性和功能都集成到語(yǔ)言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語(yǔ)言、C++、Cython來(lái)編寫(xiě)擴(kuò)充模塊。

Python是完全面向?qū)ο蟮恼Z(yǔ)言。函數(shù)、模塊、數(shù)字、字符串都是對(duì)象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。

擴(kuò)展資料:

python參考函數(shù)

vars(obj) 返回一個(gè)object的name space。用dictionary表示

locals() 返回一個(gè)局部name space,用dictionary表示

globals() 返回一個(gè)全局name space,用dictionary表示

type(obj) 查看一個(gè)obj的類(lèi)型

isinstance(obj,cls) 查看obj是不是cls的instance

issubclass(subcls,supcls) 查看subcls是不是supcls的子類(lèi)

參考資料來(lái)源:百度百科-Python (計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言)


文章標(biāo)題:python截取函數(shù),python數(shù)組截取
網(wǎng)站URL:http://weahome.cn/article/dsiscpo.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部