2015-03-08-pandas(3)

--------------------------------------------------------------------------------
8.相关系数与协方差?
from pandas import Series,DataFrame
import pandas as pd
import numpy as np
import pandas.io.data as web
all_data={}
for ticker in['AAPL','IBM','MSFT','GOOG']:
all_data[ticker]=web.get_data_yahoo(ticker,'1/1/2009','1/1/2010')
price=DataFrame({tic:data['Adj Close']
for tic,data in all_data.iteritems()})
volumn=DataFrame({tic:data['Volumn']
for tic,data in all_data.iteritems()})
--------------------------------------------------------------------------------
--9.唯一值、值计数以及成员资格
obj=Series(['c','a','d','a','a','b','b','c','c']) 
1.得到Series中的唯一值数组
uniques=obj.unique()
uniques
2.计算Series中各值出现的频率
obj.value_counts()
不降序
pd.value_counts(obj.values,sort=False)
3.isin,用于判断矢量化集合的成员资格,可用于选取Series中或DataFrame列中数据的子集
mask=obj.isin(['b','c'])
mask
obj[mask]
4.得到DataFrame中多个相关列的一张柱状图
data=DataFrame({'Qu1':[1,3,4,3,4],'Qu2':[2,3,1,2,3],'Qu3':[1,5,2,4,4]})
result=data.apply(pd.value_counts).fillna(0)
--------------------------------------------------------------------------------
10.处理缺失数据
(1).
string_data=Series(['aardvark','artichoke',np.nan,None])
string_data.isnull()
string_data[0]=None
string_data.isnull()
(2).滤除缺失数据
from numpy import nan as NA
data=Series([1,NA,3.5,NA,7])
data.dropna()
data[data.notnull()]
--
data=DataFrame([[1,6.5,3],[1,NA,NA],[NA,NA,NA],[NA,6.5,3]])
cleaned=data.dropna()
data.dropna(how='all')
data[4]=NA
data
data.dropna(axis=1,how='all')
--
df=DataFrame(np.random.randn(7,3))
df.ix[:4,1]=NA
df.ix[:2,2]=NA
df.ix[0,0]=NA
df
df.dropna(thresh=3)??
(3).填充缺失数据
df.fillna(0)
df.fillna({1:0.5,2:-1})
对现有对象进行填充
_=df.fillna(0,inplace=True)


df=DataFrame(np.random.randn(6,3))
df.ix[2:,1]=NA;
df.ix[4:,2]=NA;
df
df.fillna(method='ffill')
df.fillna(method='ffill',limit=2)


data=Series([1,NA,3.5,NA,7])
data.fillna(data.mean())
--------------------------------------------------------------------------------
11.层次化索引
data=Series(np.random.randn(10),index=[['a','a','a','b','b','b','c','c','d','d'],
[1,2,3,1,2,3,1,2,2,3]])
data
data.index
data['b']
data['b':'c']
data.ix[['d','c']]
可以通过unstack方法被重新安排到一个DataFrame中
data.unstack()
unstack的逆运算是stack
data.unstack().stack()
--对于DataFrame,每个轴都可以有分层索引
frame=DataFrame(np.arange(12).reshape((4,3)),
index=[['a','a','b','b'],[1,2,1,2]],
columns=[['Ohio','Ohio','Colorado'],
['Green','Red','Green']])
--各层都可以指定名称
frame.index.names=['key1','key2']
frame.columns.names=['state','color']
frame
frame['Ohio']


MultiIndex.from_arrays([['Ohio','Ohio','Colorado'],['Green','Red','Green']],
names=['state','color'])??
--重排分级顺序
frame.swaplevel('key1','key2')
frame.sortlevel(1)
frame.swaplevel(0,1).sortlevel(0)
--使用级别汇总统计
frame.sum(level='key2')
frame.sum(level='color',axis=1)
--使用DataFrame的列
将一个或多个列转换为行索引
frame=DataFrame({'a':range(7),'b':range(7,0,-1),
'c':['one','one','one','two','two','two','two'],
'd':[0,1,2,0,1,2,3]})
frame2=frame.set_index(['c','d'])
保留列
frame.set_index(['c','d'],drop=False)
层次化索引的级别会被转移到列里面
frame2.reset_index()
--------------------------------------------------------------------------------
12.整数索引??
ser=Series(np.arange(3))
ser2=Series(np.arange(3),index=['a','b','c'])
ser.ix[:1]


ser3=Series(range(3),index=[-5,1,3])
ser3.iget_value(2)
frame=DataFrame(np.arange(6).reshape(3,2),index=[2,0,1])
frame.irow(0)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值