Python数据存储于Excel表格的应用指南

Python—–Excel

  • Python将爬取的数据导入Excel的过程
  • 方法一
  • 引入库,使用库中的DataFrame
  • 操作方法
  • 创建DataFrame
  • 用字典创建
  • 用列表创建
  • 切片和索引
  • Excel读取与写入
  • 读取
  • 写入
  • 方法二
  • 引入Workbook
  • 创建工作簿和工作表
  • 向工作表中添加数据和保存数据
  • 总结
  • Python将爬取的数据导入Excel的过程

    这是同学们常常会遇到的问题,将手头上的一些数据,便捷的生成Excel表格,方便存储、调用、作图等等

    方法一

    通过利用pandas中的方法将字典列表中的数据存储于Excel中
    使用二维列表时常常用到方法一

    引入库,使用库中的DataFrame

    import pandas as pd
    data = pd.DataFrame(data = , columns = )
    

    pandas官网: https://pandas.pydata.org/pandas-docs/stable/index.html

    操作方法

    创建DataFrame
    用字典创建
     >>> data1 = {'学号':['001','002','003'],'姓名':['甲','乙','丙'],
             '平时成绩':[82,72,50],'笔试成绩':[78,71,32],'上机成绩':[78,71,32]}
             
     >>> pd.DataFrame(data1)
        学号 姓名  平时成绩  笔试成绩  上机成绩
    0   001  甲    82       78       78
    1   002  乙    72       71       71
    2   003  丙    50       32       32
    
    # 使用columns
     >>> pd.DataFrame(data1, columns=('姓名','学号','上机成绩','平时成绩','笔试成绩'))
      姓名   学号  上机成绩  平时成绩  笔试成绩
    0  甲    001   78       82       78
    1  乙    002   71       72       71
    2  丙    003   32       50       32
    
    # 使用index
    >>> pd.DataFrame(data1, index=('No1','No2','No3'))
          学号 姓名  平时成绩  笔试成绩  上机成绩
    No1   001  甲    82       78       78
    No2   002  乙    72       71       71
    No3   003  丙    50       32       32
    
    # 加一列
    >>> data = pd.DataFrame(data1)
    >>> data['总成绩'] = data['平时成绩']*0.4+data['笔试成绩']*0.3+data['上机成绩']*0.3
    >>> data
        学号 姓名  平时成绩  笔试成绩  上机成绩   总成绩
    0   001  甲    82       78       78         79.6
    1   002  乙    72       71       71         71.4
    2   003  丙    50       32       32         39.2
    
    用列表创建
    >>> data2 = [['001','甲',82, 78, 78],['002','乙',72,71,71],['003','丙',50,32,32]]
    
    >>> pd.DataFrame(data2, columns=('学号','姓名','平时成绩','笔试成绩','上机成绩'))
        学号 姓名  平时成绩  笔试成绩  上机成绩
    0   001  甲    82       78       78
    1   002  乙    72       71       71
    2   003  丙    50       32       32
    
    切片和索引
  • loc,即location,根据行/列名索引
  • iloc,这个i可以理解成integer,根据行/列号索引
  • 只能用loc/iloc

    >>> data1 = {'学号':['001','002','003'],'姓名':['甲','乙','丙'],
             '平时成绩':[82,72,50],'笔试成绩':[78,71,32],'上机成绩':[78,71,32]} 
    >>> data = pd.DataFrame(data1)
    >>> data.index = ["C1","C2","C3"]
    
    >>> data.loc["C2":"C3"]
         学号 姓名  平时成绩  笔试成绩  上机成绩
    C2   002  乙    72       71       71
    C3   003  丙    50       32       32
    ---------------------------------------
    >>> data.loc[["C1","C3"]]
         学号 姓名  平时成绩  笔试成绩  上机成绩
    C1   001  甲    82       78       78
    C3   003  丙    50       32       32
    ---------------------------------------
    >>> data.iloc[0:2]
         学号 姓名  平时成绩  笔试成绩  上机成绩
    C1   001  甲    82       78       78
    C2   002  乙    72       71       71
    
    # 根据值查找行索引
    >>>data.[data['姓名']=='甲'].index
    C1
    

    可以直接根据列名。或者使用loc/iloc

    >>> data['name']
    C1    甲
    C2    乙
    C3    丙
    ----------------------------------
    >>> data.loc[:,["姓名","笔试成绩"]]
        姓名  笔试成绩
    C1  甲    78
    C2  乙    71
    C3  丙    32
    ----------------------------------
    >>> data.iloc[:,0]
    C1    001
    C2    002
    C3    003
    
    
    Excel读取与写入
    读取

    read_excel()参数:

  • name: excel文件名.xlsx
  • sheet_name: 设置读取的 sheet 名
  • df = pd.read_excel("weather.xlsx",sheet_name="sheet1")
    
    写入

    to_excel()参数:

  • sheet_name: 设置sheet名
  • index:设置sheet序号,默认0
  • df.to_excel(sheet_name='sheet1',startcol=0,index=False)
    

    方法二

    采用Workbook类,直接对Excel进行操作

    引入Workbook

    from openpyxl import Workbook
    

    创建工作簿和工作表

    # 创建工作簿
    book = Workbook()
    # 创建工作表
    sheet = book.create_sheet()
    

    其中create_sheet()参数:

  • title:设置工作表的名字
  • index:选中第几个工作表(从0开始)
  • 向工作表中添加数据和保存数据

    其实可以把工作表当做我们的列表来使用
    所以有以下用法

    # 向工作表中添加数据
    sheet.append(['职位名','公司名','工作地点','薪资','发布时间'])
        for item in data:
            row = [item['title'],item['company'],item['addr'],item['salary'],item['pubDate']]
            sheet.append(row)
    
     # 输出保存
        book.save('51job.xlsx')
    

    总结

    分别对比一下二者的特点适用场景:

    DataFrame Workbook
    适用于二维数据,可以生成二维列表 适用于需要直接对Excel表格进行操作
    整理好数据在列表/字典中可以直接导入生成,一步到位 可以直接把Workbook对象作为Excel操作,更多细微的操作

    大家可以根据需要选择自己的方法,学会将数据通过Python导入Excel中是很有必要的一个技能,以后爬虫或者接单是很有帮助的。后续可以学习将数据上传数据库,有许多爬虫需求是需要做成Excel或者Csv给商家的,因为这种形式可以很好的方便整理数据和画图,直接使用Excel中的功能对数据应用,这样不会代码的人也能操作。

    今天的分享就到这里啦,希望大家觉得有用的可以点个小小的赞。

    作者:star_star999

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python数据存储于Excel表格的应用指南

    发表回复