pandas處理數(shù)據(jù)的基本方法

pandas的數(shù)據(jù)結(jié)構(gòu)常用到一維(series),二維(DataFrame)等:

創(chuàng)新互聯(lián)建站致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、成都小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。

對(duì)于二維數(shù)據(jù)

二維數(shù)據(jù)包含行索引和列索引

行索引叫index,axis=0

列索引叫columns,axis=1

下面使用代碼構(gòu)造一個(gè)二維結(jié)構(gòu)數(shù)據(jù)如下:

import pandas as pd

import numpy as np

# normal里面參數(shù),此次構(gòu)造的是平均值為0,標(biāo)準(zhǔn)差為1,10行11列數(shù)據(jù)

test_data = np.random.normal(0,1,[10,11])

test_data_frame = pd.DataFrame(test_data)

print(test_data_frame)

可以看出,默認(rèn)添加了行索引[index]和列索引[columns]

若需要自己指定行索引或者列索引,可以在構(gòu)造DataFrame時(shí)加相應(yīng)參數(shù),如下這樣: np.random.normal(0,1,[10,11])

index_list = ["row"+str(i) for i in range(10)]

column_list = ["column"+str(i) for i in range(11)]

test_data_frame = pd.DataFrame(test_data,index=index_list,columns=column_list)

print(test_data_frame)

打印效果如下:

可以通過(guò)test_data .shape獲取數(shù)據(jù)的行列形狀([10,11]),即可以這樣獲取數(shù)據(jù)的行數(shù)和列數(shù):

# 獲取行數(shù)

test_data.shape[0]

# 獲取列數(shù)

test_data.shape[1]

對(duì)于DataFrame的其他數(shù)據(jù)獲取如下:

# 獲取行索引列表

test_data_frame.index

# 獲取列索引列表

test_data_frame.columns

# 獲取除索引外的數(shù)據(jù)矩陣值

test_data_frame.values

# 將數(shù)據(jù)轉(zhuǎn)置(包括索引)

test_data_frame.T

# 獲取數(shù)據(jù)前num行(若沒有num值,默認(rèn)獲取前五行)

num=5

test_data_frame.head(num)

# 獲取數(shù)據(jù)后num行(若沒有num值,默認(rèn)獲取后五行)

test_data_frame.tail(num)

# 將原來(lái)的行索引刪除,變成默認(rèn)的數(shù)字行索引

test_data_frame = test_data_frame.reset_index(drop=True)

# 將原來(lái)的行索引變成值,用默認(rèn)的數(shù)字行索引作為行索引

test_data_frame = test_data_frame.reset_index()

還可以設(shè)置多重索引如下:

test_data_frame=test_data_frame.set_index(keys=['column0','column1'])

print(test_data_frame)

打印效果如下:

此時(shí)的數(shù)據(jù)結(jié)構(gòu)為MultiIndex結(jié)構(gòu)數(shù)據(jù)(三維數(shù)據(jù))

可以通過(guò)pandas生成一組連續(xù)時(shí)間序列

# 構(gòu)建一個(gè)從2018.1.1開始的10天時(shí)間序列

date_test = pd.date_range(start='2018-1-1',end=None,periods=10,freq="D")

print(date_test)

打印效果如下:

其中start為開始時(shí)間,end為結(jié)束時(shí)間,periods為相隔天數(shù)(若無(wú)end的情況下),freq為指定間隔時(shí)間,默認(rèn)為“D”(每天),可以指定“12H”表示每12小時(shí),“B”每個(gè)工作日(周一到周五,包含節(jié)假日)

series一維結(jié)構(gòu):

一維數(shù)據(jù)(series)只有行索引

即將二維Dataframe取特定行就是一維數(shù)據(jù)如:

serise_data = test_data_frame['column1']

print(serise_data)

打印效果如下:

pandas中二維Dataframe數(shù)據(jù)獲取

直接使用索引獲取數(shù)據(jù)必須先列后行

如取第一列,第三行數(shù)據(jù),test_data_frame[‘column0’][‘row2’]

通過(guò)索引獲取數(shù)據(jù):

通過(guò)索引名獲取范圍數(shù)據(jù)

# start_index:end_index,表示開始的行索引到結(jié)束的行索引,xx_column表示取哪一列的值

test_data_frame.loc[start_index:end_index,xx_column]

通過(guò)索引下標(biāo)獲取范圍數(shù)據(jù)

# 表示取第0行到第3行的xx_column列的值

test_data_frame.iloc[0:3,xx_column]

通過(guò)索引進(jìn)行排序

# ascending默認(rèn)為Ture升序

test_data_frame = test_data_frame.sort_index(ascending=False,)

print(test_data_frame)

打印效果如下:

通過(guò)內(nèi)容進(jìn)行排序

# by指定通過(guò)哪一列排序,此處為第二列,降序

test_data_frame = test_data_frame.sort_values(by="column1",ascending=False,)

print(test_data_frame)

打印效果如下:

DataFrame數(shù)據(jù)統(tǒng)計(jì)分析的基本方法

求極值的方法

求最大值:

# 對(duì)列求最大值

test_data_frame.max(0)

# 對(duì)行求最大值

test_data_frame.max(1)

# 求最小值同理

test_data_frame.max(0) #對(duì)列求最小值

test_data_frame.max(1) #對(duì)行求最小值

對(duì)列求最大值如下:

對(duì)行求最大值如下:

還可以獲取最大值和最小值的位置

# 獲取列最大值的位置

test_data_frame.idxmax(axis=0)

# 獲取行最大值的位置

test_data_frame.idxmax(axis=1)

# 獲取列最小值得位置

test_data_frame.idxmin(axis=0)

# 獲取行最小值得位置

test_data_frame.idxmin(axis=1)

列最大值的位置如下:

行最大值位置如下:

累計(jì)求和無(wú)錫正規(guī)婦科醫(yī)院 http://www.jlfukeyy.com/

# 累計(jì)求第二列的值

test_data_frame.column1.cumsum()

打印結(jié)果如下:

不能使用test_data_frame.row1.cumsum()累計(jì)求行的和

通過(guò)比較大小來(lái)篩選數(shù)據(jù)

# 取第二列大于0,且第四列大于0的數(shù)據(jù)

test_data_frame[(test_data_frame['column1'] > 0) & (test_data_frame['column3'] > 0)]

打印效果如下:

還可以這樣篩選如下:

# 取第二列大于0,且第四列大于0的數(shù)據(jù)

test_data_frame.query("column1>0 & column3>0")

打印結(jié)果與上面一致

文件讀寫方法

讀取csv文件

# 讀取xxxx.csv文件,并只讀取第二列和第三列數(shù)據(jù)

csv_dataframe = pd.read_csv("xxxx.csv",usecols=['column1', 'column2'])

讀取excel文件

# 讀取xxx.xlsx文件

excel_data = pd.read_excel('xxx.xlsx')

寫入csv文件

# index表示是否將行索引寫入文件,columns指定將哪幾列寫入到文件

# mode默認(rèn)為r,表示重寫,a表示追加,header表示是否將索引列寫入文件

test_data_frame.to_csv('xxx.csv',index=False,columns=['column1','column2','column3'],mode='a',header=False)

寫入到excel文件類似的

# index表示是否將行索引寫入文件,columns指定將哪幾列寫入到文件

# excel沒有mode參數(shù),header表示是否將索引列寫入文件

test_data_frame.to_excel('xxx.xlsx',index=False,columns=['column1','column2','column3'],header=False)

excel如下:

缺失值處理的方法

處理缺失值為NaN的數(shù)據(jù)

可以刪除NaN的行:test_data_frame.dropna()

也可以以其他值添加:

# 將第二列數(shù)據(jù)的NaN值用該列的平均值替換,test_data_frame['column1'].mean()取第二列的平均值

test_data_frame['column1'].fillna(test_data_frame['column1'].mean(),inplace=True)

處理缺失值為其他(如?)的數(shù)據(jù)

其他格式異常值替換可以先將其替換成NaN的值再通過(guò)NaN替換成其他如平均值等

# 將test_data_frame 中的?全部替換成NaN的值

test_data_frame = test_data_frame.replace(to_replace="?",value=np.nan)

然后再通過(guò)上面的缺失值NaN處理

當(dāng)前名稱:pandas處理數(shù)據(jù)的基本方法
轉(zhuǎn)載來(lái)源:http://muchs.cn/article38/jpepsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、用戶體驗(yàn)網(wǎng)站導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)