使用Python从Excel获取运营数据

现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上)。

Python处理Excel文件主要是第三方模块库xlrd、xlwt、pyexcel-xls、xluntils和pyExcelerator,以及win32com和openpyxl模块,此外Pandas中也带有可以读取Excel文件的模块(read_excel)。

基于扩展知识的目的,我们使用xlrd模块读取Excel数据。

首先安装该库,在系统终端命令行输入命令pip install xlrd。

然后我们以“附件-chapter2”文件夹demo.xlsx数据文件为例,介绍该库的具体应用。数据概览如图所示:

 

excel_data

  1. import xlrd # 导入库
  2. # 打开文件
  3. xlsx = xlrd.open_workbook('demo.xlsx')
  4. # 查看所有sheet列表
  5. print ('All sheets: %s'%xlsx.sheet_names())
  6. print ('===================================') # 内容分割线
  7. # 查看sheet1的数据概况
  8. sheet1 = xlsx.sheets()[0] #获得第一张sheet,索引从0开始
  9. sheet1_name = sheet1.name # 获得名称
  10. sheet1_cols = sheet1.ncols # 获得列数
  11. sheet1_nrows = sheet1.nrows # 获得行数
  12. print ('Sheet1 Name: %s\nSheet1 cols: %s\nSheet1 rows: %s')%(sheet1_name, sheet1_cols, sheet1_nrows)
  13. print ('===================================') # 内容分割线
  14. # 查看sheet1的特定切片数据
  15. sheet1_nrows4 = sheet1.row_values(4) # 获得第4行数据
  16. sheet1_cols2 = sheet1.col_values(2) # 获得第2列数据
  17. cell23 = sheet1.row(2)[3].value # 查看第3行第4列数据
  18. print ('Row 4: %s\nCol 2: %s\nCell 1: %s\n'%(sheet1_nrows4, sheet1_cols2, cell23))
  19. print ('===================================') # 内容分割线
  20. # 查看sheet1的数据明细
  21. for i in range(sheet1_nrows): # 逐行打印sheet1数据
  22.     print (sheet1.row_values(i))

上述代码中,我们先读取一个Excel文件,再查看所有sheet(工作簿)并输出sheet1相关属性信息;然后查看sheet1中特定数据行、列和元素的信息;最后我们用循环的方式,依次读取每个数据行并打印输出。
以下是代码执行后打印输出的结果

  1. All sheets: [u'Sheet1']
  2. ===================================
  3. Sheet1 Name: Sheet1
  4. Sheet1 cols: 4
  5. Sheet1 rows: 10
  6. ===================================
  7. Row 4: [u'431381197408191515', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  8. Col 2: [u'Create_Time', 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0]
  9. Cell 1: 深圳市
  10. ===================================
  11. [u'ID_number', u'Status', u'Create_Time', u'Business_City']
  12. [u'431381198109106573', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  13. [u'431381198809122734', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  14. [u'431381197903117478', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  15. [u'431381197408191515', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  16. [u'431381197606166011', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  17. [u'43138119850623339X', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  18. [u'431381198908223477', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  19. [u'431381198901176911', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']
  20. [u'43138119870827275X', u'\u6709\u6548', 42725.0, u'\u6df1\u5733\u5e02']

提示 在上述打印输出的内容中,我们发现第二列、第三列、第四列与原始数据似乎不同。第二列和第四列“异常”的原因是将中文编码统一转换为Unicode编码,便于在不同程序间调用;第三列“异常”是由于将日期格式转换为数值格式而已。

上述操作只是将数据从Excel中读取出来,基于读取的数据转换为数组便可以进行矩阵计算。由于矩阵计算大多是基于数值型数据实现的,因此上述数据将无法适用于大多数科学计算场景,这点需要注意。

总结:在企业实际场景中,由于Excel本身的限制和适用,其无法存储和计算过大(例如千万级的数据记录)的数据量,并且Excel本身也不是为了海量数据的应用而产生的。因此,Excel可以作为日常基本数据处理、补充数据来源或者汇总级别的数据进行读取,同时也可以作为数据结果展示的载体,这种应用下对于大量数值表格的应用效果非常好。


====================【好书推荐,我为自己代言】====================

《电商流量数据化运营》出版了!

  • 10余年业务经验总结:将我在甲方和乙方,跨企业和跨行业的经验总结起来,供大家快速提升,少走弯路。
  • 流量运营教科书:内容围绕流量数据化运营的全流程展开,涵盖渠道策略与计划管理、媒体投放与执行管理、渠道投放效果评估与分析、流量运营监控与效果复盘等各个环节。
  • 有用、实用:不讲数据分析理论,不讲数据分析工具使用,所有方法均可在工作中直接使用,而且围绕流量数据化运营的常见问题展开。
  • 易用、易读:不要求会Python,会用Excel就行,无晦涩难懂的理论和复杂的推导过程。
  • 以场景应用为核心:以业务场景为切入点,内容上围绕业务问题、数据支持方案、实用工具实操的思路,用数据解决每个具体业务问题。
如果你对本书感兴趣,请点击这里查看更多信息!当然,你也可以先加我微信了解一下。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注