3.1panda基础操作
头文件:
import numpy as np
import pandas as pd
创建pandas序列
pandas会默认添加序号
s = pd.Series([1,3,6,np.nan,44,1])
创建时间序列。periods=6:生成六个数据
dates = pd.date_range('20160101',periods=6)
自己定义数据标签
index是值行标签。colums是列标签
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['A','B','C','D'])
字典创建法
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.dtypes)
返回所有行的序号
print(df2.index)
返回所有列的序号
print(df2.columns)
返回所有的值
print(df2.values)
对各列的描述:count mean min等等
df2.describe()
转置!行变列,列变行
df2.T
排序
#按列标签排序 False是倒序,True是正序
df2.sort_index(axis=1,ascending=False)
#按指定标签下的数值进行排序
df2.sort_values(by='E')
3.2pandas选择数据
头文件:
import numpy as np
import pandas as pd
选择标签‘A’的数据
dates = pd.date_range('20130101',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['A','B','C','D'])
print(df['A']) #等同与df.A
切片
print(df[0:3])
print(df['20130102':'20130104'])
根据标签选择数据:loc
print(df.loc['20130102'])
print(df.loc['20130102',['A','B']])
根据位置选择数据:iloc
print(df.iloc[3:5,1:3])
综合选择:ix (已被弃用)
#print(df.ix[:3,['A','C']])
根据阈值选择数据
print(df[df.A > 1])
#若只打印A这一列大于8的数据
print(df['A'][df['A']>1])
3.3pandas设置值
头文件:
import numpy as np
import pandas as pd
根据序列改
dates = pd.date_range('20130101',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['A','B','C','D'])
df.iloc[2,2] = 1111
根据标签改
df.loc['20130101','B'] = 2222
把A>1的部分的所有值都改成0(不止标签A部分)
df[df.A>1] = 0
只把A部分大于1的部分改成0
df.A[df.A>1] = 0
增加一列标签
df['F'] = np.nan
df['E'] = pd.Series([1,2,3,4,5,6],index = pd.date_range('20130101',periods=6))