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太像了,但是總有些不同的地方。

現在全國的疫情也逐漸緩和,希望大家還能繼續注意身體,同時呢,也祝各位與博主一樣的“新手”可以繼續堅持學習,不要放棄,我們,要用頭髮換來知識 ,嘻嘻,謝謝小夥伴的瀏覽哦,可以順手點個贊留下你的足跡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章