㈠ python处理EXCEL数据
能提供一个样例文件或截个图看下具体是怎样的格式
㈡ python之excel操作
在数据处理方面,Python 一直扮演着重要的角色,对于 Excel 操作,它有着完整且成熟的第三方库,使用也较为简单。
Python 中常用 Excel 操作库如下:
向 Excel 中写入一些数据。
通过 pip install xlwt 命令安装。
执行结果:
通过 pip install XlsxWriter 命令安装。
XlsxWriter 可以很方便的生成图表。
执行结果:
我们使用 xlrd 读取之前写入的数据,使用 pip install xlrd 命令安装。
之前写入的数据还有一个平均年龄是空着的,我们先读取之前写入的数据,再计算出平均值,最后将平均值写入。这里要用到 xlutils 模块,使用 pip install xlutils 安装。
执行结果:
㈢ 利用Python处理Excel数据
如果数据没有标题行,可用pandas添加默认的列名
不读取哪里数据,可用skiprows=[i],跳过文件的第i行不读取
第一次出现的保留,其余删除
最后一次出现的保留,其余删除
** 对客户聊天记录进行分组 **
** 对符合多个条件进行分组**
需要对每一行进行权重设置,列表行数少可行,过多不可行
假设有4行数据,设置采样权重
自动生成数据的数量,均值,标准差等数据
相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关
参考书籍:
《利用pythonj进行数据分析》
《从Excel到Python——数据分析进阶指南》
㈣ Python利器:如何处理pdf表格数据
大家好,我是Peter~
在很多情况下,我们都需要处理PDF格式的文件。尤其当我们遇到PDF表格数据需要进行提取,真的是一个令人头疼的问题。
因为PDF文件不能像Word那样直接复制,即使复制了再黏贴也可能会出现格式排版错乱甚至乱码问题。如何从一个PDF文件提取出表格数据?本文提供两个解决方案:
首先提供的一种方法是从文字 PDF 中提取表格信息的工具:Camelot,它能够直接将大部分表格转换为 Pandas 的 Dataframe。
更多的详细信息,请参考项目地址: https://github.com/camelot-dev/camelot
camelot的安装有多种方式。如果有报错,网上一般有解决方式:
1、通过conda安装
2、使用pip进行安装
3、通过GitHub进行安装
首先将项目复制到本地:
然后进入文件中进行安装:
下面通过一个案例来讲解如何使用camelot。假设我们现在有一个只有一页的PDF文件test.pdf:
1、先读取文件
导出成csv格式的数据(方式1)
查看tables的相关信息:
导出方式2:
将数据转换成DataFrame:
tabula的功能比camelot更加强大,可以同时对多个表格数据进行提取。项目的具体地址请参考: https://github.com/chezou/tabula-py
tabula的安装是非常简单的:
安装之后检验这个库是否安装成功:
通过tabula这个库来读取PDF文件:
然后我们发现列表中唯一的一个元素就是dataframe:
将读取到的数据输出成CSV格式的文件:
上面读取的PDF文件是比较简单的,只有一页,而且刚好是一个很标准的表格形式的数据,下面看一个比较复杂的例子:
下面是第一页,第一列可以看成是索引:
在第二页中有两份表格,而且中间有很多的空白行:
第三页的数据比较标准:
这3页是在同一个PDF文件中,这3页是在同一个PDF文件中,这3页是在同一个PDF文件中
上面的红色提示中我们看到:当没有指定pages参数的时候,只会默认读取第一页的数据,所以列表的长度为1。
转成dataframe后将原来的索引变成新的一列 (部分数据)
通过pages来读取全部数据:
通过指定pages="all":
同时获取两个表格的数据:
通过area参数来指定:
删除在读取的表格中我们不需要的字段信息
可以将得到的数据输出成不同格式的文件,以json格式为例:
我们可以看到
㈤ python可以处理excel数据吗
python处理excel数据的方法:1、使用xlrd来处理;2、使用【xlutils+xlrd】来处理;3、使用xlwt来处理;4、使用pyExcelerator来处理;5、使用Pandas库来处理。
㈥ python处理图片数据
目录
1.机器是如何存储图像的?
2.在Python中读取图像数据
3.从图像数据中提取特征的方法#1:灰度像素值特征
4.从图像数据中提取特征的方法#2:通道的平均像素值
5.从图像数据中提取特征的方法#3:提取边缘
是一张数字8的图像,仔细观察就会发现,图像是由小方格组成的。这些小方格被称为像素。
但是要注意,人们是以视觉的形式观察图像的,可以轻松区分边缘和颜色,从而识别图片中的内容。然而机器很难做到这一点,它们以数字的形式存储图像。请看下图:
机器以数字矩阵的形式储存图像,矩阵大小取决于任意给定图像的像素数。
假设图像的尺寸为180 x 200或n x m,这些尺寸基本上是图像中的像素数(高x宽)。
这些数字或像素值表示像素的强度或亮度,较小的数字(接近0)表示黑色,较大的数字(接近255)表示白色。通过分析下面的图像,读者就会弄懂到目前为止所学到的知识。
下图的尺寸为22 x 16,读者可以通过计算像素数来验证:
图片源于机器学习应用课程
刚才讨论的例子是黑白图像,如果是生活中更为普遍的彩色呢?你是否认为彩色图像也以2D矩阵的形式存储?
彩色图像通常由多种颜色组成,几乎所有颜色都可以从三原色(红色,绿色和蓝色)生成。
因此,如果是彩色图像,则要用到三个矩阵(或通道)——红、绿、蓝。每个矩阵值介于0到255之间,表示该像素的颜色强度。观察下图来理解这个概念:
图片源于机器学习应用课程
左边有一幅彩色图像(人类可以看到),而在右边,红绿蓝三个颜色通道对应三个矩阵,叠加三个通道以形成彩色图像。
请注意,由于原始矩阵非常大且可视化难度较高,因此这些不是给定图像的原始像素值。此外,还可以用各种其他的格式来存储图像,RGB是最受欢迎的,所以笔者放到这里。读者可以在此处阅读更多关于其他流行格式的信息。
用Python读取图像数据
下面开始将理论知识付诸实践。启动Python并加载图像以观察矩阵:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from skimage.io import imread, imshow
image = imread('image_8_original.png', as_gray=True)
imshow(image)
#checking image shape
image.shape, image
(28,28)
矩阵有784个值,而且这只是整个矩阵的一小部分。用一个LIVE编码窗口,不用离开本文就可以运行上述所有代码并查看结果。
下面来深入探讨本文背后的核心思想,并探索使用像素值作为特征的各种方法。
方法#1:灰度像素值特征
从图像创建特征最简单的方法就是将原始的像素用作单独的特征。
考虑相同的示例,就是上面那张图(数字‘8’),图像尺寸为28×28。
能猜出这张图片的特征数量吗?答案是与像素数相同!也就是有784个。
那么问题来了,如何安排这784个像素作为特征呢?这样,可以简单地依次追加每个像素值从而生成特征向量。如下图所示:
下面来用Python绘制图像,并为该图像创建这些特征:
image = imread('puppy.jpeg', as_gray=True)
image.shape, imshow(image)
(650,450)
该图像尺寸为650×450,因此特征数量应为297,000。可以使用NumPy中的reshape函数生成,在其中指定图像尺寸:
#pixel features
features = np.reshape(image, (660*450))
features.shape, features
(297000,)
array([0.96470588, 0.96470588, 0.96470588, ..., 0.96862745, 0.96470588,
0.96470588])
这里就得到了特征——长度为297,000的一维数组。很简单吧?在实时编码窗口中尝试使用此方法提取特征。
但结果只有一个通道或灰度图像,对于彩色图像是否也可以这样呢?来看看吧!
方法#2:通道的平均像素值
在读取上一节中的图像时,设置了参数‘as_gray = True’,因此在图像中只有一个通道,可以轻松附加像素值。下面删除参数并再次加载图像:
image = imread('puppy.jpeg')
image.shape
(660, 450, 3)
这次,图像尺寸为(660,450,3),其中3为通道数量。可以像之前一样继续创建特征,此时特征数量将是660*450*3 = 891,000。
或者,可以使用另一种方法:
生成一个新矩阵,这个矩阵具有来自三个通道的像素平均值,而不是分别使用三个通道中的像素值。
下图可以让读者更清楚地了解这一思路:
这样一来,特征数量保持不变,并且还能考虑来自图像全部三个通道的像素值。
image = imread('puppy.jpeg')
feature_matrix = np.zeros((660,450))
feature_matrix.shape
(660, 450)
现有一个尺寸为(660×450×3)的三维矩阵,其中660为高度,450为宽度,3是通道数。为获取平均像素值,要使用for循环:
for i in range(0,iimage.shape[0]):
for j in range(0,image.shape[1]):
feature_matrix[i][j] = ((int(image[i,j,0]) + int(image[i,j,1]) + int(image[i,j,2]))/3)
新矩阵具有相同的高度和宽度,但只有一个通道。现在,可以按照与上一节相同的步骤进行操作。依次附加像素值以获得一维数组:
features = np.reshape(feature_matrix, (660*450))
features.shape
(297000,)
方法#3:提取边缘特征
请思考,在下图中,如何识别其中存在的对象:
识别出图中的对象很容易——狗、汽车、还有猫,那么在区分的时候要考虑哪些特征呢?形状是一个重要因素,其次是颜色,或者大小。如果机器也能像这样识别形状会怎么样?
类似的想法是提取边缘作为特征并将其作为模型的输入。稍微考虑一下,要如何识别图像中的边缘呢?边缘一般都是颜色急剧变化的地方,请看下图:
笔者在这里突出了两个边缘。这两处边缘之所以可以被识别是因为在图中,可以分别看到颜色从白色变为棕色,或者由棕色变为黑色。如你所知,图像以数字的形式表示,因此就要寻找哪些像素值发生了剧烈变化。
假设图像矩阵如下:
图片源于机器学习应用课程
该像素两侧的像素值差异很大,于是可以得出结论,该像素处存在显着的转变,因此其为边缘。现在问题又来了,是否一定要手动执行此步骤?
当然不!有各种可用于突出显示图像边缘的内核,刚才讨论的方法也可以使用Prewitt内核(在x方向上)来实现。以下是Prewitt内核:
获取所选像素周围的值,并将其与所选内核(Prewitt内核)相乘,然后可以添加结果值以获得最终值。由于±1已经分别存在于两列之中,因此添加这些值就相当于获取差异。
还有其他各种内核,下面是四种最常用的内核:
图片源于机器学习应用课程
现在回到笔记本,为同一图像生成边缘特征:
#importing the required libraries
import numpy as np
from skimage.io import imread, imshow
from skimage.filters import prewitt_h,prewitt_v
import matplotlib.pyplot as plt
%matplotlib inline
#reading the image
image = imread('puppy.jpeg',as_gray=True)
#calculating horizontal edges using prewitt kernel
edges_prewitt_horizontal = prewitt_h(image)
#calculating vertical edges using prewitt kernel
edges_prewitt_vertical = prewitt_v(image)
imshow(edges_prewitt_vertical, cmap='gray')
㈦ python 处理excel
使用xlrd读取文件,使用xlwt生成Excel文件(可以控制Excel中单元格的格式)。但是用xlrd读取excel是不能对其进行操作的;而xlwt生成excel文件是不能在已有的excel文件基础上进行修改的,如需要修改文件就要使用xluntils模块。pyExcelerator模块与xlwt类似,也可以用来生成excel文件。
[代码]test_xlrd.py **
#coding=utf-8
#######################################################
#filename:test_xlrd.py
#author:defias
#date:xxxx-xx-xx
#function:读excel文件中的数据
#######################################################
import xlrd
#打开一个workbook
workbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls')
#抓取所有sheet页的名称
worksheets = workbook.sheet_names()
print('worksheets is %s' %worksheets)
#定位到sheet1
worksheet1 = workbook.sheet_by_name(u'Sheet1')
"""
#通过索引顺序获取
worksheet1 = workbook.sheets()[0]
#或
worksheet1 = workbook.sheet_by_index(0)
"""
"""
#遍历所有sheet对象
for worksheet_name in worksheets:
worksheet = workbook.sheet_by_name(worksheet_name)
"""
#遍历sheet1中所有行row
num_rows = worksheet1.nrows
for curr_row in range(num_rows):
row = worksheet1.row_values(curr_row)
print('row%s is %s' %(curr_row,row))
#遍历sheet1中所有列col
num_cols = worksheet1.ncols
for curr_col in range(num_cols):
col = worksheet1.col_values(curr_col)
print('col%s is %s' %(curr_col,col))
#遍历sheet1中所有单元格cell
for rown in range(num_rows):
for coln in range(num_cols):
cell = worksheet1.cell_value(rown,coln)
print cell
"""
#其他写法:
cell = worksheet1.cell(rown,coln).value
print cell
#或
cell = worksheet1.row(rown)[coln].value
print cell
#或
cell = worksheet1.col(coln)[rown].value
print cell
#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
cell_type = worksheet1.cell_type(rown,coln)
print cell_type
"""
**2. [代码]test_xlwt.py **
#coding=utf-8
#######################################################
#filename:test_xlwt.py
#author:defias
#date:xxxx-xx-xx
#function:新建excel文件并写入数据
#######################################################
import xlwt
#创建workbook和sheet对象
workbook = xlwt.Workbook() #注意Workbook的开头W要大写
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)
#向sheet页中写入数据
sheet1.write(0,0,'this should overwrite1')
sheet1.write(0,1,'aaaaaaaaaaaa')
sheet2.write(0,0,'this should overwrite2')
sheet2.write(1,2,'bbbbbbbbbbbbb')
"""
#-----------使用样式-----------------------------------
#初始化样式
style = xlwt.XFStyle()
#为样式创建字体
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
#设置样式的字体
style.font = font
#使用样式
sheet.write(0,1,'some bold Times text',style)
"""
#保存该excel文件,有同名文件时直接覆盖
workbook.save('E:\\Code\\Python\\test2.xls')
print '创建excel文件完成!'
**3. [代码]test_xlutils.py **
#coding=utf-8
#######################################################
#filename:test_xlutils.py
#author:defias
#date:xxxx-xx-xx
#function:向excel文件中写入数据
#######################################################
import xlrd
import xlutils.
#打开一个workbook
rb = xlrd.open_workbook('E:\\Code\\Python\\test1.xls')
wb = xlutils..(rb)
#获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法
ws = wb.get_sheet(0)
#写入数据
ws.write(1, 1, 'changed!')
#添加sheet页
wb.add_sheet('sheetnnn2',cell_overwrite_ok=True)
#利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变
wb.save('E:\\Code\\Python\\test1.xls')
**4. [代码]test_pyExcelerator_read.py **
#coding=utf-8
#######################################################
#filename:test_pyExcelerator_read.py
#author:defias
#date:xxxx-xx-xx
#function:读excel文件中的数据
#######################################################
import pyExcelerator
#parse_xls返回一个列表,每项都是一个sheet页的数据。
#每项是一个二元组(表名,单元格数据)。其中单元格数据为一个字典,键值就是单元格的索引(i,j)。如果某个单元格无数据,那么就不存在这个值
sheets = pyExcelerator.parse_xls('E:\\Code\\Python\\testdata.xls')
print sheets
**5. [代码]test_pyExcelerator.py **
#coding=utf-8
#######################################################
#filename:test_pyExcelerator.py
#author:defias
#date:xxxx-xx-xx
#function:新建excel文件并写入数据
#######################################################
import pyExcelerator
#创建workbook和sheet对象
wb = pyExcelerator.Workbook()
ws = wb.add_sheet(u'第一页')
#设置样式
myfont = pyExcelerator.Font()
myfont.name = u'Times New Roman'
myfont.bold = True
mystyle = pyExcelerator.XFStyle()
mystyle.font = myfont
#写入数据,使用样式
ws.write(0,0,u'ni hao 帕索!',mystyle)
#保存该excel文件,有同名文件时直接覆盖
wb.save('E:\\Code\\Python\\mini.xls')
print '创建excel文件完成!'
㈧ Python 数据处理(十八)—— HTML 表格
顶级 read_html() 函数可以接受 HTML 字符串、文件或URL,并将 HTML 表解析为 pandas DataFrames 列表。
注意 :即使 HTML 内容中仅包含一个表, read_html 也会返回 DataFrame 对象的列表
让我们看几个例子
读入 banklist.html 文件的内容,并将其作为字符串传递给 read_html
如果愿意,您甚至可以传入 StringIO 的实例
读取 URL 并匹配包含特定文本的表
指定一个标题行(默认情况下 <th> 或 <td> 位于 <thead> 中的元素用于形成列索引,如果 <thead> 中包含多个行,那么创建一个多索引)
指定索引列
指定要跳过的行数:
使用列表指定要跳过的行数( range 函数也适用)
指定一个 HTML 属性
指定应转换为 NaN 的值
指定是否保持默认的 NaN 值集
可以为列指定转换器。这对于具有前导零的数字文本数据很有用。
默认情况下,将数字列转换为数字类型,并且前导零会丢失。为了避免这种情况,我们可以将这些列转换为字符串
组合上面的选项
读取 to_html 的输出(会损失浮点数的精度)
当只提供了一个解析器时,如果解析失败, lxml 解析器会抛出异常,最好的方式是指定一个解析器列表
但是,如果安装了 bs4 和 html5lib 并传入 None 或 ['lxml','bs4'] ,则解析很可能会成功。
DataFrame 对象有一个实例方法 to_html ,它将 DataFrame 的内容呈现为 html 表格。
函数参数与上面描述的方法 to_string 相同。
columns 参数将限制显示的列
float_format 参数控制浮点值的精度
bold_rows 默认情况下将使行标签加粗,但你可以关闭它
classes 参数提供了给 HTML 表 设置 CSS 类的能力。
请注意,这些类附加到现有的 dataframe 类之后
render_links 参数提供了向包含 url 的单元格添加超链接的能力
最后, escape 参数允许您控制 HTML 结果中是否转义了 "<" 、 ">" 和 "&" 字符(默认情况下为 True )。
因此,要获得没有转义字符的 HTML ,请传递 escape=False
转义
不转义
在某些浏览器上这两个 HTML 表可能并不会显示出差异。
在顶级 pandas io 函数 read_html 中,用于解析 HTML 表的库存在一些问题
㈨ python中如何将表中的数据做成一张表,然后再从中取出数据
第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。
获取外部数据
python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。
1 import numpy as np
2 import pandas as pd
导入数据表
下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考 pandas 的
官方文档。
1 df=pd.DataFrame(pd.read_csv(‘name.csv’,header=1))
2 df=pd.DataFrame(pd.read_excel(‘name.xlsx’))
创建数据表
另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现。生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以 DataFrame 的简称 df 来命名数据表。
1 df = pd.DataFrame({‘id’:[1001,1002,1003,1004,1005,1006],
2 ‘date’:pd.date_range(‘20130102’, periods=6),
3 ‘city’:['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '],
4 ‘age’:[23,44,54,32,34,32],
5 ‘category’:[‘100-A’,‘100-B’,‘110-A’,‘110-C’,‘210-A’,‘130-F’],
6 ‘price’:[1200,np.nan,2133,5433,np.nan,4432]},
7 columns =[‘id’,‘date’,‘city’,‘category’,‘age’,‘price’])
这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。
数据表检查
python 中处理的数据量通常会比较大,所以就需要我们对数据表进行检查。比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。
数据维度(行列)
Excel 中可以通过 CTRL 向下的光标键,和 CTRL 向右的光标键来查看行号和列号。Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。
1 #查看数据表的维度
2 df.shape
3 (6, 6)
数据表信息
使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。
1 #数据表信息
2 df.info()
4 <class ‘pandas.core.frame.DataFrame’>
5 RangeIndex: 6 entries, 0 to 5
6 Data columns (total 6 columns):
7 id 6 non-null int64
8 date 6 non-null datetime64[ns]
9 city 6 non-null object
10 category 6 non-null object
11 age 6 non-null int64
12 price 4 non-null float64
13 dtypes: datetime64ns, float64(1), int64(2), object(2)
14 memory usage: 368.0 bytes
查看数据格式
Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python 中使用 dtypes 函数来返回数据格式。
Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。
1#查看数据表各列格式
2df.dtypes
3
4id int64
5date datetime64[ns]
6city object
7category object
8age int64
9price float64
10dtype: object
11
12#查看单列格式
13df[‘B’].dtype
14
15dtype(‘int64’)
查看空值
Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。
Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。
df_isnull
1#检查特定列空值
2df[‘price’].isnull()
3
40 False
51 True
62 False
73 False
84 True
95 False
10Name: price, dtype: bool
查看唯一值
Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python 中使用 unique 函数查看唯一值。
Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与 Excel 中删除重复项后的结果。
1 #查看 city 列中的唯一值
2 df[‘city’].unique()34array(['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '], dtype=object)
查看数据表数值
Python 中的 Values 函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。
1#查看数据表的值
2df.values
3
4array([[1001, Timestamp(‘2013-01-02 00:00:00’), 'Beijing ', ‘100-A’, 23,
5 1200.0],
6 [1002, Timestamp(‘2013-01-03 00:00:00’), ‘SH’, ‘100-B’, 44, nan],
7 [1003, Timestamp(‘2013-01-04 00:00:00’), ’ guangzhou ', ‘110-A’, 54,
8 2133.0],
9 [1004, Timestamp(‘2013-01-05 00:00:00’), ‘Shenzhen’, ‘110-C’, 32,
10 5433.0],
11 [1005, Timestamp(‘2013-01-06 00:00:00’), ‘shanghai’, ‘210-A’, 34,
12 nan],
13 [1006, Timestamp(‘2013-01-07 00:00:00’), 'BEIJING ', ‘130-F’, 32,
14 4432.0]], dtype=object)
查看列名称
Colums 函数用来单独查看数据表中的列名称。
1 #查看列名称
2 df.columns
3
4 Index([‘id’, ‘date’, ‘city’, ‘category’, ‘age’, ‘price’], dtype=‘object’)
查看前 10 行数据
Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前 3 行的数据。
1#查看前 3 行数据``df.head(``3``)
Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后 3 行的数据。
1#查看最后 3 行df.tail(3)
㈩ Python处理Excel效率高十倍(下篇)通篇硬干货,再也不用加班啦
《用Python处理Excel表格》下篇来啦!
身为工作党或学生党的你,平日里肯定少不了与Excel表格打交道的机会。当你用Excel处理较多数据时,还在使用最原始的人工操作吗?现在教你如何用Python处理Excel,从此处理表格再也不加班,时间缩短数十倍!
上篇我们进行了一些事前准备,目的是用Python提取Excel表中的数据。而这一篇便是在获取数据的基础上,对Excel表格的实操处理。
第9行代码用来指定创建的excel的活动表的名字:
·不写第9行,默认创建sheet
·写了第9行,创建指定名字的sheet表
第9行代码,通过给单元格重新赋值,来修改单元格的值
第9行代码的另一种写法sheet['B1'].value = 'age'
第10行代码,保存时如果使用原来的(第7行)名字,就直接保存;如果使用了别的名字,就会另存为一个新文件
插入有效数据
使用append()方法,在原来数据的后面,按行插入数据
·insert_rows(idx=数字编号, amount=要插入的行数),插入的行数是在idx行数的下方插入
·insert_cols(idx=数字编号, amount=要插入的列数),插入的位置是在idx列数的左侧插入
·delete_rows(idx=数字编号, amount=要删除的行数)
·delete_cols(idx=数字编号, amount=要删除的列数)
move_range(“数据区域”,rows=,cols=):正整数为向下或向右、负整数为向左或向上
举个例子:
openpyxl.styles.Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
其中,字体颜色中的color是RGB的16进制表示
再者,可以使用for循环,修改多行多列的数据,在这里介绍了获取的方法
Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)
水平对齐:‘distributed’,‘justify’,‘center’,‘left’, ‘centerContinuous’,'right,‘general’
垂直对齐:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’
当然,你仍旧可以调用for循环来实现对多行多列的操作
设置行列的宽高:
·row_dimensions[行编号].height = 行高
·column_dimensions[列编号].width = 列宽
合并单元格有下面两种方法,需要注意的是,如果要合并的格子中有数据,即便python没有报错,Excel打开的时候也会报错。
merge_cells(待合并的格子编号)
merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
拆分单元格的方法同上
unmerge_cells(待合并的格子编号)
unmerge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
create_sheet(“新的sheet名”):创建一个新的sheet表
第11行,使用title修改sheet表的名字
remove(“sheet名”):删除某个sheet表
要删除某sheet表,需要激活这个sheet表,即:将其作为活动表(关于活动表的定义请看前面文章开头写的有)下面8~11行代码展示了原始活动表与手动更换活动表,第13行代码删掉活动表
背景知识
numpy与pandas
NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库;pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的,我们需要利用Pandas进行Excel的合并
1.下面的代码生成了一个5行3列的包含15个字符的嵌套列表
(注意,第4行代码:15是等于35的,如果是15对应43,或者16对应5*3都会报错)
(注意,第5行代码,虽然5行3列是15个数据,但是可以指定数据从1开头,到16结束)
2.添加表头
使用pandas库的DataFrame来添加表头。关于打印的结果,把最左侧的一列去掉之后会发现结果很和谐,这是因为最左侧的一列代表行号。此时xx变量的类型是
xlsxwriter模块一般是和xlrd模块搭配使用的,
xlsxwriter:负责写入数据,
xlrd:负责读取数据。
1.创建一个工作簿
2.创建sheet表
3.写入数据