From f8a21e721760a32e63273d618db3da93e155053e Mon Sep 17 00:00:00 2001 From: p3gsryuwh <2841528154@qq.com> Date: Thu, 27 Apr 2023 23:46:56 +0800 Subject: [PATCH] ADD file via upload --- 数据清洗.py | 352 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 352 insertions(+) create mode 100644 数据清洗.py diff --git a/数据清洗.py b/数据清洗.py new file mode 100644 index 0000000..3f18a65 --- /dev/null +++ b/数据清洗.py @@ -0,0 +1,352 @@ +import pandas as pd +import warnings + +warnings.filterwarnings('ignore') +df = pd.read_csv("./python.csv") +df = df.drop_duplicates() # 去除重复数据 +# 公司 +num = ['50-150人', '150-500人', '1000-5000人', '少于50人', '500-1000人', '10000人以上', '5000-10000人'] +for i in df['公司人数']: + if i not in num: + index_ = df[df['公司人数'] == i].index + df.drop(index=index_, inplace=True) + +map_dict = {'上海市': ['上海'], + '云南省': ['昆明', + '曲靖', + '玉溪', + '昭通地', + '楚雄彝族自治州', + '红河哈尼族彝族自治州', + '文山壮族苗族自治州', + '思茅', + '西双版纳傣族自治州', + '大理白族自治州', + '保山地', + '德宏傣族景颇族自治州', + '丽江地', + '怒江傈僳族自治州', + '迪庆藏族自治州', + '临沧地', "楚雄", "大理"], + '内蒙古自治区': ['呼和浩特', + '包头', + '乌海', + '赤峰', + '呼伦贝尔', + '兴安盟', + '通辽', + '锡林郭勒盟', + '乌兰察布盟', + '伊克昭盟(鄂尔多斯旧称)', + '巴彦淖尔盟', + '阿拉善盟'], + '北京市': ['北京'], + '台湾省': ['台湾', '台北', '高雄', '基隆', '台中', '台南', '新竹', '嘉义'], + '吉林省': ['长春', '吉林', '四平', '辽源', '通化', '白山', '松原', '白城', '延边朝鲜族自治州'], + '四川省': ['成都', + '自贡', + '攀枝花', + '泸州', + '德阳', + '绵阳', + '广元', + '遂宁', + '内江', + '乐山', + '南充', + '宜宾', + '广安', + '达川地', + '雅安地', + '阿坝藏族羌族自治州', + '甘孜藏族自治州', + '凉山彝族自治州', + '巴中地', + '眉山地', + '资阳地'], + '天津市': ['天津'], + '宁夏回族自治区': ['银川', '石嘴山', '吴忠', '固原地', '中 卫 '], + '安徽省': ['合肥', + '芜湖', + '蚌埠', + '淮南', + '马鞍山', + '淮北', + '铜陵', + '安庆', + '黄山', + '滁州' + '阜阳', + '宿州', + '六安', + '宣城', + '巢湖', + '池州', '亳州'], + '山东省': ['济南', + '青岛', + '淄博', + '枣庄', + '东营', + '烟台', + '潍坊', + '济宁', + '泰安', + '威海', + '日照', + '莱芜', + '临沂', + '德州', + '聊城', + '滨州地', + '菏泽地'], + '山西省': ['太原', '大同', '阳泉', '长治', '晋城', '朔州', '忻州', '吕梁', '晋中', '临汾', '运城'], + '广东省': ['广州', + '韶关', + '深圳', + '珠海', + '汕头', + '佛山', + '江门', + '湛江', + '茂名', + '肇庆', + '惠州', + '梅州', + '汕尾', + '河源', + '阳江', + '清远', + '东莞', + '中山', + '潮州', + '揭阳', + '云浮', + '广东', '广东省'], + '广西壮族自治区': ['南宁', + '柳州', + '桂林', + '梧州', + '北海', + '防城港', + '钦州', + '贵港', + '玉林', + '崇左', + '来宾', + '贺州', + '百色', + '河池'], + '新疆维吾尔自治区': ['乌鲁木齐', + '克拉玛依', + '吐鲁番地', + '哈密地', + '昌吉回族自治州', + '博尔塔拉蒙古自治州', + '巴音郭楞蒙古自治州', + '阿克苏地', + '克孜勒苏柯尔克孜自治州', + '喀什地', + '和田地', + '伊犁哈萨克自治州', + '塔城地', + '阿勒泰地', + '省直辖行政单位'], + '江苏省': ['南京', + '无锡', + '徐州', + '常州', + '苏州', + '南通', + '连云港', + '淮安(原淮阴)', + '盐城', + '扬州', + '镇江', + '泰州', + '宿迁', + '常熟', '太仓', '昆山', '淮安'], + '江西省': ['南昌', '景德镇', '萍乡', '九江', '新余', '鹰潭', '赣州', '宜春', '上饶', '吉安', '抚州'], + '河北省': ['石家庄', '唐山', '秦皇岛', '邯郸', '邢台', '保定', '张家口', '承德', '沧州', '廊坊', '衡水'], + '河南省': ['郑州', + '开封', + '洛阳', + '平顶山', + '安阳', + '鹤壁', + '新乡', + '焦作', + '濮阳', + '许昌', + '漯河', + '三门峡', + '南阳', + '商丘', + '信阳', + '周口', + '驻马店地', + '省直辖行政单位'], + '浙江省': ['杭州', '宁波', '温州', '嘉兴', '湖州', '绍兴', '金华', '衢州', '舟山', '台州', '丽水', "义乌", "浙江省"], + '海南省': ['省直辖行政单位', '海口', '三亚'], + '湖北省': ['武汉', + '黄石', + '十堰', + '宜昌', + '襄樊', + '襄阳', + '鄂州', + '荆门', + '孝感', + '荆州', + '黄冈', + '咸宁', + '随州', + '恩施土家族苗族自治州', + '省直辖行政单位', '湖北省', "仙桃"], + '湖南省': ['长沙', + '株洲', + '湘潭', + '衡阳', + '邵阳', + '岳阳', + '常德', + '张家界', + '益阳', + '郴州', + '永州', + '怀化', + '娄底地', + '湘西土家族苗族自治州'], + '澳门特别行政区': ['澳门'], + '甘肃省': ['兰州', + '嘉峪关', + '金昌', + '白银', + '天水', + '酒泉地', + '张掖地', + '武威地', + '定西地', + '陇南地', + '平凉地', + '庆阳地', + '临夏回族自治州', + '甘南藏族自治州'], + '福建省': ['福州', '厦门', '宁德', '莆田', '泉州', '漳州', '龙岩', '三明', '南平', '福建省'], + '西藏自治区': ['拉萨', '昌都地', '山南地', '日喀则地', '那曲地', '阿里地', '林芝地'], + '贵州省': ['贵阳', + '六盘水', + '遵义', + '铜仁地', + '黔西南布依族苗族自治州', + '毕节地', + '安顺地', + '黔东南苗族侗族自治州', + '黔南布依族苗族自治州'], + '辽宁省': ['沈阳', + '大连', + '鞍山', + '抚顺', + '本溪', + '丹东', + '锦州', + '营口', + '阜新', + '辽阳', + '盘锦', + '铁岭', + '朝阳', + '葫芦岛'], + '重庆市': ['重庆'], + '陕西省': ['西安', '铜川', '宝鸡', '咸阳', '渭南', '延安', '汉中', '安康地', '商洛地', '榆林地'], + '青海省': ['西宁', + '海东地', + '海北藏族自治州', + '黄南藏族自治州', + '海南藏族自治州', + '果洛藏族自治州', + '玉树藏族自治州', + '海西蒙古族藏族自治州'], + '香港特别行政区': ['香港'], + '黑龙江省': ['哈尔滨', + '齐齐哈尔', + '鸡西', + '鹤岗', + '双鸭山', + '大庆', + '伊春', + '七台河', + '牡丹江', + '黑河', + '绥化', + '大兴安岭地', '佳木斯']} + +df['公司地址'] = df['公司地址'].apply(lambda x: x.split('·')[0]) + +df['省份'] = df['公司地址'].apply(lambda x: x.split('·')[0]) +index_ = df['公司地址'].apply(lambda x: x.split('·')[0]).value_counts().index + + +# 根据map_dict +def map(area): + for j in map_dict: + if area in map_dict[j]: + return j + + +df['省份'] = df['省份'].apply(lambda x: map(x)) +df['省份'].isnull().sum() + +abnormal = ['元/月', '千/年', '千/天', '千/日', '万/日', '万/天'] +normal = ['万/月', '千/月', '万/年', '元/天'] +df['工资'] = df['工资'].apply(lambda x: x.split('·')[0]) +for i in abnormal: + index = df[df['工资'].str.contains(i)]['工资'].index + df.drop(index=index, inplace=True) +for i in normal: + index = df[df['工资'].str.contains(i)]['工资'].index + print(index) + df.drop(index=index, inplace=True) + +df['工资1'] = df['工资'].apply(lambda x: x.split("-")) +df['工资1'] = df['工资1'].astype('str') +for i in df['工资1']: + if len(eval(i)) < 2: + index = df[df['工资1'] == i].index + df.drop(index=index, inplace=True) +df['工资1'] = df['工资1'].apply(lambda x: eval(x)) + +low_list = [] +height_list = [] +for i in df['工资1'].values: + low = i[0] + height = i[1] + if low[-1] == '千': + low1 = float(low[:-1]) * 1000 + elif low[-1] == '万': + low1 = float(low[:-1]) * 10000 + else: + + if height[-1] == '千': + low1 = float(low) * 1000 + else: + low1 = float(low) * 10000 + if height[-1] == '千': + height1 = float(height[:-1]) * 1000 + elif height[-1] == '万': + height1 = float(height[:-1]) * 10000 + + low_list.append(low1) + height_list.append(height1) + +df['最低工资'] = low_list +df['最高工资'] = height_list +# 学历 +education = ['本科', '大专', '硕士', '博士', '中技/中专'] +for i in df['学历']: + if i not in education: + index_ = df[df['学历'] == i].index + df.drop(index=index_, inplace=True) + +print(df.shape) +del df["工资1"] +df.to_csv("./data_clean.csv", index=False)