大数据清洗4(pandas-DataFrame常用操作)
Posted 晨沉宸辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据清洗4(pandas-DataFrame常用操作)相关的知识,希望对你有一定的参考价值。
pandas-DataFrame常用操作
一、数据查看与描述
【首先讲述一下如何进入jupyter notebook,需要下载anaconda,在anaconda里面下载numpy以及pandas,具体操作:软件安装,然后打开控制页面,输入jupyter notebook,即可,复制所给链接就可以进入啦
】进入正题
df = pd.read_csv("D:\\data\\sales.txt",sep='\\t',index_col=0) df.index = ["001","002","003","004","005","006","007"] df
df.shape #查看数据框的形状
df.head(2) #查看数据框的前几行,默认前5行
df.tail(3) #查看数据框的结尾几行,默认后5行
df.index #查看行索引
df.columns #查看列索引
df.info()#查看数据框的详细信息
#进行简单的描述统计
df.describe()
df.sort_index() #升序排序
df.sort_index(ascending=False) #降序排序
df.sort_values("销售业绩") #默认升序排序
df["工龄"] = [1,3,7,5,6,4,2]
df
df.sort_values(["销售业绩","工龄"]) #默认升序排序
df.sort_values(["销售业绩","工龄"],ascending=False) #降序排序
df.sort_values(["销售业绩","工龄"],ascending=[False,True]) #降序排序
二、缺失值的处理
df.iloc[[0,1,3,5],[1,2,4,6,9]] = np.nan #认为制造缺失值 df
1、查看缺失值
df.isnull()
df.isnull().sum() #查看缺失值数量
df.isnull().mean() #查看缺失值比例
df.shape
df.isnull().sum()/df.shape[0]
df.员工等级.value_counts()
2、填充缺失值
df.fillna(0)
df.fillna(df.mean())
df.fillna(method="bfill",limit=1) #limit限制填充次数
df.replace(np.nan,0)
df.replace(np.nan,df.median()) #用中位数进行填充
df.fillna(method="ffill")
df.replace(method="ffill")
3、删除缺失值
df.dropna() #默认按照行进行删除
df.dropna(axis=1)#按照列进行删除
df.dropna(how='all')#按照列进行删除
三、数据的合并
1、pd.concat()函数
#来自两个分公司的表
df_1 = df.iloc[:4]
df_2 = df.iloc[4:]
df_1 df_2
pd.concat([df_1,df_2])
pd.concat([df_1,df_2],keys=["df_1","df_2"])
df_s = df.iloc[:,:7] #销售部门统计表
df_h = df.iloc[:,[0,7,8,9,10]] #人力统计表
df_s
df_h
pd.concat([df_s,df_h],axis=1)
pd.concat([df_s,df_h],axis=1,keys=["df_s","df_h"],names=["来源表","索引"])
2、pd.merge()函数
pd.merge(df_s,df_h,on="员工姓名")
df_ss = df_s.copy()
df_ss.columns=["姓名","销售业绩","提成收入","基本工资","社保金额","创造收益","是否达标"]
df_ss
pd.merge(df_s,df_h)
pd.merge(df_ss,df_h,left_on = "姓名",right_on="员工姓名")
四、分组运算
gp1 = df.groupby("性别")
len(gp1) #查看分组数 # 2
gp2 = df.groupby("员工等级")
len(gp2) #3
gp1.size()
gp1.mean()
gp1["销售业绩"].mean()
gp3 = df.groupby(["性别","员工等级"])
len(gp3) #5
gp4 = df.groupby(["性别","员工等级"],as_index=False)
gp4.mean()
gpp = gp2["销售业绩"].agg([np.mean,np.std])
gpp
gpp.rename(columns={"mean":"平均销售额","std":"标准差"})
gp2.agg({"销售业绩":np.mean,"提成收入":np.std})
五、数据透视表
pd.pivot_table(df,values="创造收益",index="员工状态")
pd.pivot_table(df,values="创造收益",index="员工状态",columns="员工等级") #默认聚合方式为求均值
pd.pivot_table(df,values="创造收益",index="员工状态",columns="员工等级",aggfunc=np.sum) #更改聚合方式为求和
pd.pivot_table(df,values=["创造收益","销售业绩"],index="员工状态",columns="员工等级",aggfunc=np.sum) #更改聚合方式为求和
pd.pivot_table(df,values=["创造收益","销售业绩"],index=["员工状态","性别"],columns="员工等级",aggfunc=np.sum) #更改聚合方式为求和
pd.pivot_table(df,values=["创造收益","销售业绩"],index=["员工状态","性别"],columns="员工等级",aggfunc=[np.sum,np.mean]) #更改聚合方式为求和
pd.pivot_table(df,values=["创造收益","销售业绩"],index=["员工状态","性别"],columns=["员工等级","是否达标"],aggfunc=[np.sum,np.mean]) #更改聚合方式为求 和
以上是关于大数据清洗4(pandas-DataFrame常用操作)的主要内容,如果未能解决你的问题,请参考以下文章
大数据采集清洗处理:使用MapReduce进行离线数据分析完整案例