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)
暂无数据