1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| def dataframe_cleaning(): # 数据的初始清理; df = pd.read_csv("./resign/resign.csv") ''' 依次对df数据做清理和整合: 1-2. 将一些无效数值置空并drop掉; 3. 增加一列数量:如果原因有多条,则计算分号的数量并加1,即表示有几个原因。并按照原因的数量划分比例,创建Amount列。 4. 考虑了一种情况,入职不足月的人员,工作时间是0.5月,没有年数,所以将此部分数据处理下增加年数。 5. 截取在职年份的年数值,并创建year列。 7. 将公司代码及省份merge进来。 8. 将年份分段。 9. 按照索引排列。 ''' df = df.replace(["4jjj", "ddsdhtjsr", "ootype"], np.nan) df = df[["BUKRS", "REASON", "DETAIL", "WORKINGTIME", "SUGGESTION", "ZCRZ"]].dropna() df01 = (1 / (df["REASON"].str.count(";")+1).rename("Amount")).round(2) df["WORKINGTIME"].replace('0.5个月', '0年0.5个月', inplace=True) df02 = df["WORKINGTIME"].str.split('年', expand=True).iloc[:,0].rename('year') df = pd.concat([df[["BUKRS", "REASON", "SUGGESTION", "DETAIL", "ZCRZ"]], df01, df02], axis=1) df = pd.merge(df, df_bukrs, on='BUKRS', right_index=True) df['year'] = pd.cut(df.year.astype(int), bins=[0, 1, 5, 10, 100], right=False, labels=["不足1年", "1-5年", "5-10年", "10年以上"]) df.sort_index(inplace=True) # df.reset_index() return df
|