1.模块导入
import pandas as pd
2.pandas序列Series自动给列表加上索引
如 a = [1,2,3,4]
b = pd.Series(a)
c = enumerate(a)
print b
类似于
for i,j in c:
print i,j
3.numpy 只是纯碎的生成矩阵数组, 而 pandas 可以给numpy 生成的多维数组的 各行 各列加上一个名称
4.产生一个时间序列:
date= pd.date_range('20170101',periods = 7)
4.1给一个二位数则每行每列定义一个名称
df= pd.DataFrame(np.random.randn(7,4),index=date,columns=['a','b','c','d']
DataFrame就是给二维数组的每行每列加一个标签
注意:a = np.array([1,2,3,4]) 用于DataFrame则表示4行1列
a = np.array([[1,2,3,4]])用于DataFrame则表示1行4列
5.如果使用字典dict来初始化DataFrame,则字典的key会成为二维数组的列索引,行索引则自动生成
6.获取df行索引 df.index
6.获取df列索引 df.columns
6.获取df值 df.values, 得到numpy形式的数组
7.df.describe()会计算df各列的均值和标准差,
应用举例:
df = pd.DataFrame(np.random.randn(3,4))
d1 = df.describe()
d2 = d1.values
d3 = d2.T
d4= d3[0] 即可以得到第一列的均值,标准差
8.对df进行排序
df.sort_index(axis=0,ascending=False) 行索引降序排列
df.sort_index(axis=1,ascending=False) 列索引降序排列
9.对df进行选择输出
输出某列 : ‘a’列 df.a 或 df['a']
输出多列: df.loc[:,['a','b']]
输出某行: df[0:3] 输出0到3行 , 以标签输出 df.loc['20170101']
输出某行某列: 以标签输出 df.loc['20170101',['a','b']]
输出某个元素:
,纯数字筛选
df.iloc[3,1] 3行1列
df.iloc[1:2,1:2] 1到2行,1到2列
df.iloc[[1,3],1:2] 1行,3行,1列到2列
标签筛选:
df.ix[:2,['a','b']] ,数字加标签筛选
df[df.a>2],选出a列中大于2的行,同时显示所有列
10 .给DataFrame赋值:
更改某一个元素:
df.iloc[2,1]=12 第二行第一列赋值12
df.loc['20170101','a'] =12 , 以标签更改
更改某一列元素:
df.a = 0 第‘a’列全部为0
df.a.[df.a >2]=0 第‘a’列大于2的元素全为0
df.b.[df.a >2]=0 第‘a’列大于2的元素对应的b列的元素全为0 ,a列不变,b列改变
更改某一列元素,影响其它列:
df[df.a >2] = 0,第‘a’列大于2的元素全为0,其它对应的列也受到影响全部为0
11,给DataFrame新增行列:
df原有a,b,c,d列 , 0到7行
增加1列: df['e'] = np.nan
增加1列: df['e'] = [1,2,3,4,5,6,7]
增加1列:df['e'] = pd.Series([1,2,3,4,5,6,7],index=pd.date_range('20170101',periods=6))
增加一行:
df1 = pd.DataFrame(np.ones(3,4),columns=['a','b','c','d'])
或 df1 = pd.Series([1,2,3,4],index=['a','b','c','d'])
df.append(df1,ignore_index=True)
12.去掉df中元素为nan的行列
如果df中有元素为空即nan
df.dropna(axis = 0,how='any') 丢掉元素为空的行
df.dropna(axis = 1,how='any') 丢掉元素为空的列
13. 处理df中元素为空
将df中元素为nan统一赋个值:
df.fillna(value=0) 将为nan的元素赋值为0
判断df是否缺失数据,即存在nan , 使用: df.isnull()查看
使用 np.any(df.isnull())==True 判断df中是否有nan
14.多个DataFrame合并
numpy 中的多维数组的合并使用:concatenate,hstack,vstack
DataFrame使用cancat
例如: df1, df2的行列都是3行4列,其行标志和列标志都相同。
则合并df1 ,df2 使用 pd.concat([df1,df2],axis=0,ignore_index=True) 纵向合并
例如:合并df1, df2 相同的列,不同的列舍弃,则使用 pd.concat([df1,df2],join='inner',ignore_index=True)
例如:合并df1 ,df2 使用 pd.concat([df1,df2],axis=1,join_axes=[df1.index]) 水平合并,并使用df1的index
例如:df1,和 df2 有一列完全一样,如df1 是 ‘a’,'b','c','d',df2是‘d’,'e','f','g'。 则以‘d’列作为参考合并两个DataFrame,得到'a','b','c','d','e','f','g'。使用:pd.merge(df1,df2,on='d')