loc中的數(shù)據(jù)是列名,是字符串,所以前后都要取;iloc中數(shù)據(jù)是int整型,所以是Python默認(rèn)的前閉后開
目前創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、南崗網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
構(gòu)建數(shù)據(jù)集df
loc函數(shù)主要通過行標(biāo)簽索引行數(shù)據(jù) ,劃重點, 標(biāo)簽!標(biāo)簽!標(biāo)簽!
loc[1] 選擇行標(biāo)簽是1的(從0、1、2、3這幾個行標(biāo)簽中)
loc[0:1] 和 loc[0,1]的區(qū)別,其實最重要的是loc[0:1]和iloc[0:1]
索引某一列數(shù)據(jù),loc[:,0:1],還是標(biāo)簽,注意,如果列標(biāo)簽是個字符,比如'a',loc['a']是不行的,必須為loc[:,'a']。
但如果行標(biāo)簽是'a',選取這一行,用loc['a']是可以的。
iloc 主要是通過行號獲取行數(shù)據(jù),劃重點,序號!序號!序號!
iloc[0:1],由于Python默認(rèn)是前閉后開,所以,這個選擇的只有第一行!
如果想用標(biāo)簽索引,如iloc['a'],就會報錯,它只支持int型。
ix——結(jié)合前兩種的混合索引,即可以是行序號,也可以是行標(biāo)簽。
如選擇prize10(prize為一個標(biāo)簽)的,即 df.loc[df.prize10]
還有并或等操作
python選取特定列——pandas的iloc和loc以及icol使用
pandas入門——loc與iloc函數(shù)
pandas中l(wèi)oc、iloc、ix的區(qū)別
pandas基礎(chǔ)之按行取數(shù)(DataFrame)
首先是準(zhǔn)備工作,導(dǎo)入需要使用的庫,讀取并創(chuàng)建數(shù)據(jù)表取名為loandata。
?
1
2
3
import numpy as np
import pandas as pd
loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
設(shè)置索引字段
在開始提取數(shù)據(jù)前,先將member_id列設(shè)置為索引字段。然后開始提取數(shù)據(jù)。
?
1
Loandata = loandata.set_index('member_id')
按行提取信息
第一步是按行提取數(shù)據(jù),例如提取某個用戶的信息。下面使用ix函數(shù)對member_id為1303503的用戶信息進(jìn)行了提取。
?
1
loandata.ix[1303503]
按列提取信息
第二步是按列提取數(shù)據(jù),例如提取用戶工作年限列的所有信息,下面是具體的代碼和提取結(jié)果,顯示了所有用戶的工作年齡信息。
?
1
loandata.ix[:,'emp_length']
按行與列提取信息
第三步是按行和列提取信息,把前面兩部的查詢條件放在一起,查詢特定用戶的特定信息,下面是查詢member_id為1303503的用戶的emp_length信息。
?
1
loandata.ix[1303503,'emp_length']
在前面的基礎(chǔ)上繼續(xù)增加條件,增加一行同時查詢兩個特定用戶的貸款金額信息。具體代碼和查詢結(jié)果如下。結(jié)果中分別列出了兩個用戶的代碼金額。
?
1
loandata.ix[[1303503,1298717],'loan_amnt']
在前面的代碼后增加sum函數(shù),對結(jié)果進(jìn)行求和,同樣是查詢兩個特定用戶的貸款進(jìn)行,下面的結(jié)果中直接給出了貸款金額的匯總值。
?
1
loandata.ix[[1303503,1298717],'loan_amnt'].sum()
除了增加行的查詢條件以外,還可以增加列的查詢條件,下面的代碼中查詢了一個特定用戶的貸款金額和年收入情況,結(jié)果中分別顯示了這兩個字段的結(jié)果。
?
1
loandata.ix[1303503,['loan_amnt','annual_inc']]
多個列的查詢也可以進(jìn)行求和計算,在前面的代碼后增加sum函數(shù),對這個用戶的貸款金額和年收入兩個字段求和,并顯示出結(jié)果。
?
1
loandata.ix[1303503,['loan_amnt','annual_inc']].sum()
第一、檢查數(shù)據(jù)表
Python中使用shape函數(shù)來查看數(shù)據(jù)表的維度,也就是行數(shù)以及列數(shù)。你可以使用info函數(shù)來查看數(shù)據(jù)表的整體信息,使用dtype函數(shù)來返回數(shù)據(jù)格式;lsnull是Python中檢驗空值的函數(shù),可以對整個數(shù)據(jù)表進(jìn)行檢查,也可以單獨(dú)對某一行進(jìn)行空值檢查,返回的結(jié)構(gòu)是邏輯值,包含空值返回true,不包含則返回false。
第二、數(shù)據(jù)清洗
Python可以進(jìn)行數(shù)據(jù)清洗,Python中處理空值的方法比較靈活,可以使用Dropna函數(shù)用來刪除數(shù)據(jù)表中包含空值的數(shù)據(jù),也可以使用fillna函數(shù)對空值進(jìn)行填充;Python中dtype是查看數(shù)據(jù)格式的函數(shù),與之對應(yīng)的是astype函數(shù),用來更改數(shù)據(jù)格式,Rename是更改列名稱的函數(shù),drop_duplicates函數(shù)刪除重復(fù)值,replace函數(shù)實現(xiàn)數(shù)據(jù)替換。
第三、數(shù)據(jù)提取
進(jìn)行數(shù)據(jù)提取時,主要使用三個函數(shù):loc、iloc以及ix。Loc函數(shù)按標(biāo)簽進(jìn)行提取,iloc按位置進(jìn)行提取,ix可以同時按照標(biāo)簽和位置進(jìn)行提取。除了按標(biāo)簽和位置提取數(shù)據(jù)之外,還可以按照具體的條件進(jìn)行提取,比如使用loc和isin兩個函數(shù)配合使用。
第四、數(shù)據(jù)篩選
Python數(shù)據(jù)分析還可以進(jìn)行數(shù)據(jù)篩選,Python中使用loc函數(shù)配合篩選條件來完成篩選功能,配合sum和count函數(shù)還能實現(xiàn)Excel中sumif和countif函數(shù)的功能。使用的主要函數(shù)是groupby和pivot_table;groupby是進(jìn)行分類匯總的函數(shù),使用方法比較簡單,groupby按列名稱出現(xiàn)的順序進(jìn)行分組。
pre
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
def func(x):
return -(x-2)*(x-8)+40
x=np.linspace(0,10)
y=func(x)
fig,ax = plt.subplots()
plt.plot(x,y,'r',linewidth=2)
plt.ylim(ymin=20)
a=2
b=9
ax.set_xticks([a,b])
ax.set_xticklabels(['$a$','$b$'])
ax.set_yticks([])
plt.figtext(0.9,0.05,'$x$')
plt.figtext(0.1,0.9,'$y$')
ix=np.linspace(a,b)
iy=func(ix)
ixy=zip(ix,iy)
verts=[(a,0)]+list(ixy)+[(b,0)]
poly = Polygon(verts,facecolor='0.9',edgecolor='0.5')
ax.add_patch(poly)
x_math=(a+b)*0.5
y_math=35
plt.text(x_math,y_math,r"$\int_a^b(-(x-2)*(x-8)+40)dx$",horizontalalignment='center',size=12)
plt.show()
/pre