python 数据分析基础二:excel文件处理(三)(对列内容的一系列操作)

由于博主已经开学了,所以更新会比较慢一点,小伙伴们多多体谅哈,想继续学习数据分析基础的小伙伴可以关注博主哦!😄

那么为了学习的继续,我们依然需要那三个excel文件,这个我们可以去一个地址下载:传送门
当然由于是外网github社区所以会比较慢,但是文件本身并没有特别大,所以小伙伴只需要等待片刻即可

文件
在这里插入图片描述
今天我们的重点放在对excel文件处理的列处理上
这里博主也特别生命一点,excel从某种形式上来说是csv文件的一种,所以很多操作其实是类似于前面博主所发布的csv文件的处理博客,也因此,博主在excel模块会更多的倾向于对一些函数的其他用法或其他内容

使用列索引值

基础python

代码:

#excel文件对列的操作
from datetime import date
from xlrd import open_workbook,xldate_as_tuple
from xlwt import Workbook
input_file="sales_2013.xlsx"
output_file="output.xlsx"
out_workbook=Workbook()#创建操作对象
out_worksheet=out_workbook.add_sheet("jan_2013_output")
my_columns=[1,4]
with open_workbook(input_file) as workbook:
    worksheet=workbook.sheet_by_name("january_2013")
    data=[]
    for row in range(worksheet.nrows):
        row_list=[]
        for column in my_columns:
            cell_value=worksheet.cell_value(row,column)
            if worksheet.cell_type(row,column)==3 :
                date_cell=xldate_as_tuple(cell_value,workbook.datemode)
                date_cell=date(*date_cell[0:3]).strftime("%m/%d/%Y")
                row_list.append(date_cell)
            else:
                row_list.append(cell_value)
        data.append(row_list)
    for list_index,out_list in enumerate(data):
        for element_index,element in enumerate(out_list):
            out_worksheet.write(list_index,element_index,element)
out_workbook.save(output_file)

我们可以看到代码与当时处理csv文件时大同小异,实际两者差距并不大。我们处理excel时只多了:

  1. 对时间格式的处理
  2. 按行列索引一个个写入元素
  3. 对模块的引入不同

所以思维方面已经不需要多说了。
这里博主提醒小伙伴们,一定要注意这里的workbook.datemode,这里是不能带括号的,否则会报错 ‘int’ object is not callable 也就是对象不可调用,如果大家的代码报错是“某某模块没有某某函数”,那么小伙伴们很有可能是代码中的worksheet与workbook引用户问题了。
strftime 是datetime模块中的函数,作用是将时间格式化。
代码的最后要记得out_workbook.save(output_file) 如果没有参数的话,你的对象便没有地方保存了。

利用pandas
import pandas as pd
input_file="sales_2013.xlsx"
output_file="output.xlsx"
data_frame=pd.read_excel(input_file,"january_2013",index_col=None)
data_frame_column_by_index=data_frame.iloc[:,[1,4]]
writer=pd.ExcelWriter(output_file)
data_frame_column_by_index.to_excel(writer,sheet_name="jan_2013_out",index=False)
writer.save()

有一说一,这真的简单吗,但是如果我们真的要依靠pandas模块的话,小伙伴们需要记忆很多的参数,这一点真的很烦,但是Many skills do not press the body(技多不压身)嘛,是不是。
iloc函数:在csv文件讲过两次,这里的iinteger 的意思,也就是说他的参数时整形,前参量为行索引,后参量为列索引。
index_col=None:也讲过:重新设置一列为索引,但有小伙伴不理解,ok
传送门大家可以去这里看详解。
index=False:结果不显示索引。

选取列标题

基础python

代码:

#选取列标题,excel文件处理
from datetime import date
from xlrd import open_workbook,xldate_as_tuple
from xlwt import Workbook
input_file="sales_2013.xlsx"
out_file="output.xlsx"
out_workbook=Workbook()#创建对象
out_worksheet=out_workbook.add_sheet("jan_2013_out")
my_columns=["Customer Name"]
with open_workbook(input_file) as workbook:
    worksheet=workbook.sheet_by_name("january_2013")
    headerlist=worksheet.row_values(0)
    data=[my_columns]
    header_index_list=[]
    for index in range(len(headerlist)):
        if headerlist[index] in my_columns:
            header_index_list.append(index)
    for row in range(1,worksheet.nrows):
        row_list=[]
        for column in header_index_list:
            row_list.append(worksheet.cell_value(row,column))
        data.append(row_list)
    for list_index,out_list in enumerate(data):
        for element_index,element in enumerate(out_list):
            out_worksheet.write(list_index,element_index,element)
out_workbook.save(out_file)

那么小伙伴们应该能发现博主偷懒了😄因为现在已经凌晨三点了,博主有点累了,不过这,并!不!影响!博客的质量。
那么这里我们只选取了一列,就避免了对时间的格式化,因为时间的格式化博主已经说过很多遍了,再讲下去是在毫无意义,而且我相信小伙伴们也都能掌握。代码本身并不难,小伙伴们只要专心看都能看懂的。

利用pandas
import pandas as pd
input_file="sales_2013.xlsx"
out_file="output.xlsx"
data_frame=pd.read_excel(input_file,"january_2013",index_col=None)
data_frame_select=date_frame.loc[:,["属性分类名"]]
writer=pd.ExcelWriter(out_file)
data_frame_select.to_excel(writer,sheet_name="jan_2013_out",index=False)
writer.save()

重点:

  1. loc 函数,博主之前也讲过,iloc函数的参量为整形,而loc函数就不一样了,他的用法更广,当然在实现目的上是与iloc函数差不多的,但是loc函数的参量可以是字符串,列表,整形,都可。
  2. …好像没有其他了。。。。

总之呢,其实博主是完全不打算写excel处理的博客的,因为它的方法与csv太像了,但是总有些不同的地方。

现在全国的疫情也逐渐缓和,希望大家还能继续注意身体,同时呢,也祝各位与博主一样的“新手”可以继续坚持学习,不要放弃,我们,要用头发换来知识 ,嘻嘻,谢谢小伙伴的浏览哦,可以顺手点个赞留下你的足迹。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值