目录
1:创建对象
2:查看数据
3:获取数据
4:设置些值
5:缺少数据处理
6:统计描述
7:应用
8:合并数据
9:分组
----------------------------------------------从这里开始-------------------------------------------------------------------------------
习惯上,我们首先导入这二个关键模块
import pandas as pd import numpy as np
1:创建对象
Series结构是基于NumPy的ndarray结构,是一个一维的标签矩阵(感觉跟python里的字典结构有点像)
s = pd.Series([1, 3, 5, np.nan, 6, 8]) print s

datas = pd.date_range('20130101',periods=6)
print datas
df = pd.DataFrame(np.random.randn(6,4),index=datas,columns=list('ABCD')) #DataFrame通过传递带有日期时间索引和标签列的numpy数组来创建一个数组:
print df
DataFrame通过传递可以转换为序列对象的字典来创建。
df2 = pd.DataFrame({ 'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
print df2
2:查看数据
查看数据的顶部和底部行
print(df.head()) #顶部,括号里面写数字几就是输出几行
print(df.tail(3))#底部行

显示索引,列和底层numpy数据
print("--------显示索引-------------------")
print(df.index)
print("--------显示列-------------------")
print(df.columns)
print("--------显示值-------------------")
print(df.values)
描述显示数据的快速统计摘要
print(df.describe())

转置数据
print(df.T) #行列转化

print(df.sort_index(axis=1, ascending=False))
print("---------------------------------------")
print(df.sort_values(by='B')) #默认升序
3:获取
选择一个单列,它产生一个Series,等同于df.A
print(df['A'])
print("---------------------------------------")
print(df[0:3]) 
print("---使用标签获取横截面------------------------------------")
print(df.loc[datas[0]])
print("---通过标签选择多轴------------------------------------")
print(df.loc[:,['A','B']])
print("---显示标签切片,两个端点都在内------------------------------------")
print(df.loc [ '20130102':'20130104',[ 'A' ,'B' ]])
print("---获取标量值------------------------------------")
print(df.loc[datas[1],'A'])
4:设置值
设置新列自动按索引对齐数据
s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102', periods=6))
print s1
print("---通过标签设置值------------------------------------")
df.at[datas[0],'A']=0
print("---按位置设置值------------------------------------")
df.iat[0,1] = 0
print("---通过分配一个numpy数组进行设置------------------------------------")
df.loc[:,'D'] = np.array([5] * len(df))
print(df)
5:缺少数据处理
panads主要使用该值np.nan来表示缺失的数据。它默认不包含在计算中
df1 = df.reindex(index=datas[0:4], columns=list(df.columns) + ['E']) df1.loc[datas[0]:datas[1],'E'] = 1 print df1

print("---删除任何缺少数据的行。------------------------------------")
df1.fillna(value=1)
print(df1)
6:统计描述
s = pd.Series([1,3,5,np.nan,6,8],index=datas).shift(2)
print s
print("--------------------------------")
print df.sub(s,axis='index')
7:应用
print df.apply(np.cumsum)
print("--------------------------------------------------------")
print df.apply(lambda x:x.max() - x.min()) #对数据应用函数:
8:合并数据
print("-合并------------------------------------------------------")
df = pd.DataFrame(np.random.randn(10,4))
pieces = [df[:3], df[3:7], df[7:]]
print pd.concat(pieces)
9:分组
对于”group by”操作,我们通常是指以下一个或多个操作步骤:
l (Splitting)按照一些规则将数据分为不同的组;
l (Applying)对于每组数据分别执行一个函数;
l (Combining)将结果组合到一个数据结构中;
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)})
print df
分组并对每个分组执行sum函数:
通过多个列进行分组形成一个层次索引,然后执行函数:
print df.groupby('A').sum()
print "--------------------"
print df.groupby(['A','B']).sum()
原文地址:http://blog.51cto.com/meyangyang/2088348