大数据清洗4(pandas-DataFrame常用操作)

Posted 晨沉宸辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据清洗4(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常用操作)的主要内容,如果未能解决你的问题,请参考以下文章

大数据清洗3(pandas - 基本数据结构)

大数据技术之日志清洗案例

大数据采集清洗处理:使用MapReduce进行离线数据分析

大数据采集清洗处理:使用MapReduce进行离线数据分析完整案例

大数据采集清洗处理:使用MapReduce进行离线数据分析完整案例

大数据清洗2(元素操作)