Example #1
0
def main():

    ser = Series(np.arange(3.))
    ser2 = Series(np.arange(3.), index=list('abc'))
    print ser
    print ser2
    print '',''
    # print ser[-1]
    print ser2[-1]
    print '',''
    print ser.ix[:1]

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

    # panel
    # u'3次元のデータフレーム/パネルの各項目(列)はデータフレーム
    print '','----------------------'
    lst = ['AAPL', 'MSFT'] # , 'DELL', 'GOOG'
    pdata = pd.Panel(dict((stk, pd.io.data.get_data_yahoo(stk, '1/1/2009', '6/1/2012'))
                           for stk in lst))
    if not pdata.empty:
        print pdata
        pdata = pdata.swapaxes('items', 'minor')
        print '',''
        print pdata['Adj Close']
        print '',''
        print pdata.ix[:, '6/1/2012', :]
        print '',''
        print pdata.ix['Adj Close', '5/22/2012', :]
        print '', ''
        print type(pdata.ix[:, '5/30/2012', :]) # DataFrame
        if hasattr(pdata.ix[:, '5/30/2012', :], 'to_frame'):
            stacked = pdata.ix[:, '5/30/2012', :].to_frame()
            print stacked
            print '',''
            print stacked.to_panel()
        if hasattr(pdata, 'to_frame'):
            f1 = pdata.to_frame()
            print f1
            print '',''
            print f1.to_panel()
            print '',''
Example #2
0
data.w  # 选择表格中的'w'列,使用点属性,返回的是Series类型

data[['w']]  # 选择表格中的'w'列,返回的是DataFrame属性

data[['w', 'z']]  # 选择表格中的'w'、'z'列

data[0:2]  # 返回第1行到第2行的所有行,前闭后开,包括前不包括后

data[1:2]  # 返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
# 如果采用data[1]则报错

data.ix[1:2]  # 返回第2行的第三种方法,返回的是DataFrame,跟data[1:2]同

data['a':'b']  # 利用index值进行切片,返回的是**前闭后闭**的DataFrame,
# 即末端是包含的
data.irow(0)  # 取data的第一行
data.icol(0)  # 取data的第一列

data.head()  # 返回data的前几行数据,默认为前五行,需要前十行则dta.head(10)
data.tail()  # 返回data的后几行数据,默认为后五行,需要后十行则data.tail(10)

ser.iget_value(0)  # 选取ser序列中的第一个
ser.iget_value(-1)  # 选取ser序列中的最后一个,这种轴索引包含索引器的series不能采用ser[-1]去获取最后一个,这回引起歧义。

data.iloc[-1]  # 选取DataFrame最后一行,返回的是Series
data.iloc[-1:]  # 选取DataFrame最后一行,返回的是DataFrame

data.loc['a', ['w', 'x']]  # 返回‘a’行'w'、'x'列,这种用于选取行索引列索引已知

data.iat[1, 1]  # 选取第二行第二列,用于已知行、列位置的选取。
Example #3
0
dtype: float64
'''
# non-integer index: no ambiguity
ser2[-1]
# 2.0

# # .iget_value: position-based indexing (Series)
# # .irow, .icol: (DataFrame)
ser3=Series(range(3), index=[-5,1,3]); ser3
'''
-5    0
 1    1
 3    2
dtype: int64
'''
ser3.iget_value(2)
# 2

s=Series([4,9,1,3,8,2]); s
'''
0    4
1    9
2    1
3    3
4    8
5    2
dtype: int64
'''
s.iget_value(1); s.iget_value(4); s.iget_value(0)
# 9, 8, 4
Example #4
0
frame
frame.sum(level="key1")

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.sum(level="color", axis=1)
frame.sum(level="state", axis=1)

ser = Series(np.arange(3.), index=list("abc"))
ser
ser[-1]
ser.iget_value(2)

import pandas.io.data as web
pdata = pd.Panel(
    dict((stk, web.get_data_google(stk, "1/1/2012", "12/30/2014"))
         for stk in ["AAPL", "GOOG", "MSFT", "DELL"]))
pdata
pdata = pdata.swapaxes("items", "minor")
pdata
pdata.ix[:, "12/3/2012", :]

import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt
nsample = 100
x = np.linspace(0, 10, 100)
Example #5
0
data1[:,2]
data1.unstack()
data1.unstack().stack()

data2 = pd.DataFrame(np.random.rand(5,3),index=[list('aabcb'),[1,2,1,2,2]],
columns=[['id','rate','runtime'],['d2','d1','d2']])
data2.index.names = ['genre', 'level' ]
data2.columns.names = ['feature', 'native' ]
MultiIndex.from_arrays([[],[]],name=[])######################
data2.swaplevel('genre', 'level')
data2.sort_index(level=1)
data2.sum(level='genre',axis=1)

df1 = pd.DataFrame({'a':range(7), 'b':range(7,0,-1), 'c':['one','one','one']+['two']*4, 'd':[0,1,2]*2+[3]})
df2 = df1.set_index(['c','d'])
df3 = df1.set_index(['c','d'], drop=False)
df2.reset_index()

########################## others ################################
# integer index
se1 = pd.Series(np.arange(3))
se2 = pd.Series(np.arange(3.), index=list('abc'))
se3 = pd.Series(np.arange(3.), index=[6,-1,3])
se3.iget_value(2)#?

# panel data structure
import pandas_datareader.data as web
start = '1/1/2007'
end = '1/1/2010'
pdata = pd.Panel(dict((stk,web.get_data_yahoo(stk, start,end)) for stk in ['IBM', 'MSFT', 'GOOG']))
Example #6
0
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]})
frame
frame2 = frame.set_index('c','d'])
frame2 = frame.set_index(['c','d'])
frame2
frame2 = frame.set_index(['c','d'],drop=False)
frame2
frame2.reset_index()
ser = Series(np.arange(3))
ser
ser[-1]
ser2 = Series(np.arange(3.),index=['a','b','c'])
ser2[-1]
ser.ix[:1]
ser3=Series(range(3),index=[-5,1,3])
ser3.iget_value(2)
ser3.iloc(2)
ser3.iloc[i]
ser3.iloc[2]
ser3.iat[2]
ser3
ser3.iloc[1]
ser3.iloc[0]
ser3.iloc[3]
ser3.iraw(0)
frame = DataFrame(np.arange(6).reshape(3,2)),index=[2,0,1])
frame = DataFrame(np.arange(6).reshape((3,2)),index=[2,0,1])
frame.irow(0)
frame.iloc[0]
frame
frame.iloc[3]
Example #7
0
ser_neg = Series(np.arange(3.), index=[-1, 2, 3])
print '含有-1的索引直接访问的就是-1索引的值', ser_neg[-1]

# 可以指定为字符型索引,使得索引的解释性提升
ser2 = Series(np.arange(3.), index=['a', 'b', 'c'])
# 对于字符型索引-1不会有二义性
print '字母索引可以直接使用-1来访问最后一个', ser2[-1]

# 如果轴索引含有索引器, 那么根据整数进行数据选取操作,是面向标签的,不是面向排序的
print '3是面向标签的,不是面向位置的', ser_neg.ix[:3]

# 可靠的,不考虑索引类型和基于位置的索引
# 使用Series的iget_value
ser3 = Series(range(3), index=[-5, 1, 3])
# 这个future可能会被取消,尽量使用等价的那个
print ser3.iget_value(2)
# 等价于
print ser3.iloc[2]
# 对于frame可以使用irow
frame = DataFrame(np.arange(6).reshape(3, 2), index=[2, 0, 1])
# 下面这个future可能会被取消,所以尽量使用等价的那一个
print frame.irow(0)
print frame.iloc(0)

# 面板数据
# pandas有一个Panel数据结构, 可以理解为一个三维版本的DataFrame
pdata = pd.Panel(dict((stk, web.get_data_yahoo(stk, '1/1/2009', '6/1/2012')) for stk in ['AAPL', 'GOOG', 'MSFT', 'DELL']))
print 'Panel', pdata
# Panel的每一项都是DataFrame
# 交换2个轴
pdata = pdata.swapaxes('items', 'minor')
Example #8
0
frame
frame.sum(level="key1")

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.sum(level="color", axis=1)
frame.sum(level="state", axis=1)

ser = Series(np.arange(3.), index=list("abc"))
ser
ser[-1]
ser.iget_value(2)

import pandas.io.data as web
pdata = pd.Panel(
    dict((stk, web.get_data_google(stk, "1/1/2012", "12/30/2014"))
         for stk in ["AAPL", "GOOG", "MSFT", "DELL"]))
pdata
pdata = pdata.swapaxes("items", "minor")
pdata
pdata.ix[:, "12/3/2012", :]

import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt
nsample = 100
x = np.linspace(0, 10, 100)
Example #9
0
#获取索引
print ser2[-1]
# 2.0
print ser2['c']
# 2.0
print ser2[2]
# 2.0

#通过索引获取值
print ser.ix[:1]
# 0    0
# 1    1

#series的iget_value只基于位置的索引
ser3 = Series(range(3), index=[-5, 1, 3])
print ser3.iget_value(2)
# 2
#
frame = DataFrame(np.arange(6).reshape(3, 2), index=[2, 0, 1])

print frame
#    0  1
# 2  0  1
# 0  2  3
# 1  4  5
#获取第一行
print frame.irow(0)
# 0    0
# 1    1
# Name: 2
a[0]         #元素
#%%  使用index访问元素 
a['a']       #元素
#%%  使用切片过滤系列
a[0:5:2]     #系列
#%%  使用索引切片(如果索引非数字其切片是闭区间)
a['b':'i':2]  #系列
#%%  使用布尔值系列进行过滤
a[(a>5)&(a<9)]   #系列
#%%  使用reindex函数
a.reindex(list(letters[5:15]))    #系列
#%%  使用get_value,set_vavlue访问
a.set_value('a',2)   # 元素
a.get_value('a')     # 元素
#%%  使用iget_value访问
a.iget_value(0)      # 元素
#%%  使用get访问
a.get('c')           # 元素
#%%  使用iget访问
a.iget(0)            # 元素
#%%  使用truncate
a.truncate(5,9)      # 系列
#%%  使用item访问      
a.item(9)            # 元素
a.itemset(9,100)     # 元素



#%%
a.idxmax()
#%%
Example #11
0
###############################################################

ser = Series(np.arange(3.))
print(ser)
print('\n')

ser2 = Series(np.arange(3.), index=['a','b','c'])
print(ser2)
print('\n')
print(ser2[-1])
print('\n')
print(ser.ix[:1])
print('\n')

ser3 = Series(range(3), index=[-5,1,3])
print(ser3.iget_value(2))
print('\n')

###############################################################

frame = DataFrame(np.arange(6).reshape(3,2), index=[2,0,1])
print(frame.irow(0))








Example #12
0
# print frame
# frame2 = frame.set_index(['c', 'd'])
# print frame2

# print frame.set_index(['c', 'd'], drop=False)

# print frame2.reset_index()

# No.52
ser = Series(np.arange(3.))
print ser
try:
    print ser[-1]
except Exception, e:
    print e
print ser.iget_value(-1)

ser2 = Series(np.arange(3.), index=['a', 'b', 'c'])
print ser2
try:
    print ser2[-1]
except Exception, e:
    print e

ser3 = Series(range(3), index=[-5, 1, 3])
print ser3.iget_value(-1)

frame = DataFrame(np.arange(6).reshape(3, 2), index=[2, 0, 1])
print frame
print frame.irow(0)