• pandas处理数据1


    读文件

    pd.read_csv('path/to/file.txt',header=0,names='ab',index_col=0)
    

    names Columns这个可以不写,制定索引列是第一列,这样就没有序号

    写文件

    dataframe.to_csv('d:/python/end.txt')
    

    dataframe

    类似于二维列表
    充分利用map函数

    df.a=df.a.map(function)
    

    修改一列的值

    筛选列

    new_dataframe = df[df.a!='']
    

    这种办法可以筛选得到新的df
    自动迭代

    处理

    def getPhoneNumFromFile(fobj):
        regex = re.compile(r'1d{10}', re.IGNORECASE)
        phonenums = re.findall(regex, fobj)
        #print phonenums
        if len(phonenums)==1:
            return phonenums[0]
        else:
            return ''
    

    充分体现了轮子的重要性
    如果是一个熟练人员几分钟就搞定了

    #! /usr/bin/env python
    # -*- coding:utf-8   -*-
    # __author__ == "xpro"
    import pandas as pd
    import re,optparse,os
    
    def getPhoneNumFromFile(fobj):
        regex = re.compile(r'1d{10}', re.IGNORECASE)
        phonenums = re.findall(regex, fobj)
        #print phonenums
        if len(phonenums)==1:
            return phonenums[0]
        else:
            return ''
    
    def main():
        p = optparse.OptionParser()
    
        p.add_option('--source', '-s', default="d:/python/telpwd.txt", help=u'要处理的文件路径') #应该对文件进行验证判断是否存在
        p.add_option('--dist', '-d', default="d:/python/dis.txt", help=u'输出文件路径') #验证目录是否可以写
        #如果用户使用的是默认的应该给出提示
        options, arguments = p.parse_args()
        df = pd.read_csv(options.source, header = 0)
    
        df.a = df.a.map(getPhoneNumFromFile)
    
        df = df[df.a != '']
        print 'wirting ro text file...'
        df.to_csv(options.dist)
    
    if __name__ == '__main__':
    
        main()
    

    下面是不是用pandas自己写的版本

    #! /usr/bin/env python
    # -*- coding:utf-8   -*-
    # __author__ == "tyomcat"
    import re,optparse,os,time
    
    p = optparse.OptionParser()
    p.add_option('--source', '-s', default="d:/python/telpwd.txt",help=u'要处理的文件路径')
    p.add_option('--dist', '-d', default="d:/python/dis.txt",help=u'输出文件路径')
    
    options, arguments = p.parse_args()
    
    
    print u'默认路径: %s' % options.source
    print u'默认输出文件路径: %s' % options.dist
    raw_input()
    
    #大家自己处理txt文本的时候,只要重写这个函数就好了
    def getPhoneNumFromFile(fobj):
        regex = re.compile(r'1d{10}', re.IGNORECASE)
        phonenums = re.findall(regex, fobj)
        #print phonenums
        return phonenums
    file = open(options.source)
    
    output = []
    start = time.clock()
    start2 = time.time()
    lines = 0
    while 1:
    
        line = file.readline()
        lines += 1
        if not line:
            break
        arr = line.strip().split('----')
    
        rst = getPhoneNumFromFile(arr[0])
    
        if rst:
            temp = [rst[0]]
            if len(arr) == 2:
                temp.append(arr[1])
    
    
            print 'line ',lines,len(output), temp, time.clock() - start
    
            print line
            output.append(temp)
     # do something
    
    rstfile = open(options.dist,'w')
    
    for x in output:
        #x[1] += '
    '
        #print x[0] + '----' + x[1] + '
    '
        if len(x) == 2:
            rstfile.write(x[0] + '----' + x[1] + '
    ')
        # else:
        #     rstfile.write(x[0] + '----'  + '
    ')
    
    print u'文件输出到: '+options.dist
    end2 = time.time()
    end = time.clock()
    
    
    print u'程序用时cpu:',end - start
    print u'程序用时:',end2 - start2
    
    raw_input()
    

    效率差别那是极大的,这个要3个多小时,上面要十几秒

  • 相关阅读:
    一个简单而实用的JQ插件——lazyload.js图片延迟加载插件
    CSS预处理语言——less与sass的使用
    JQuery速成大法
    实现图片的循环滚动——JS的简单应用
    JS基础——循环很重要
    JS基础——入门必备
    做一个常规的banner图——负边距的使用、banner图的拼法
    网页侧边浮动条的实现
    如何做一个导航栏————浮动跟伪类(hover)事件的应用
    基于java代码的springmvc配置
  • 原文地址:https://www.cnblogs.com/asworm/p/5535814.html
Copyright © 2020-2023  润新知