前言:
pandas是在numpy的基礎(chǔ)上開發(fā)出來的,Pandas 的數(shù)據(jù)結(jié)構(gòu):Pandas 主要有 Series(一維數(shù)組)盖桥,DataFrame(二維數(shù)組),Panel(三維數(shù)組)题翻,Panel4D(四維數(shù)組)揩徊,PanelND(更多維數(shù)組)等數(shù)據(jù)結(jié)構(gòu)。其中 Series 和 DataFrame 應(yīng)用的最為廣泛嵌赠。
Series
-
何為Series靴拱?
Series由一組數(shù)據(jù)(numpy的ndarray)和一組與之相對應(yīng)的標(biāo)簽構(gòu)成
-
創(chuàng)建Series
from pandas import Series,DataFrame
import pandas as pd
#直接構(gòu)建
ser01=Series([1,2,3],index=['a','b','c'])
#通過字典的形式創(chuàng)建
ser02=pd.Series({'a':1,'b':2,'c':3})
-
索引切片
ser02[0:2]
ser01["n"]
-
運(yùn)算
- 類似ndarray運(yùn)算
print(ser01[ser01>=2])#求范圍(注意輸出值用中括號括起來)
print(ser01>=2)#返回的是布爾值
ser01+10#求整體加10
np.exp(ser01)#求指數(shù)
np.fabs(ser01)#求絕對值
#把相同的index相加,自動(dòng)對齊
ser03=Series([1,2,3,4],index=['a','b','c','d'])
ser02+ser03
- 另外猾普,用API計(jì)算的方法
>1..加法
s1.add(s2)
>2.減法
>s1.sub(s2)
>3.乘法
>s1.mul(s2)
>4.除法
>s1.div(s2)
>5.求中位數(shù)
>s1.median()
>6.求最大值
>s1.max()
>7.求和
>s1.sum()
-
缺失值處理
ser02=Series(ser01,index=['a','b','c','d'])
pd.isnull(ser02)#判斷是否為空值
ser02
#過濾掉np.nan的值
ser02[pd.notnull(ser02)]
DataFrame
-
何為DataFrame?
DataFrame表格樣的數(shù)據(jù)結(jié)構(gòu)本谜,包含一組有序的列初家,有行、列索引,可以看做是Series的字典組成
-
創(chuàng)建DataFrame
df01 =DataFrame([['susan','long','meimei'],[50,60,60]],index=['姓名','成績'],columns=['Chinese','math','english'])
df01 #index為行索引溜在,columns為列索引
#用字典創(chuàng)建一個(gè)列表,
dict={
"apart":[121,111,144,122],
"year":[2011,2013,2022,2003],
"month":8,
"profit":[100,22,99,80]
}
df02=DataFrame(dict,index=['one','two','three','four'])
df02
-
通過行列數(shù)據(jù)獲取
默認(rèn)為列獲取陌知,如果獲取行可用pd.loc()
df02['apart']
#列增加
df02['address']=['北京','shanghai','shuangzhou','shenzhen']
df02
#列刪除
df02.pop('apart')
#列修改
df02['month']=3
#行操作
df02.loc['two']
-
讀取文件
分別讀取csv、excel掖肋、txt文件
df04=pd.read_csv('data.csv')
df05=pd.read_excel('data.xlsx')#excel
df03 = pd.read_csv("data.txt",sep="\t",header=None)#通過tab鍵分割數(shù)據(jù)
-
過濾切片
df02[df02.columns[1:]]#截取從第二列之后所有行的值
-
缺失值操作
和series類似
df04.isnull()
#刪除缺失值
df04.dropna(axis=1)#axis=1為去一列仆葡,默認(rèn)為去一行,注意和數(shù)學(xué)統(tǒng)計(jì)里面默認(rèn)計(jì)算的列不一樣
df04.dropna(how="all")
#替換缺失值
df04.fillna(0)
df04.fillna({0:1,1:2,2:3})
-
數(shù)學(xué)統(tǒng)計(jì)
常見的方法如count describe min/max idxmin志笼、idxmax quantile sum mean median mad var std cumsum pct_change
df02.describe()
df1=df02.dropna(axis=1)
df02.quantile(0.25)#計(jì)算樣本分位(0到1)
df02.median()#中位數(shù)
df02.pct_change()#計(jì)算百分比變化
-
協(xié)方差和相對系數(shù)
直觀反應(yīng)兩組數(shù)據(jù)的相關(guān)程度分別為cov沿盅,corr
df2=DataFrame({
"gdp":[2,4,6],
"chukou":[3,2,1]
})
df2.cov()
df2.corr()
-
唯一值,值計(jì)數(shù)纫溃,成員資格
唯一值unique腰涧,值計(jì)數(shù)value_counts,成員資格isin(等于用沒里面的元素來過濾)
df3=Series([12,13,14,15,13,13,12,11,14])
df3.unique()
df3.value_counts()
df3[df3.isin([14,15])]#成員資格
-
層次索引
索引可以大于一維紊浩,unstack(level=1)可把series轉(zhuǎn)化為dataframe窖铡,swapleve轉(zhuǎn)換索引
df.set_index([])
后記:
才疏學(xué)淺,慢慢學(xué)習(xí)坊谁,慢慢更新费彼,與諸君共勉
你可能感冒的文章:
我的機(jī)器學(xué)習(xí)numpy篇
我的機(jī)器學(xué)習(xí)matplotlib篇
我的機(jī)器學(xué)習(xí)微積分篇