Python2.X range()函數(shù)可創(chuàng)建一個(gè)整數(shù)列表,一般用在for循環(huán)中。
成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元滄州做網(wǎng)站,已為上家服務(wù),為滄州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18982081108
Python3 range()函數(shù)返回的是一個(gè)可迭代對(duì)象,類(lèi)型是對(duì)象,而不是列表類(lèi)型,所以打印的時(shí)候不會(huì)打印列表。
Python3 list()函數(shù)是對(duì)象迭代器,可以把range()返回的可迭代對(duì)象轉(zhuǎn)為一個(gè)列表,返回的變量類(lèi)型為列表。
Python2 range()函數(shù)返回的是列表。
Python range()函數(shù)語(yǔ)法
range(start, stop[,step])
參數(shù)說(shuō)明:
start:計(jì)數(shù)從start開(kāi)始,默認(rèn)是從0開(kāi)始;比如:range(5)等價(jià)于range(0,5)。
stop:計(jì)數(shù)到stop結(jié)束,但不包括stop;比如:range(0,5)是[0, 1, 2, 3, 4]沒(méi)有5。
step:步長(zhǎng),默認(rèn)為1;比如:range(0,5)等價(jià)于range(0,5,1)。
python中range()函數(shù)的用法:
(1)range(stop)
創(chuàng)建一個(gè)(0,stop)之間的整數(shù)序列,步長(zhǎng)為1。
(2)range(start,stop)
創(chuàng)建一個(gè)(start,stop)之間的整數(shù)序列,步長(zhǎng)為1。
(3)range(start,stop,step)
創(chuàng)建一個(gè)[start,stop)之間的整數(shù)序列,步長(zhǎng)為step。
參數(shù)介紹:
start:表示從返回序列的起始編號(hào),默認(rèn)情況下從0開(kāi)始。
stop:表示生成最多但不包括此數(shù)字的數(shù)字。
step:指的是序列中每個(gè)數(shù)字之間的差異,默認(rèn)值為1。
相關(guān)介紹
range()是Python的內(nèi)置函數(shù),在用戶(hù)需要執(zhí)行特定次數(shù)的操作時(shí)使用它,表示循環(huán)的意思。內(nèi)置函數(shù)range()可用于以列表的形式生成數(shù)字序列。在range()函數(shù)中最常見(jiàn)用法是使用for和while循環(huán)迭代序列類(lèi)型(List,string等)。
簡(jiǎn)單的來(lái)說(shuō),range()函數(shù)允許用戶(hù)在給定范圍內(nèi)生成一系列數(shù)字。根據(jù)用戶(hù)傳遞給函數(shù)的參數(shù)數(shù)量,用戶(hù)可以決定該系列數(shù)字的開(kāi)始和結(jié)束位置以及一個(gè)數(shù)字與下一個(gè)數(shù)字之間的差異有多大。
第一部分是生成數(shù)據(jù)表,常見(jiàn)的生成方法有兩種,第一種是導(dǎo)入外部數(shù)據(jù),第二種是直接寫(xiě)入數(shù)據(jù)。 Excel 中的文件菜單中提供了獲取外部數(shù)據(jù)的功能,支持?jǐn)?shù)據(jù)庫(kù)和文本文件和頁(yè)面的多種數(shù)據(jù)源導(dǎo)入。
獲取外部數(shù)據(jù)
python 支持從多種類(lèi)型的數(shù)據(jù)導(dǎo)入。在開(kāi)始使用 python 進(jìn)行數(shù)據(jù)導(dǎo)入前需要先導(dǎo)入 pandas 庫(kù),為了方便起見(jiàn),我們也同時(shí)導(dǎo)入 numpy 庫(kù)。
1 import numpy as np
2 import pandas as pd
導(dǎo)入數(shù)據(jù)表
下面分別是從 excel 和 csv 格式文件導(dǎo)入數(shù)據(jù)并創(chuàng)建數(shù)據(jù)表的方法。代碼是最簡(jiǎn)模式,里面有很多可選參數(shù)設(shè)置,例如列名稱(chēng),索引列,數(shù)據(jù)格式等等。感興趣的朋友可以參考 pandas 的
官方文檔。
1 df=pd.DataFrame(pd.read_csv(‘name.csv’,header=1))
2 df=pd.DataFrame(pd.read_excel(‘name.xlsx’))
創(chuàng)建數(shù)據(jù)表
另一種方法是通過(guò)直接寫(xiě)入數(shù)據(jù)來(lái)生成數(shù)據(jù)表,excel 中直接在單元格中輸入數(shù)據(jù)就可以,python 中通過(guò)下面的代碼來(lái)實(shí)現(xiàn)。生成數(shù)據(jù)表的函數(shù)是 pandas 庫(kù)中的 DateFrame 函數(shù),數(shù)據(jù)表一共有 6 行數(shù)據(jù),每行有 6 個(gè)字段。在數(shù)據(jù)中我們特意設(shè)置了一些 NA 值和有問(wèn)題的字段,例如包含空格等。后面將在數(shù)據(jù)清洗步驟進(jìn)行處理。后面我們將統(tǒng)一以 DataFrame 的簡(jiǎn)稱(chēng) df 來(lái)命名數(shù)據(jù)表。
1 df = pd.DataFrame({‘id’:[1001,1002,1003,1004,1005,1006],
2 ‘date’:pd.date_range(‘20130102’, periods=6),
3 ‘city’:['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '],
4 ‘a(chǎn)ge’:[23,44,54,32,34,32],
5 ‘category’:[‘100-A’,‘100-B’,‘110-A’,‘110-C’,‘210-A’,‘130-F’],
6 ‘price’:[1200,np.nan,2133,5433,np.nan,4432]},
7 columns =[‘id’,‘date’,‘city’,‘category’,‘a(chǎn)ge’,‘price’])
這是剛剛創(chuàng)建的數(shù)據(jù)表,我們沒(méi)有設(shè)置索引列,price 字段中包含有 NA 值,city 字段中還包含了一些臟數(shù)據(jù)。
數(shù)據(jù)表檢查
python 中處理的數(shù)據(jù)量通常會(huì)比較大,所以就需要我們對(duì)數(shù)據(jù)表進(jìn)行檢查。比如我們之前的文章中介紹的紐約出租車(chē)數(shù)據(jù)和 Citibike 的騎行數(shù)據(jù),數(shù)據(jù)量都在千萬(wàn)級(jí),我們無(wú)法一目了然的了解數(shù)據(jù)表的整體情況,必須要通過(guò)一些方法來(lái)獲得數(shù)據(jù)表的關(guān)鍵信息。數(shù)據(jù)表檢查的另一個(gè)目的是了解數(shù)據(jù)的概況,例如整個(gè)數(shù)據(jù)表的大小,所占空間,數(shù)據(jù)格式,是否有空值和重復(fù)項(xiàng)和具體的數(shù)據(jù)內(nèi)容。為后面的清洗和預(yù)處理做好準(zhǔn)備。
數(shù)據(jù)維度(行列)
Excel 中可以通過(guò) CTRL 向下的光標(biāo)鍵,和 CTRL 向右的光標(biāo)鍵來(lái)查看行號(hào)和列號(hào)。Python 中使用 shape 函數(shù)來(lái)查看數(shù)據(jù)表的維度,也就是行數(shù)和列數(shù),函數(shù)返回的結(jié)果(6,6)表示數(shù)據(jù)表有 6 行,6 列。下面是具體的代碼。
1 #查看數(shù)據(jù)表的維度
2 df.shape
3 (6, 6)
數(shù)據(jù)表信息
使用 info 函數(shù)查看數(shù)據(jù)表的整體信息,這里返回的信息比較多,包括數(shù)據(jù)維度,列名稱(chēng),數(shù)據(jù)格式和所占空間等信息。
1 #數(shù)據(jù)表信息
2 df.info()
4 class ‘pandas.core.frame.DataFrame’
5 RangeIndex: 6 entries, 0 to 5
6 Data columns (total 6 columns):
7 id 6 non-null int64
8 date 6 non-null datetime64[ns]
9 city 6 non-null object
10 category 6 non-null object
11 age 6 non-null int64
12 price 4 non-null float64
13 dtypes: datetime64ns, float64(1), int64(2), object(2)
14 memory usage: 368.0 bytes
查看數(shù)據(jù)格式
Excel 中通過(guò)選中單元格并查看開(kāi)始菜單中的數(shù)值類(lèi)型來(lái)判斷數(shù)據(jù)的格式。Python 中使用 dtypes 函數(shù)來(lái)返回?cái)?shù)據(jù)格式。
Dtypes 是一個(gè)查看數(shù)據(jù)格式的函數(shù),可以一次性查看數(shù)據(jù)表中所有數(shù)據(jù)的格式,也可以指定一列來(lái)單獨(dú)查看。
1#查看數(shù)據(jù)表各列格式
2df.dtypes
3
4id int64
5date datetime64[ns]
6city object
7category object
8age int64
9price float64
10dtype: object
11
12#查看單列格式
13df[‘B’].dtype
14
15dtype(‘int64’)
查看空值
Excel 中查看空值的方法是使用“定位條件”功能對(duì)數(shù)據(jù)表中的空值進(jìn)行定位?!岸ㄎ粭l件”在“開(kāi)始”目錄下的“查找和選擇”目錄中。
Isnull 是 Python 中檢驗(yàn)空值的函數(shù),返回的結(jié)果是邏輯值,包含空值返回 True,不包含則返回 False??梢詫?duì)整個(gè)數(shù)據(jù)表進(jìn)行檢查,也可以單獨(dú)對(duì)某一列進(jìn)行空值檢查。
df_isnull
1#檢查特定列空值
2df[‘price’].isnull()
3
40 False
51 True
62 False
73 False
84 True
95 False
10Name: price, dtype: bool
查看唯一值
Excel 中查看唯一值的方法是使用“條件格式”對(duì)唯一值進(jìn)行顏色標(biāo)記。Python 中使用 unique 函數(shù)查看唯一值。
Unique 是查看唯一值的函數(shù),只能對(duì)數(shù)據(jù)表中的特定列進(jìn)行檢查。下面是代碼,返回的結(jié)果是該列中的唯一值。類(lèi)似與 Excel 中刪除重復(fù)項(xiàng)后的結(jié)果。
1 #查看 city 列中的唯一值
2 df[‘city’].unique()34array(['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '], dtype=object)
查看數(shù)據(jù)表數(shù)值
Python 中的 Values 函數(shù)用來(lái)查看數(shù)據(jù)表中的數(shù)值。以數(shù)組的形式返回,不包含表頭信息。
1#查看數(shù)據(jù)表的值
2df.values
3
4array([[1001, Timestamp(‘2013-01-02 00:00:00’), 'Beijing ', ‘100-A’, 23,
5 1200.0],
6 [1002, Timestamp(‘2013-01-03 00:00:00’), ‘SH’, ‘100-B’, 44, nan],
7 [1003, Timestamp(‘2013-01-04 00:00:00’), ’ guangzhou ', ‘110-A’, 54,
8 2133.0],
9 [1004, Timestamp(‘2013-01-05 00:00:00’), ‘Shenzhen’, ‘110-C’, 32,
10 5433.0],
11 [1005, Timestamp(‘2013-01-06 00:00:00’), ‘shanghai’, ‘210-A’, 34,
12 nan],
13 [1006, Timestamp(‘2013-01-07 00:00:00’), 'BEIJING ', ‘130-F’, 32,
14 4432.0]], dtype=object)
查看列名稱(chēng)
Colums 函數(shù)用來(lái)單獨(dú)查看數(shù)據(jù)表中的列名稱(chēng)。
1 #查看列名稱(chēng)
2 df.columns
3
4 Index([‘id’, ‘date’, ‘city’, ‘category’, ‘a(chǎn)ge’, ‘price’], dtype=‘object’)
查看前 10 行數(shù)據(jù)
Head 函數(shù)用來(lái)查看數(shù)據(jù)表中的前 N 行數(shù)據(jù),默認(rèn) head()顯示前 10 行數(shù)據(jù),可以自己設(shè)置參數(shù)值來(lái)確定查看的行數(shù)。下面的代碼中設(shè)置查看前 3 行的數(shù)據(jù)。
1#查看前 3 行數(shù)據(jù)``df.head(``3``)
Tail 行數(shù)與 head 函數(shù)相反,用來(lái)查看數(shù)據(jù)表中后 N 行的數(shù)據(jù),默認(rèn) tail()顯示后 10 行數(shù)據(jù),可以自己設(shè)置參數(shù)值來(lái)確定查看的行數(shù)。下面的代碼中設(shè)置查看后 3 行的數(shù)據(jù)。
1#查看最后 3 行df.tail(3)
如下:
1、index函數(shù):用于從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。
2、index方法語(yǔ)法:list.index(x[,?start[,?end]])。
3、參數(shù):x-- 查找的對(duì)象。start-- 可選,查找的起始位置。end-- 可選,查找的結(jié)束位置。
4、返回值:該方法返回查找對(duì)象的索引位置,如果沒(méi)有找到對(duì)象則拋出異常。
5、實(shí)例:
代碼:str1?=?"this?is?string?example....wow!!!";str2?=?"exam"。
index函數(shù)為print(str1.index(str2))。
python中index函數(shù)怎么用?
Python中index方法檢測(cè)字符串中是否包含子字符串 str ,如果指定 beg(開(kāi)始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),該方法與 python find方法一樣,只不過(guò)如果str不在string中會(huì)報(bào)一個(gè)異常。
index函數(shù)一般用處是在序列中檢索參數(shù)并返回第一次出現(xiàn)的索引,沒(méi)找到就會(huì)報(bào)錯(cuò)。
在進(jìn)行數(shù)據(jù)處理時(shí),如果數(shù)據(jù)簡(jiǎn)單,數(shù)量不多,excel是大家的首選。但是當(dāng)數(shù)據(jù)眾多,類(lèi)型復(fù)雜,需要靈活地顯示切片、進(jìn)行索引、以及排序時(shí),python會(huì)更加方便。借助python中的numpy和pandas庫(kù),它能快速完成各種任務(wù),包括數(shù)據(jù)的創(chuàng)建、檢查、清洗、預(yù)處理、提取、篩選、匯總、統(tǒng)計(jì)等。接下來(lái)幾篇文章,將以excel為參照,介紹python中數(shù)據(jù)的處理。
提到pandas,那就不得不提兩類(lèi)重要的數(shù)據(jù)結(jié)構(gòu),Series和DataFrame,這兩類(lèi)數(shù)據(jù)結(jié)構(gòu)都是建立在numpy的數(shù)組array基礎(chǔ)上。與array相比,Series是一個(gè)一維的數(shù)據(jù)集,但是每個(gè)數(shù)據(jù)元素都帶有一個(gè)索引,有點(diǎn)類(lèi)似于字典。而DataFrame在數(shù)組的基礎(chǔ)上,增加了行索引和列索引,類(lèi)似于Series的字典,或者說(shuō)是一個(gè)列表集。
所以在數(shù)據(jù)處理前,要安裝好numpy , pandas。接下來(lái)就看看如何完成一套完整的數(shù)據(jù)操作。
創(chuàng)建數(shù)據(jù)表的方法分兩種,分別是從外部導(dǎo)入數(shù)據(jù),以及直接寫(xiě)入數(shù)據(jù)。
在python中,也可外部導(dǎo)入xlsx格式文件,使用read_excel()函數(shù):
import pandas as pd
from pandas import DataFrame,Series
data=DataFrame(pd.read_excel('c:/python27/test.xlsx'))
print data
輸出:
Gene Size Function
0 arx1 411 NaN
1 arx2 550 monooxygenase
2 arx3 405 aminotransferase
……
即:調(diào)用pandas中read_excel屬性,來(lái)讀取文件test.xlsx,并轉(zhuǎn)換成DataFrame格式,賦給變量data。在每一行后,自動(dòng)分了一個(gè)索引值。除了excel,還支持以下格式文件的導(dǎo)入和寫(xiě)入:
Python寫(xiě)入的方法有很多,但還是不如excel方便。常用的例如使用相等長(zhǎng)度的字典或numpy數(shù)組來(lái)創(chuàng)建:
data1 = DataFrame(
{'Gene':['arx1','arx2','arx3'],
'Size':[411,550,405],
'Func':[np.NaN,'monooxygenase','aminotransferase ']})
print data1
輸出
Func Gene Size
0 NaN arx1 411
1 monooxyg arx2 550
2 amino arx3 405
分配一個(gè)行索引后,自動(dòng)排序并輸出。
在python中,可以使用info()函數(shù)查看整個(gè)數(shù)據(jù)的詳細(xì)信息。
print data.info()
輸出
RangeIndex: 7 entries, 0 to 6
Data columns (total 3 columns):
Gene 7 non-null object
Size 7 non-null int64
Function 5 non-null object
dtypes: int64(1), object(2)
memory usage: 240.0+ bytes
None
此外,還可以通過(guò)shape, column, index, values, dtypes等函數(shù)來(lái)查看數(shù)據(jù)維度、行列組成、所有的值、 數(shù)據(jù)類(lèi)型:
print data1.shape
print data1.index
print data1.columns
print data1.dtypes
輸出
(3, 3)
RangeIndex(start=0, stop=3, step=1)
Index([u'Func', u'Gene', u'Size'], dtype='object')
Func object
Gene object
Size int64
dtype: object
在excel中可以按“F5”,在“定位條件”中選擇“空值”,選中后,輸入替換信息,再按“Ctrl+Enter”即可完成替換。
在python中,使用函數(shù) isnull 和 notnull 來(lái)檢測(cè)數(shù)據(jù)丟失, 包含空值返回True,不包含則返回False。
pd.isnull(data1)
pd.notnull(data1)
也可以使用函數(shù)的實(shí)例方法,以及加入?yún)?shù),對(duì)某一列進(jìn)行檢查:
print data1['Func'].isnull()
輸出
Func Gene Size
0 True False False
1 False False False
2 False False False
再使用fillna對(duì)空值進(jìn)行填充:
data.fillna(value=0)
#用0來(lái)填充空值
data['Size'].fillna(data1['Size'].mean())
#用data1中Size列的平均值來(lái)填充空值
data['Func']=data['Func'].map(str.strip)
#清理Func列中存在的空格
Excel中可以按“Ctrl+F”,可調(diào)出替換對(duì)話(huà)框,替換相應(yīng)數(shù)據(jù)。
Python中,使用replace函數(shù)替換:
data['Func'].replace('monooxygenase', 'oxidase')
將Func列中的'monooxygenase'替換成'oxidase'。
Excel中,通過(guò)“數(shù)據(jù)-篩選-高級(jí)”可以選擇性地看某一列的唯一值。
Python中,使用unique函數(shù)查看:
print data['Func'].unique()
輸出
[nan u'monooxygenase' u'aminotransferase' u'methyltransferase']
Excel中,通過(guò)UPPER、LOWER、PROPER等函數(shù)來(lái)變成大寫(xiě)、小寫(xiě)、首字母大寫(xiě)。
Python中也有同名函數(shù):
data1['Gene'].str.lower()
Excel中可以通過(guò)“數(shù)據(jù)-刪除重復(fù)項(xiàng)”來(lái)去除重復(fù)值。
Python中,可以通過(guò)drop_duplicates函數(shù)刪除重復(fù)值:
print data['Func'].drop_duplicates()
輸出
0 NaN
1 monooxygenase
2 aminotransferase
3 methyltransferase
Name: Func, dtype: object
還可以設(shè)置“ keep=’last’ ”參數(shù),后出現(xiàn)的被保留,先出現(xiàn)的被刪除:
print data['Func'].drop_duplicates(keep='last')
輸出
2 aminotransferase
3 methyltransferase
6 monooxygenase
8 NaN
Name: Func, dtype: object
內(nèi)容參考:
Python For Data Analysis
藍(lán)鯨網(wǎng)站分析博客,作者藍(lán)鯨(王彥平)