读文件

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'1\d{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'1\d{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'1\d{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] += '\n'
#print x[0] + '----' + x[1] + '\n'
if len(x) == 2:
rstfile.write(x[0] + '----' + x[1] + '\n')
# else:
# rstfile.write(x[0] + '----' + '\n') print u'文件输出到: '+options.dist
end2 = time.time()
end = time.clock() print u'程序用时cpu:',end - start
print u'程序用时:',end2 - start2 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. C# GMap下提供一个高德地图

    using System; using GMap.NET.Internals; using GMap.NET.Projections; namespace GMap.NET.MapProviders ...

  2. ubuntu 15.04 安装配置 JDK1.8

    1.到oracle的官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选 ...

  3. 摘抄转载前辈们的Java集合类总结

    本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...

  4. HDU 1880 魔咒词典(字符串哈希)

    题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...

  5. maven创建的Web工程,Eclipse 内 tomcat容器不识别的处理方法

    相信很多人都遇到这个问题,简单的说明下处理方式 前提是maven配置都是ok的,这里不多说了 1.创建web工程 mvn archetype:create -DgroupId=com.XXX.YYY ...

  6. Linux下的SVN服务器搭建

    鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...

  7. Linux_know

    Linux_know 在创建Linux分区时,一定要创建SWAP/根分区两个分区 Red Hat Linux 9中,系统默认的root用户对整个系统拥有完全的控制权. 当登录Linux时,一个具有唯一 ...

  8. CSS之float样式总结

    从四大开始开始慢慢接触前端,大概半年多过去了,虽然做了一些东西,但感觉有些点始终不是很清晰.有时候为了赶进度,没有太多时间对某个点进行全面深入思考分析,只能从网上搜一搜,试一试,只要效果出来了,任务就 ...

  9. 50个常用SQL语句

    50个常用SQL语句 Student(S#,Sname,Sage,Ssex) 学生表  S#学号,主键 Course(C#,Cname,T#) 课程表          C#课程号,主键 SC(S#, ...

  10. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...