读文件

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

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

写文件

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

dataframe

类似于二维列表

充分利用map函数

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

修改一列的值

筛选列

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

这种办法可以筛选得到新的df

自动迭代

处理

  1. def getPhoneNumFromFile(fobj):
  2. regex = re.compile(r'1\d{10}', re.IGNORECASE)
  3. phonenums = re.findall(regex, fobj)
  4. #print phonenums
  5. if len(phonenums)==1:
  6. return phonenums[0]
  7. else:
  8. return ''

充分体现了轮子的重要性

如果是一个熟练人员几分钟就搞定了

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

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

  1. #! /usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # __author__ == "tyomcat"
  4. import re,optparse,os,time
  5. p = optparse.OptionParser()
  6. p.add_option('--source', '-s', default="d:/python/telpwd.txt",help=u'要处理的文件路径')
  7. p.add_option('--dist', '-d', default="d:/python/dis.txt",help=u'输出文件路径')
  8. options, arguments = p.parse_args()
  9. print u'默认路径: %s' % options.source
  10. print u'默认输出文件路径: %s' % options.dist
  11. raw_input()
  12. #大家自己处理txt文本的时候,只要重写这个函数就好了
  13. def getPhoneNumFromFile(fobj):
  14. regex = re.compile(r'1\d{10}', re.IGNORECASE)
  15. phonenums = re.findall(regex, fobj)
  16. #print phonenums
  17. return phonenums
  18. file = open(options.source)
  19. output = []
  20. start = time.clock()
  21. start2 = time.time()
  22. lines = 0
  23. while 1:
  24. line = file.readline()
  25. lines += 1
  26. if not line:
  27. break
  28. arr = line.strip().split('----')
  29. rst = getPhoneNumFromFile(arr[0])
  30. if rst:
  31. temp = [rst[0]]
  32. if len(arr) == 2:
  33. temp.append(arr[1])
  34. print 'line ',lines,len(output), temp, time.clock() - start
  35. print line
  36. output.append(temp)
  37. # do something
  38. rstfile = open(options.dist,'w')
  39. for x in output:
  40. #x[1] += '\n'
  41. #print x[0] + '----' + x[1] + '\n'
  42. if len(x) == 2:
  43. rstfile.write(x[0] + '----' + x[1] + '\n')
  44. # else:
  45. # rstfile.write(x[0] + '----' + '\n')
  46. print u'文件输出到: '+options.dist
  47. end2 = time.time()
  48. end = time.clock()
  49. print u'程序用时cpu:',end - start
  50. print u'程序用时:',end2 - start2
  51. raw_input()

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

pandas处理数据1的更多相关文章

  1. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  2. 【转载】使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...

  3. 【转载】使用Pandas进行数据提取

    使用Pandas进行数据提取 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据提取 目录 set_index() ix 按行提取信息 按列提取信息 按行与列提取信息 提取特定日期的信 ...

  4. 【转载】使用Pandas进行数据匹配

    使用Pandas进行数据匹配 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas进行数据匹配 目录 merge()介绍 inner模式匹配 lefg模式匹配 right模式匹配 outer模式 ...

  5. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  6. Pandas 把数据写入csv

    Pandas 把数据写入csv from sklearn import datasets import pandas as pd iris = datasets.load_iris() iris_X ...

  7. pandas学习(数据分组与分组运算、离散化处理、数据合并)

    pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...

  8. Pandas DataFrame数据的增、删、改、查

    Pandas DataFrame数据的增.删.改.查 https://blog.csdn.net/zhangchuang601/article/details/79583551 #删除列 df_2 = ...

  9. pandas 选取数据 修改数据 loc iloc []

    pandas选取数据可以通过 loc iloc  [] 来选取 使用loc选取某几列: user_fans_df = sample_data.loc[:,['uid','fans_count']] 使 ...

  10. 【笔记】Pandas分类数据详解

    [笔记]Pandas分类数据详解 Pandas  Pandas分类数据详解|轻松玩转Pandas(5) 参考:Pandas分类数据详解|轻松玩转Pandas(5)

随机推荐

  1. JavaScript在A页面判断B页面加载完毕(iframe load)

    今天遇到一个需求,在A页面上判断B页面是否加载完毕(B页面是第三方页面),加载完毕时隐藏loading动画... 而平时我们一般做的事是在B页面上判断B页面是否加载完毕,进行操作. if(docume ...

  2. 2-MySQL数据库编码uft-8

    mysql> show variables like 'character%'; mysql> show variables like 'collation%'; mysql> st ...

  3. Hadoop:部署Hadoop Single Node

    一.环境准备 1.系统环境 CentOS 7 2.软件环境 OpenJDK # 查询可安装的OpenJDK软件包[root@server1] yum search java | grep jdk... ...

  4. VB.NET中Form窗体运行时,按F1进入全屏状态

    1.在KeyDown事件中添加: If e.KeyValue = 112 Then Me.WindowState = FormWindowState.Maximized End If 注:1.其中11 ...

  5. js计算相隔天数日期

    计算40天前的日期: var temp = new Date();console.log(temp);var tempValue = temp.getTime() - 40 * 24* 60*60*1 ...

  6. WCF 、Web API 、 WCF REST 和 Web Service 的区别

    WCF .Web API . WCF REST 和 Web Service 的区别 The .Net framework has a number of technologies that allow ...

  7. HttpGet 请求(带参数)

    package com.example.util; import java.io.BufferedReader;import java.io.IOException;import java.io.In ...

  8. java socket 多线程通讯 使用mina作为服务端

    客户端代码不变,参照 http://www.cnblogs.com/Westfalen/p/6251473.html 服务端代码如下: import java.io.IOException; impo ...

  9. linux sed

    sed 命令 sed -i 's/3306/3308/g' my.cnf mysql # 同时替换两个文件

  10. Vmware玩mac os x分享

    相信网上类似的材料非常多了,在此就不赘述具体步骤了,先分享一个不错的链接: http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html ...