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)
随机推荐
- JavaScript在A页面判断B页面加载完毕(iframe load)
今天遇到一个需求,在A页面上判断B页面是否加载完毕(B页面是第三方页面),加载完毕时隐藏loading动画... 而平时我们一般做的事是在B页面上判断B页面是否加载完毕,进行操作. if(docume ...
- 2-MySQL数据库编码uft-8
mysql> show variables like 'character%'; mysql> show variables like 'collation%'; mysql> st ...
- Hadoop:部署Hadoop Single Node
一.环境准备 1.系统环境 CentOS 7 2.软件环境 OpenJDK # 查询可安装的OpenJDK软件包[root@server1] yum search java | grep jdk... ...
- VB.NET中Form窗体运行时,按F1进入全屏状态
1.在KeyDown事件中添加: If e.KeyValue = 112 Then Me.WindowState = FormWindowState.Maximized End If 注:1.其中11 ...
- js计算相隔天数日期
计算40天前的日期: var temp = new Date();console.log(temp);var tempValue = temp.getTime() - 40 * 24* 60*60*1 ...
- WCF 、Web API 、 WCF REST 和 Web Service 的区别
WCF .Web API . WCF REST 和 Web Service 的区别 The .Net framework has a number of technologies that allow ...
- HttpGet 请求(带参数)
package com.example.util; import java.io.BufferedReader;import java.io.IOException;import java.io.In ...
- java socket 多线程通讯 使用mina作为服务端
客户端代码不变,参照 http://www.cnblogs.com/Westfalen/p/6251473.html 服务端代码如下: import java.io.IOException; impo ...
- linux sed
sed 命令 sed -i 's/3306/3308/g' my.cnf mysql # 同时替换两个文件
- Vmware玩mac os x分享
相信网上类似的材料非常多了,在此就不赘述具体步骤了,先分享一个不错的链接: http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html ...