一、实战场景

如何应用 Pandas 荡涤的二手房数据并存储文件

二、知识点

python 根底语法

python 文件读写

pandas 数据荡涤

三、菜鸟实战

荡涤前的文件

读取源文件

def do_clean_data(self):    # 执行荡涤    clean_data_raw_file_path = self.fileManger.get_data_file_path(self.clean_data_raw_file)    if not os.path.isfile(clean_data_raw_file_path):        # 确认文件存在        self.logger.error("须要荡涤的文件不存在")        print("须要荡涤的文件不存在")        return False    # 存储荡涤数据数组, 先把文件头部存储    new_row_arr = []    # 从荡涤文件读取须要荡涤的数据    raw_df = pd.read_csv(clean_data_raw_file_path, encoding=self.encoding)    for idx in tqdm.trange(len(raw_df.values)):        row = raw_df.values[idx]        if self.check_row_is_valid(row):            # 查看 row 的合法性            new_row = self.clean_row(row)            new_row_arr.append(new_row)    # 保留文件    self.save_to_clean_file(new_row_arr)

对二手房数据进行荡涤

from base_cleaner import BaseDataCleanerimport timeimport platformclass Tao365Cleaner(BaseDataCleaner):    # 逐行读取文件,进行数据荡涤    clean_data_raw_file = "tao365_detail.csv"   # 要执行数据荡涤的文件    clean_data_result_file = 'tao365_clean.csv'  # 数据荡涤的后果文件    clean_data_result_file_head = ['题目', '价格', '每平方价格', '小区', '地址', '屋宇户型', '建筑面积', '所在楼层', '屋宇朝向', '修建年代', '建成年份', '原始屋宇户型']  # 数据荡涤的后果文件的头部信息    def check_row_is_valid(self, raw_row):        # 查看以后行是否无效        area = '区' in raw_row[4]        if area == False:            return False        year = '年' in raw_row[9]        if year == False:            return False        return True    def clean_row(self, raw_row):        # 执行单行荡涤        # self.logger.info("以后荡涤数据: ", raw_row)        # print(raw_row)        # 题目        title = raw_row[0]        # 价格        price = self.get_price(raw_row[1])        # 每平方价格        avg_price_per_square_meter = self.get_avg_price_per_square_meter(raw_row[2])        # 小区        housing = self.get_community(raw_row[3])        # 地址        area = self.get_area(raw_row[4])        # 屋宇户型        house_type = self.get_room_count(raw_row[5])        house_type_2 = raw_row[5]        # 建筑面积        acreage = self.get_area_size(raw_row[6])        # 所在楼层        level = self.get_floor(raw_row[7])        # 屋宇朝向        direction = raw_row[8]        # 年代        year = self.get_year(raw_row[9])        # 建成年份        time = self.get_house_age(year)        # 数据转换        new_row = [title, price, avg_price_per_square_meter, housing, area, house_type, acreage, level, direction, year, time, house_type_2]        return new_row    def get_price(self, row):        # 售价        price = row.replace('万', '')        return int(float(price))    def get_avg_price_per_square_meter(self, row):        # 每平方米均价        avg_price_per_square_meter = row.replace('元/m²', '')        return avg_price_per_square_meter    def get_area(self, row):        # 获取属于哪个区        area = row[:row.index('区')]        return area + '区'    def get_community(self, row):        # 获取属于哪个小区        return row    def get_room_count(self, row):        # 获取房型是几室        room_count = row[:row.index('室')]        return room_count    def get_area_size(self, row):        # 获取面积        area_size = row.replace('㎡', '')        return area_size    def get_floor(self, row):        # 获取所属楼层        floor = row[row.index('/'):]        return floor.replace('/', '').replace('层', '')    def get_year(self, row):        # 获取修建年代        return row.replace('年', '')    def get_house_age(self, row):        # 获取屋宇年龄修建年代        localtime = time.localtime(time.time())        year = int(localtime[0]) - int(row)        return year    def test(self):        # 测试        raw_row = ['娥眉新村 4层 110平米', '460.4万', '70769元/m²', '北极西村', '玄武区玄武门北极西村21号', '4室1厅2卫', '65㎡', '高楼层/3层', '南北', '2020年']        print(raw_row)        new_row = self.clean_row(raw_row)        print(new_row)if __name__ == '__main__':    print("数据荡涤开始")    raw_row = ['娥眉新村 4层 110平米', '460.4万', '70769元/m²', '北极西村', '玄武区玄武门北极西村21号', '4室1厅2卫',               '65㎡', '高楼层/3层', '南北', '2020年']    cleaner = Tao365Cleaner()    # cleaner.test()    cleaner.do_clean_data()    print("数据荡涤实现")    print("python 版本", platform.python_version())

荡涤实现后保留到文件

def save_to_clean_file(self, data_arr):    # 保留到荡涤的文件    file_path = self.fileManger.get_data_file_path(self.clean_data_result_file)    # 初始化数据    frame = pd.DataFrame(data_arr)    frame.columns = self.clean_data_result_file_head    frame.to_csv(file_path, encoding=self.encoding, index=None)    self.logger.debug("荡涤文件保留实现")

运行后果

运行截图

数据荡涤开始
100%|██████████| 9/9 [00:00<?, ?it/s]
数据荡涤实现
python 版本 3.9.10

过程已完结,退出代码0

 后果文件 

资源链接 

https://download.csdn.net/dow...

菜鸟实战,继续学习!