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:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。