python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Excel表单元格带有换行的数据

Python处理Excel表中单元格带有换行的数据问题

作者:狼少年,程序猿

这篇文章主要介绍了Python处理Excel表中单元格带有换行的数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

问题样式

在数据处理过程中常常会遇到这样一个问题,在给出的Excel表中,有一列数据中每个单元格里面存在多行数据,及多行换行数据。

如下图所示:

每一个单元格中的数据如下:

实例问题

将上述类型的数据(文件3.0),可以发现,文件3.0的第一个表中是m行1列数据,先获取每一行数据,每一行的A列数据中都存有3列N行的数据,将第一列作为纵坐标,第二列作为行坐标,进行作图,将会得到m个图片。

实例实现代码

import xlrd
from pylab import *
data1 = xlrd.open_workbook("./数据/3.0.xlsx")
table1 = data1.sheets()[0]
nrows1 = table1.nrows #行数
ncols1 = table1.ncols #列数
def plotLine(i,x,y):
    colors1 = '#000000' #点的颜色 黑色
    area = np.pi * 4**2  # 点面积
    plt.scatter(x, y, s=area, c=colors1, alpha=0.4)
    plt.savefig('./结果集/1.1.{}.png'.format(i))
    plt.clf() #需要重新更新画布,否则会出现同一张画布上绘制多张图片
for i in  range(1,nrows1):  #从第二行开始 因为第一行为标题A
    rowValues= table1.row_values(i) #某一行数据
    lis = []
    for item in rowValues:
        s = item.replace("\r\n",",")   #将换行符合换成逗号
        s = s.split(',')               #用逗号进行拆分
        s = [a for a in s if(len(str(a))!=0)]   #去除空元素
        num = len(s)
        print(num)
        for m in np.arange(0, num, 3):
            comtent =(s[m],s[m+1],s[m+2])
            # x1=[s[m],s[m+1],s[m+2]]
            lis.append(comtent)
            # res.append(x1)
        x =[]
        y =[]
        # print(lis)
        for j in range(0,len(lis)-1):
            y.append(lis[j][0])
            x.append(lis[j][1])
        x = [ float(d) for d in x ]  # 一定要将字符串类型转换成数值类型
        y = [ float(d) for d in y ]  # 一定要将字符串类型转换成数值类型
        plotLine(i,x,y)

实例结果

图片1.1.0:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文