day59——数据处理

csv数据处理

Csv文件格式: 看下.csv文件的定义: 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。 如一下格式:27,20,14,15,14,12,94,64,37,1015,1013,1009,7,5,2,21,8,35,0.00,,,152 .csv文件可以直接用excel或者类似软件打开,样子都是我们常见的表格形式。

 1 代码处理:
 2 import csv
 3 fileName = ‘weather.csv‘
 4 with open(fileName, "r", encoding="utf-8") as f:
 5     text = csv.reader(f)
 6     for i in text:
 7         print(i)
 8 print("####"*10)
 9 with open(fileName, "r", encoding="utf-8") as f:
10     for i in f.readlines():
11         print(i.split(","))

python提供有第三方库来支持对excel的操作,python处理excel文件用的第三方模块库有xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块。下面我们先安装第三方库

Pip install xlrd

Pip install xlwt

Pip install xluntils

Pip install pyExcelerator

Xlrd只能进行读取excel文件,没法进行写入文件,xlwt可以写入文件,但是不能在已有的excel的文件上进行修改,如果有这个需求,就需要使用xluntils模块了,pyExcelerator模块与xlwt类似,也可以用来生成excel文件

 1 读取单表文件:
 2 import xlrd
 3
 4 def readExcel():
 5     data = xlrd.open_workbook(‘test.xlsx‘)
 6     table = data.sheets()[0] # 打开第一张表
 7     nrows = table.nrows # 获取表的行数
 8     for i in range(nrows): # 循环逐行打印
 9         print(table.row_values(i))#通过row_values来获取每行的值
10
11 readExcel()
 1 读取单表文件复杂例子:
 2 # 打开一个workbook
 3 workbook = xlrd.open_workbook(‘testdata.xlsx‘)
 4 # 抓取所有sheet页的名称
 5 worksheets = workbook.sheet_names()
 6 print(workbook.sheets())
 7 print(‘worksheets is {0}‘.format(worksheets))
 8 # 定位到sheet1
 9 # worksheet1 = workbook.sheet_by_name(u‘Sheet1‘)
10 worksheet1 = workbook.sheets()[1]
11 """
12 #通过索引顺序获取
13 worksheet1 = workbook.sheets()[0]
14 """
15 """
16 #遍历所有sheet对象
17 for worksheet_name in worksheets:
18 worksheet = workbook.sheet_by_name(worksheet_name)
19 """
20 # 遍历sheet1中所有行row
21 num_rows = worksheet1.nrows
22 for curr_row in range(num_rows):
23     row = worksheet1.row_values(curr_row)
24     print(‘row%s is %s‘ % (curr_row, row))
25 # 遍历sheet1中所有列col
26 num_cols = worksheet1.ncols
27 for curr_col in range(num_cols):
28     col = worksheet1.col_values(curr_col)
29     print(‘col%s is %s‘ % (curr_col, col))
30 # 遍历sheet1中所有单元格cell
31 for rown in range(num_rows):
32     for coln in range(num_cols):
33         cell = worksheet1.cell_value(rown, coln)
34         print(cell)
 1 写入excel文件
 2 import xlwt
 3 #创建workbook和sheet对象
 4 workbook = xlwt.Workbook() #注意Workbook的开头W要大写
 5 sheet1 = workbook.add_sheet(‘sheet1‘, cell_overwrite_ok=True)
 6 sheet2 = workbook.add_sheet(‘sheet2‘, cell_overwrite_ok=True)
 7 sheet3 = workbook.add_sheet(‘sheet3‘, cell_overwrite_ok=True)
 8 #向sheet页中写入数据
 9 sheet1.write(0,0,‘this should overwrite1‘)
10 sheet1.write(0,1,‘aaaaaaaaaaaa‘)
11 sheet2.write(0,0,‘this should overwrite2‘)
12 sheet2.write(1,2,‘bbbbbbbbbbbbb‘)
13
14 #-----------使用样式-----------------------------------
15 #初始化样式
16 style = xlwt.XFStyle()
17 #为样式创建字体
18 font = xlwt.Font()
19 font.name = ‘Times New Roman‘
20 font.bold = True
21 #设置样式的字体
22 style.font = font
23 #使用样式
24 sheet3.write(0,1,‘some bold Times text‘,style)
25
26 #保存该excel文件,有同名文件时直接覆盖
27 workbook.save(‘test2.xls‘)
28 print(‘创建excel文件完成!‘)

Excele来处理超链接

 1 import codecs
 2 import xlwt
 3 book = xlwt.Workbook()
 4 sheet_index = book.add_sheet(‘index‘)
 5 line=0
 6 for i in range(9):
 7     link = ‘HYPERLINK("{0}.txt", "{1}_11111")‘.format(i, i)
 8     sheet_index.write(line, 0, xlwt.Formula(link))
 9     line += 1
10 book.save(‘simple2.xls‘)
11 for i in range(0, 9):
12     file = str(i) + ".txt"
13     with codecs.open(file, ‘w‘) as f:
14         f.write(str(i)*10)

Python进行修改excel文件:
但是不支持使用xlsx文件,直接使用xlsx就没有问题,如果使用xlsx文件,容易发生问题。
import xlrd
import xlutils.copy
#打开一个workbook
rb = xlrd.open_workbook(‘aaa111.xls‘)
wb = xlutils.copy.copy(rb)
#获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法
ws = wb.get_sheet(0)
#写入数据
ws.write(10, 10, ‘changed!‘)
#添加sheet页
wb.add_sheet(‘sheetnnn2‘,cell_overwrite_ok=True)
#利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变
wb.save(‘aaa111.xls‘)

 Python处理pdf文件

 1 Python读出pdf文件
 2 #!/usr/bin/env python
 3 # -*- coding: utf-8 -*-
 4 # @Time    : 2018/1/10 14:46
 5 # @Author  : lingxiangxiang
 6 # @File    : demon1.py
 7 from pdfminer.pdfparser import PDFParser, PDFDocument
 8 from pdfminer.pdfparser import PDFPage
 9 from pdfminer.pdfinterp import PDFResourceManager, PDFTextExtractionNotAllowed
10 from pdfminer.pdfinterp import PDFPageInterpreter
11 from pdfminer.pdfdevice import PDFDevice
12 from pdfminer.layout import LAParams
13 from pdfminer.converter import PDFPageAggregator
14 #获取文档对象,你把algorithm.pdf换成你自己的文件名即可。
15 fp=open("test.pdf","rb")
16 #创建一个与文档相关联的解释器
17 parser=PDFParser(fp)
18 #PDF文档对象,提供密码初始化,没有就不用带password参数。
19 doc=PDFDocument()
20
21 parser.set_document(doc)
22 doc.set_parser(parser)
23
24 doc.initialize()
25 #检查文件是否允许文本提取
26 if not doc.is_extractable:
27     raise PDFTextExtractionNotAllowed
28 #链接解释器和文档对象
29 # parser.set_document(doc)
30 #doc.set_paeser(parser)
31 #初始化文档
32 #doc.initialize("")
33 #创建PDF资源管理器对象来存储共享资源
34 resource=PDFResourceManager()
35 #参数分析器
36 laparam=LAParams()
37 #创建一个聚合器
38 device=PDFPageAggregator(resource, laparams=laparam)
39 #创建PDF页面解释器
40 interpreter=PDFPageInterpreter(resource,device)
41 #使用文档对象得到页面集合
42 for page in doc.get_pages():
43   #使用页面解释器来读取
44   interpreter.process_page(page)
45   #使用聚合器来获取内容
46   layout=device.get_result()
47   for out in layout:
48     if hasattr(out, "get_text"):
49       print(out.get_text())

Html转pdf文件

转换成pdf的三种方法: 在工作中,我们可能会遇到把html文件转换成pdf文件,而python给我们提供了pdfkit这个模块,我们直接安装使用就可以了,下面我们就下来介绍一个pdfkit模块的几种用法,

首先,我们安装该模块:

pip install pdfkit

1.网页转换成pdf 直接把url转换成pdf文件 import pdfkit pdfkit.from_url(‘http://google.com‘, ‘out1.pdf‘)

2. Html转换成pdf Import pdfkit pdfkit.from_file(‘test.html‘, ‘out2.pdf‘)

3. 字符创转换成pdf Import pdfkit pdfkit.from_string(‘Hello lingxiangxiang!‘, ‘out3.pdf‘)

抓取aming的linux教程,然后制作成pdf文件

先抓取每个的网页,然后生成pdf文件

 1 import codecs
 2 import os
 3 import sys
 4
 5 import pdfkit
 6 import requests
 7
 8 base_url = ‘http://www.apelearn.com/study_v2/‘
 9 if not os.path.exists("aming"):
10     os.mkdir("aming")
11
12 os.chdir("aming")
13 s = requests.session()
14
15 for i in range(1, 27):
16     url = base_url + ‘chapter‘ + str(i) + ‘.html‘
17     print(url)
18     file = str(i) + ‘.pdf‘
19     print(file)
20     config = pdfkit.configuration(wkhtmltopdf=r"D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe")
21     try:
22         pdfkit.from_url(url, file)
23     except:
24         continue

合并多个pdf文件为一个pdf文件

 1 import PyPDF2
 2 import os
 3 #建立一个装pdf文件的数组
 4 pdfFiles = []
 5 for fileName in os.listdir(‘aming‘):    #遍历该程序所在文件夹内的文件
 6     if fileName.endswith(‘.pdf‘):       #找到以.pdf结尾的文件
 7             pdfFiles.append(fileName)         #将pdf文件装进pdfFiles数组内
 8 # pdfFiles.sort()     #文件排序
 9 print(pdfFiles)
10 os.chdir("aming")
11 pdfWriter = PyPDF2.PdfFileWriter()     #生成一个空白的pdf文件
12 for fileName in pdfFiles:
13     pdfReader = PyPDF2.PdfFileReader(open(fileName,‘rb‘))   #以只读方式依次打开pdf文件
14     for pageNum in range(pdfReader.numPages):
15         print(pdfReader.getPage(pageNum))
16         pdfWriter.addPage(pdfReader.getPage(pageNum))    #将打开的pdf文件内容一页一页的复制到新建的空白pdf里
17 pdfOutput = open(‘combine.pdf‘,‘wb‘)     #生成combine.pdf文件
18 pdfWriter.write(pdfOutput)               #将复制的内容全部写入combine.pdf
19 pdfOutput.close()

Python处理图片

图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python 中最常用的图像处理库,如果你是python2.x,可以通过以下地址进行下载:http://www.pythonware.com/products/pil/index.htm,找到相对应的版本进行下载就可以了。

注意:PIL模块在python3.x中已经替换成pillow模块,文档地址:http://pillow.readthedocs.io/en/latest/,直接使用pip3 install pillow即可安装模块,导入时使用from PIL import Image.

1 from PIL import Image
2 image = Image.open("1.jpg")
3 print(image.format, image.size, image.mode)
4 image.show()

结果: JPEG (1080, 1920) RGB

并把图片打开,展示出来

Image的三个属性:
format : 识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。
size : 返回的一个元组,有两个元素,其值为象素意义上的宽和高。

mode : RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。
Image的方法介绍:
  show():显示最近加载的图像
  open(infilename): 打开文件
  save(outfilename):保存文件
  crop((left, upper, right, lower)):从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。

Image的几何处理:

out = im.resize((128, 128)) #调整图片大小
out = im.rotate(45) #逆时针旋转 45 度角。
out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右对换。
out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下对换。
out = im.transpose(Image.ROTATE_90) #旋转 90 度角。
out = im.transpose(Image.ROTATE_180) #旋转 180 度角。
out = im.transpose(Image.ROTATE_270) #旋转 270 度角。

例子1:抠图 需求,把头像给截图出来:

1 from PIL import Image
2 image = Image.open("1.jpg")
3 print(image.format, image.size, image.mode)
4 box = (600, 300, 1050, 660)
5 region = image.crop(box)
6 region.save("cutting.jpg")

例子2:图片拼合

1 from PIL import Image
2 image = Image.open("1.jpg")
3 print(image.format, image.size, image.mode)
4 box = (600, 300, 1050, 660)
5 egion = image.crop(box)
6 #egion.save("cutting.jpg")
7 region = egion.transpose(Image.ROTATE_180)
8 image.paste(region, box)
9 image.show()

把头像照片截取出来,然后调换头像照片180度,然后在拼接在一起,

上述代码讲图片的((600, 300), (600, 660), (1050, 300), (1050, 660))所画出来的区域进行裁剪,并保存在cutting.jpg中

例子3:缩放:

 1 from PIL import Image
 2
 3 infile = "2.jpg"
 4 outfile = "new2.jpg"
 5 image = Image.open(infile)
 6 (x, y) = image.size
 7 newx = 300
 8 newy = int(y*newx/x)
 9 out = image.resize((newx, newy), Image.ANTIALIAS)
10 out.show()

例子4:验证码

 1 import random
 2 import string
 3 import sys
 4 import math
 5 from PIL import Image, ImageDraw, ImageFont, ImageFilter
 6
 7 # 字体的位置,不同版本的系统会有不同
 8 font_path = ‘msyh.ttf‘
 9 # 生成几位数的验证码
10 number = 4
11 # 生成验证码图片的高度和宽度
12 size = (100, 30)
13 # 背景颜色,默认为白色
14 bgcolor = (255, 255, 255)
15 # 字体颜色,默认为蓝色
16 fontcolor = (0, 0, 255)
17 # 干扰线颜色。默认为红色
18 linecolor = (255, 0, 0)
19 # 是否要加入干扰线
20 draw_line = True
21 # 加入干扰线条数的上下限
22 line_number = 20
23
24
25 # 用来随机生成一个字符串
26 def gene_text():
27     source = list(string.ascii_letters)
28     for index in range(0, 10):
29         source.append(str(index))
30     return ‘‘.join(random.sample(source, number))  # number是生成验证码的位数
31
32
33 # 用来绘制干扰线
34 def gene_line(draw, width, height):
35     begin = (random.randint(0, width), random.randint(0, height))
36     end = (random.randint(0, width), random.randint(0, height))
37     draw.line([begin, end], fill=linecolor)
38
39
40 # 生成验证码
41 def gene_code():
42     width, height = size  # 宽和高
43     image = Image.new(‘RGBA‘, (width, height), bgcolor)  # 创建图片
44     font = ImageFont.truetype(font_path, 25)  # 验证码的字体
45     draw = ImageDraw.Draw(image)  # 创建画笔
46     text = gene_text()  # 生成字符串
47     font_width, font_height = font.getsize(text)
48     draw.text(((width - font_width) / number, (height - font_height) / number), text, font=font, fill=fontcolor)  # 填充字符串
49     if draw_line:
50         for i in range(line_number):
51             gene_line(draw, width, height)
52
53     # image = image.transform((width + 20, height + 10), Image.AFFINE, (1, -0.3, 0, -0.1, 1, 0), Image.BILINEAR)  # 创建扭曲
54     image = image.filter(ImageFilter.EDGE_ENHANCE_MORE)  # 滤镜,边界加强
55     image.save(‘idencode.png‘)  # 保存验证码图片
56     # image.show()
57
58
59 if __name__ == "__main__":
60     gene_code()

原文地址:https://www.cnblogs.com/yangjinbiao/p/8417108.html

时间: 2024-10-25 06:16:39

day59——数据处理的相关文章

海量数据处理技术学习

海量数据处理的常用技术可分为: 外排序:因为海量数据无法全部装入内存,所以数据的大部分存入磁盘中,小部分在排序需要时存入内存. MapReduce:分布式处理技术 hash技术:以Bloom filter技术为代表 外排序:主要适用于大数据的排序.去重. 分布式处理技术:MapReduce 技术思想是将数据交给不同的机器去处理,将数据切分,之后结果归约. 举例,统计出一批数据的TOP N 首先可以根据数据值或者数据HASH(MD5)后的值将数据按照范围划分,不同的服务器负责处理各种的数值范围,实

Jquery调用从ashx文件返回的jsonp格式的数据处理实例

开发环境:vs2010+jquery-1.4.min.js 解决问题:网上代码比较少,好多调试不通,返回数据不用json而用jsonp主要考虑解决跨域问题 开发步骤:打开VS2010,新建一web站点,保存位置选择D:\Website1;添加新项,选择一般处理程序,命名cmdHandler.ashx;添加新项,选择HTML页,命名为testAshx.htm;网上下载jquery-1.4.min.js拷贝到web站点中 项目相关网站源码和运行截图如下: 1.testAshx.htm代码如下: <!

Pandas日期数据处理:如何按日期筛选、显示及统计数据

前言 pandas有着强大的日期数据处理功能,本期我们来了解下pandas处理日期数据的一些基本功能,主要包括以下三个方面: 按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows系统,64位,python3.5. 1 读取并整理数据 首先引入pandas库 import pandas as pd 从csv文件中读取数据 df = pd.read_csv('date.csv', header=None) print(df.head(2)) 0 1 0 2013-10-24 3

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

开源大数据处理系统/工具大全

本文一共分为上下两部分.我们将针对大数据开源工具不同的用处来进行分类,并且附上了官网和部分下载链接,希望能给做大数据的朋友做个参考.下面是第一部分. 查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的J

数据分析师之Excel数据处理与分析实战

Excel数据处理与分析实战 课程学习地址:http://www.xuetuwuyou.com/course/191 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本门课程详细介绍了 Microsoft Excel 的应用知识,Excel也称为电子表格,是Microsoft office 套装软件的一个重要组成部分.利用它可以进行各种数据的混合运算外,还可以应用于财务会计.统计分析.证券管理.决策管理以及市场营销等众多领域.正因为它具有如此广泛的应用,所以才得

Python爬虫数据处理

一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数1.1.设置变量 set @变量名=值 set @address='中国-山东省-聊城市-莘县'; select @address 1.2 .length()函数 char_length()函数区别 select length('a') ,char_length('a') ,length('中') ,char_length('中') 1.3. replace() 函数

企业级大数据处理方案-02.环境决定需求、性能决定选型

上讲,讲述了大概九种的技术种类以及他们的领域.那么既然有吃饭的,那就必须有做饭的.因此大数据技术结构的选型,必须有的组成部分至少三种(来源.计算.存储) 最简单的数据处理架构: 最少单元的数据处理方案,当然这个不是最好的,为什么呢,问题: 1.流式处理数据(Streaming)时,数据量小时,数据存储到HDFS中,20M或者100K,这种情况是有的.这种计算结果的存储极大浪费了存储空间.HDFS不适用于大批量小文件的存储,(只是不适用,不是不能) 2.数据量大时,数据处理不过来(receiver

Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)

面向接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理. 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下推崇最高的两种ORM工具. 1.EntityFramework是微软出的根正苗红的.netd的ORM工具,直接在Vs工具和Mvc框架中集成了,默认生成的项目就是使用EntityFramework的;微软也一直都在维护更新升级,最新版本最新版本都在EF7了.也迁移到了最新的.net Core平台了