程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

利用pandas處理二級office的Excel試題(一)

編輯:Python

最近在學《利用pandas進行數據分析》,想到計算機二級office就有現成的實例,雖然比較基礎,但是還是適合練練手。

目錄

  • 一、試題概覽
  • 二、初始表格
  • 三、實例
    • 按要求計算均值
    • 條件格式
    • 插入季度
    • 分類匯總
    • 折線圖

一、試題概覽


這是二級office的其中一套試題,對於題目中的設置單元格列寬和對其方式等就不在pandas中展示,我們直接從第5題開始。

二、初始表格


這是素材文件的初始表格。

三、實例

按要求計算均值

第五題要求求出每個月的總支出、各個類別的月均支出、每月平均總支出、最後按照總支出升序排序。

table=pd.read_excel("Excel素材.xlsx",header=1)
#讀取文件
table["總支出"]=table.iloc[:,2:-1].sum(axis=1)
#總支出先取出要求和的列,再利用sum函數
table


然後是各個類別的月均支出

classify_cost=table.iloc[:,2:-1].mean(axis=0)
#同樣選出相應的數據,利用mean函數
classify_cost=classify_cost.round(2)
#這裡利用round()方法將數據保留為兩位小數
classify_cost


最後是升序排序

table.sort_values(by="總支出",ascending=True)
#ascending=False則為降序排序

條件格式

設置條件格式要利用pandas的style屬性,相關詳細的文檔可以參考官方文檔:https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html
首先是將開支金額大於1000的用紅色填充。

def color_negative(val):
color="red" if val>1000 else "black"
return "color:%s"%color
table.iloc[:,2:-1].style.applymap(color_negative)

插入季度

根據月份插入季度,我們首先提取出月份的數值即去掉“月”這個字,只保留具體的數值

month_num=table["月"].str[:-1].astype("int")
#這裡要注意將類型轉換為int類型


然後使用pandas的cut方法進行分類

season=pd.cut(month_num,4,labels=["1季度","2季度","3季度","4季度"])
season


當然也可以寫一個字典,然後用map方法

dic={
"1月":"1季度","2月":"1季度","3月":"1季度","4月":"2季度","5月":"2季度",
"6月":"2季度","7月":"3季度","8月":"3季度","9月":"3季度","10月":"4季度",
"11月":"4季度","12月":"4季度"}
table["季度"]=table["月"].map(dic)

分類匯總

分類匯總求出每個季度各類的月均支出金額,這裡可以直接用pivot_table方法也可以使用groupby

new_table=table.pivot_table(["服裝服飾","飲食","水電氣房租","交通","通信","閱讀培訓","社交應酬","醫療保健","休閒旅游","個人興趣","公益活動"],
index="季度",aggfunc="mean").round(2)
new_table
new_table=table.groupby(["季度"])["服裝服飾","飲食","水電氣房租","交通","通信","閱讀培訓",
"社交應酬","醫療保健","休閒旅游","個人興趣","公益活動"].mean().round(2)

折線圖

new_table.T.plot(figsize=(12,9))
#這裡使用了numpy的轉置方法,將表的行列互換,更好地繪圖


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved