
一、数据查看与描述
【首先讲述一下如何进入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]) #更改聚合方式为求 和
     
|