from pandas import Series,DataFrame
import pandas as pd
數(shù)據(jù)結(jié)構(gòu)
☆Series
最重要功能是在算數(shù)運算中會自動對齊不同索引的數(shù)據(jù)
data = Series(l,index=([])) #l可為列表毕骡,若不指定index洁灵,默認0-(len(l)-1);也可為字典,index自動有序排列,不指定index,則索引為key,第二列為value倒彰,指定索引后,會返回匹配上的對莱睁,沒有匹配上的索引后是NaN
Series的屬性:
data.values #第二列
data.index #第一列待讳,可通過賦值方式就地修改
data.name #指定后出現(xiàn)在最后一行
data.index.name #指定后出現(xiàn)在第一行
Series的方法:
data.isnull() #是否為缺失值芒澜,返回布爾值
☆DataFrame
可看做共用一組索引的的Series組成的字典
frame = DataFrame(data,columns=[])#data可為字典,后者指定列的排列順序
frame['col'];frame.col
frame.columns#列名屬性
del frame['']#刪除列
frame.index.name= ;frame.columns.name= ;frame.values
data還可以是嵌套字典创淡,外層字典的鍵為列痴晦,內(nèi)層的鍵作為行索引
☆索引對象
Index對象不可修改
基本功能
☆重新索引
obj.reindex(data,method='ffill')#ffill前向值填充,bfill后向值填充琳彩,還可以直接定義值fill_value=xxx
☆丟棄指定軸上的項
frame.drop('');frame.drop([,],axis=1)#默認丟棄行誊酌,可以指定軸
☆索引、選取和過濾
索引
可根據(jù)index或序號索引
In [14]: data = DataFrame(np.arange(16).reshape((4,4)),index = ['Ohio','Colorado','Utah','New York'],columns=['one','two','three','four'])
In [15]: data
Out[15]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
In [16]: data[1:3]
Out[16]:
one two three four
Colorado 4 5 6 7
Utah 8 9 10 11
In [17]: data['Colorado':'New York']#利用標(biāo)簽的切片運算與普通的Python切片運算不同露乏,其末端是包含的
Out[17]:
one two three four
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
loc——通過行標(biāo)簽索引行數(shù)據(jù)
iloc——通過行號索引行數(shù)據(jù)
ix——通過行標(biāo)簽或者行號索引行數(shù)據(jù)(基于loc和iloc 的混合)
同理碧浊,索引列數(shù)據(jù)也是如此!
In [48]: data.loc[:,'two':'three']
Out[48]:
two three
Ohio 1 2
Colorado 5 6
Utah 9 10
New York 13 14
In [49]: data.iloc[:,1:2]
Out[49]:
two
Ohio 1
Colorado 5
Utah 9
New York 13
In [43]: data.loc['Ohio':'Utah']
Out[43]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
In [44]: data.iloc[0:2]
Out[44]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
算術(shù)運算方法
.add()
.sub()
.div()
.mul()
默認情況下瘟仿,DataFrame和Series之間的算術(shù)運算會將Series的索引匹配到DataFrame的列箱锐,然后沿著行一直向下廣播
如果希望匹配行并在列上廣播,則必須使用算術(shù)運算方法劳较。
排序和排名
Series
按索引排序:obj.sort_index()
按值排序:obj.order()
DataFrame
按索引排序:obj.sort_index(axis=0,ascending=False)
按值排序:obj.sort_index(by='')#列名驹止,根據(jù)該列的值排序
匯總和計算描述統(tǒng)計
Series的corr方法用于計算兩個Series中重疊的,非NA的观蜗,按索引對齊的值的相關(guān)系數(shù)臊恋。
s1.corr(s2)
DataFrame的corr方法將以DataFrame的形式返回完整的相關(guān)系數(shù)矩陣
df.corr()
利用DataFrame的corrwith方法,你可以計算其列或行跟另一個Series或DataFrame之間的相關(guān)系數(shù)
df1.corrwith(df2)#默認按列
處理缺失數(shù)據(jù)
NA處理方法np.nan
dropna
fillna
isnull
notnull
In [87]: df = DataFrame(np.random.randn(7,3))
In [89]: df.ix[:4,1]=np.nan
In [90]: df.ix[:2,2]=np.nan
In [91]: df
Out[91]:
0 1 2
0 0.396967 NaN NaN
1 0.046879 NaN NaN
2 -0.659653 NaN NaN
3 -0.567351 NaN -1.396844
4 0.493285 NaN -1.226272
5 1.248757 1.182155 1.816061
6 -0.551892 -0.256985 0.758178
In [92]: df.dropna()#默認只要含NA就丟棄
Out[92]:
0 1 2
5 1.248757 1.182155 1.816061
6 -0.551892 -0.256985 0.758178
In [93]: df.dropna(how='all')#用how全部為NA的才丟棄
Out[93]:
0 1 2
0 0.396967 NaN NaN
1 0.046879 NaN NaN
2 -0.659653 NaN NaN
3 -0.567351 NaN -1.396844
4 0.493285 NaN -1.226272
5 1.248757 1.182155 1.816061
6 -0.551892 -0.256985 0.758178
In [95]: df.dropna(thresh=2)#丟棄非NA數(shù)小于2的
Out[95]:
0 1 2
3 -0.567351 NaN -1.396844
4 0.493285 NaN -1.226272
5 1.248757 1.182155 1.816061
6 -0.551892 -0.256985 0.758178
填充缺失數(shù)據(jù)
_=df.fillna(x,inplace=True)
df.fillna(method='ffill',limit=2)#limit是向前向后可以連續(xù)填充的最大數(shù)量
層次化索引
data = Dataframe(data,index=[[],[]],columns=[[],[]])#MultiIndex