fuli2020

2020-07-20   阅读量: 783

Pandas DataFrame的属性和方法

扫码加入数据分析学习群

DataFrame的创建

np.random.seed(5)

a = np.random.randint(60,100,(100,6))

b = pd.DataFrame(a)

b.columns = ['语文','数学','政治','英语','物理','化学']

b.index = ['A' + i for i in np.arange(1,101)]


常用属性

a.shape #形状

a.columns #列名

a.columns.map(lambda x:x+'+')

a.index.map(lambda x:x.replace('A',''))

a.values


常用方法

a.head()

a.tail()

a.info()

a.describe()


重置索引

a.set_index(列名,inplace=True) #设置索引

a.reset_index(drop=True,inplace=True) #重置索引后,原索引列变为数据列,drop=True时删除原索引列


排序

a.sort_values('数学')

a.sort_index()


重复相关

a.drop_duplicates()

a.duplicated().sum() #是否有重复的行

a[a.duplicated()] #取出重复的行

a.drop_duplicates(inplace=True)


缺失相关

a.isna()

a.isnull()

a.fillna()


两个高级方法

a.apply(lambda x:x.mean()) #每列汇总平均值

a.applymap(lambda x:x+1) #每个值+1

a['总分']=a.apply(lambda x:sum(x),axis=1)


插入数据

a.insert(loc,列名,数据)


删除数据

del b['b']

b.pop('a')

b.drop(columns=['c'],inplace=True) #删除列

b.drop([索引号],inplace=True) #删除行


修改列名

a.rename(columns={'index':'姓名'},inplace=True)


按照单个列进行分组

gp=a.groupby('列名',as_index=False)

gp.agg([np.mean,np.max])

gp['物理'].agg(['sum','mean','std'])

gp.agg({'语文':['mean','std','max'],'数学':['min','mean','max']

})

gp.apply(lambda x:x.sort_values('数学',ascending=False).head(3))


series,DataFrame, groupby 都有apply方法,series传的是值,DataFrame传的是Series, groupby传的是表


数据透视

pd.privot_table(values='汇总字段',index='选择透视行',columns=['选择透视列1','选择透视列2'],aggfunc='计算方式')


数据合并

pd.concat([df1,df2,df3],axis=0,join='outer',sort=False)

pd.merge(df1,df2,how='inner',on='连接字段')

df1.append(df2,sort=True,ignore_index=True)










27.5877 3 3 关注作者 收藏

评论(0)


暂无数据

推荐课程