pandas处理excel表格的工作流
最近師傅讓我幫他整理下excel表格,我就自認為很簡單的答應了,沒想到是自己給自己挖了一個坑,哈哈。遇到了好多問題,因此,寫一篇文章記錄下。
其實,仔細分析,這個工作流無非就是
當然講起來容易,中間也涉及到了一些具體的問題
pandas 讀取excel
這里我接觸了兩種方法:
使用pandas.read_excel(“123.xlsx”)方法
這個方法返回一個DataFrame對象 ,對于有多個工作表的文件 ,會默認讀取工作表1,也可以同過索引,來獲得第幾個表的數據,默認為0。
然后,我們處理數據一般都是按行處理的,所以我們可以將數據按行輸出
for index,values in df.iterrows():print(index,values)并且values 是一個Series對象,可以使用鍵名讀取數據,很方便。
filepandas.ExcelFile(“123.xlsx”)
這個方法會返回一個ExcelFile 對象,這個方法適合一個文件中有好幾個表格,然后我們可以按表格讀取,做表格數據的合并。
我們可以通過sheet_names,獲取一個列表,然后分列表的讀取數據。
對于DataFrame的操作,就可以像方法1那樣,按行遍歷了。
pandas 進行操作
這次的業務邏輯是,如果一篇文章的作者在一個花名冊中存在,那么就保存這條文章記錄,反之刪除這條記錄。但是數據集中有一些問題 ,比如有的名字中間有空格如
"李 明"我們可以使用如下命令將空格除去:
cdf.fillna("null")# 填充空值 cdf.replace('\s+','',regex=True,inplace=True)#將兩個字的名字 之間的空格去掉同時手機號碼會默認變成科學計數法的形式如:
手機號 1.865167e+10這是因為我們默認數字使用浮點型存儲,所以會出現如下形式,我們可以將浮點型的格式設置為不顯示小數,使用如下命令
pd.set_option('display.float_format', lambda x: '%.0f' % x)這涉及到的內容有將一條記錄存入列表中,其他并沒有什么難度,其代碼邏輯如下:
new_excel=[] for index,values in df.iterrows():if values["成果來源"]=="合著" or values["作 者"] in name_list:#new_excel.append(values)pandas 導出excel
有了上述的new_excel列表,我們可以將其轉化為一個DataFrame對象,然后導出到excel。和輸出一樣,如果是單個表,我們可以使用to_excel 去輸出
df1.to_excel('e:/working_file/data.xlsx',sheet_name='sheet1')對于有多個數據表,要輸出到一個文件,可以使用`
save_path = 'e:/working_file/data.xlsx' writer = pd.ExcelWriter(save_path) df1.to_excel(writer,sheet_name='sheet1') df2.to_excel(writer,sheet_name='sheet2') writer.save() #這就是將多個dataframe寫入到一個文件的方法了。但是輸出結束后,你打開看看,會發現手機號那里還是科學計數法表示的,同時前面還多了序列,這時候就需要兩個屬性了,index=False 和float_format="%.0f" 0表示小數點后0位。
修改后代碼如下
以上就是pandas處理excel表格的工作流,有不足的后期補充。
總結
以上是生活随笔為你收集整理的pandas处理excel表格的工作流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以太网插板W5100——基于Arduin
- 下一篇: 学会使用DM8的间隔分区