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'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的更多相关文章
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 【转载】使用Pandas对数据进行筛选和排序
使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...
- 【转载】使用Pandas进行数据提取
使用Pandas进行数据提取 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据提取 目录 set_index() ix 按行提取信息 按列提取信息 按行与列提取信息 提取特定日期的信 ...
- 【转载】使用Pandas进行数据匹配
使用Pandas进行数据匹配 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas进行数据匹配 目录 merge()介绍 inner模式匹配 lefg模式匹配 right模式匹配 outer模式 ...
- 【转载】使用Pandas创建数据透视表
使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...
- Pandas 把数据写入csv
Pandas 把数据写入csv from sklearn import datasets import pandas as pd iris = datasets.load_iris() iris_X ...
- pandas学习(数据分组与分组运算、离散化处理、数据合并)
pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...
- Pandas DataFrame数据的增、删、改、查
Pandas DataFrame数据的增.删.改.查 https://blog.csdn.net/zhangchuang601/article/details/79583551 #删除列 df_2 = ...
- pandas 选取数据 修改数据 loc iloc []
pandas选取数据可以通过 loc iloc [] 来选取 使用loc选取某几列: user_fans_df = sample_data.loc[:,['uid','fans_count']] 使 ...
- 【笔记】Pandas分类数据详解
[笔记]Pandas分类数据详解 Pandas Pandas分类数据详解|轻松玩转Pandas(5) 参考:Pandas分类数据详解|轻松玩转Pandas(5)
随机推荐
- 找出A字符串中出现B字符串的起始位置
/** * 找出B出现在A中的起始位置 * @param A * @param lenA * @param B * @param lenB * @date 2016-10-7 * @author sh ...
- 802.1X基础
这是一个认证规范.使用EAPOL协议在客户端与认证端交互. EAPOL协议:Extensible Authentication Protocol over LAN. 假设三个实体: 客户端:PC 认证 ...
- Linux系统安装-系统分区
ctrl+alt+enter全屏
- WCF简单使用(分别部署在控制台和IIS上)
WCF部署到控制台 1.下面通过一个简单的服务示例来认识WCF1.新建项目,名称IBLL,解决方案名称WcfDemo,模板选择类库2.修改Class1.cs文件名称为 IUserInfoService ...
- WebSphere MQ 安装
WebSphereMQ可以在IBM官网下载,有试用版90天的.下载地址http://www.ibm.com/developerworks/cn/downloads/ws/wmq/index.html ...
- POJ 1459:Power Network(最大流)
http://poj.org/problem?id=1459 题意:有np个发电站,nc个消费者,m条边,边有容量限制,发电站有产能上限,消费者有需求上限问最大流量. 思路:S和发电站相连,边权是产能 ...
- vue 导航钩子
导航钩子 (译者:『导航』表示路由正在发生改变.) 正如其名,vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消.有多种方式可以在路由导航发生时执行钩子:全局的, 单个路由独享的 ...
- const、static和extern的正确使用方式
我们在看一些大牛的第三方时,里面会出现很多const.static和extern,尤其是const和static,const和extern的结合使用,直接令很多小伙伴懵逼了,今天就详细讲解一下这三个关 ...
- CryptoJS DES加密
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...
- Tomcat去除项目名称和端口号,直接使用ip地址访问项目的方法
网站开发过程中,一般的工程访问路径是 http://112.74.51.37/projectName如何设置成http://112.74.51.37/ 解决方法: 首先,进入tomcat的安装目录下的 ...