Python之pandas学习【9】:利用pandas筛选出CSV某几列的数据进行数据处理

今天做了一个实战性的任务,利用pandas筛选出CSV的某几列数据进行数据处理,数据处理用的是re模块,也就是正则表达式。

直接上代码,注意看代码注释,自己运行一遍结合代码注释是最好的效果

代码:

import re
import pandas as pd
import time

class jk_jd():
    # 方法1:传统for循环
    def solution(self,data):
        col = ['x','y'] # 定义要筛选的列
        data_del =  pd.DataFrame(data,columns=col) # 提取出要筛选的列,装到dataframe中
        for i in range(len(data_del['x'])): # 遍历dataFrame中的每一行,进行正则表达式的匹配处理
            data_del['x'][i] = re.sub("
(.*)", "", data_del['x'][i]) # 删掉
后面的所有数据 data_del['x'][i] = re.sub("【(.*?)】","",data_del['x'][i]) # 删掉【】中的所有数据 data_del.to_csv("deal.csv") # 导出为CSV文件 # 方法2:pandas的map模块方式 def solution1(self,data): col = ['x','y'] data_dele = pd.DataFrame(data,columns=col) data_dele['x'] = data_dele['x'].map(lambda x:re.sub("
(.*)", "",re.sub("【(.*?)】","",x))\ .replace('\t','').replace('\n','').replace(' ','')) data_dele.to_csv("deal2.csv") if __name__ == '__main__': data = pd.read_excel('data.xlsx') s = jk_jd() t1 = time.time() data_dele = s.solution(data) print('for循环需要时间: ',time.time()-t1) t2 = time.time() data_dele1 = s.solution1(data) print('map需要时间: ',time.time()-t2)

由于我计算了一下两种方式的时间,可以看一下运行结果:
Python之pandas学习【9】:利用pandas筛选出CSV某几列的数据进行数据处理_第1张图片

由此可知,pandas处理数据我们一般采用map的方式,不要采用for循环的方式。 

你可能感兴趣的:(#,Python基础学习)