楠木軒

如何用Python輕鬆搞定Excel日常任務

由 谷太枝 發佈於 經典

全文共1370字,預計學習時長7分鐘
幾乎人人都在用Excel,這種極易上手的數據分析工具無處不在,一旦你掌握了竅門,它就變得非常強大。而Python通常被認為更具有挑戰性,但能做的事也更多。
當Python遇到Excel會發生什麼?本文將告訴你,這三項Excel日常任務,如何用Python輕鬆搞定。
首先導入Pandas並根據工作簿中可用的工作表加載兩個dataframe,稱它們為sales和states。
import pandas as pd
sales = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name ='sales')
states = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name ='states')
調用dataframe的head()方法,如下所示:
print(sales.head())
與Excel進行對比:
可以看到Pandas和Excel顯示的數據是比較相似的,但是有一些關鍵的區別:
· Excel從A開始用字母標記列,而Pandas用變量名稱
· Excel起始行數為1,而Pandas起始行數(“索引”)為0
那麼要如何使用Pandas來完成Excel任務呢?
Pandas的數據透視表
數據透視表是Excel最強大的功能之一,用户可以難以置信的速度從大型數據集中提取有意義的數據。來創建一個關於每個城市銷售總額數據透視表:
用户只需將City字段拖到Rows部分,將Sales字段拖到Values部分。Excel會自動彙總數據集中每個城市的銷售額。
編寫以下代碼,Pandas可以實現相同的數據透視表:
sales.pivot_table(index = 'City',values = 'Sales', aggfunc = 'sum'))
它是怎樣實現的呢:
1.sales.pivot_table告知Pandas基於sales的dataframe創建數據透視表index指定了要聚合的項目
2.values指定了要聚合的值
3.aggfunc指定了使用的函數(還要用到mean、max、min等)
Python中的if函數
Excel中使用IF函數非常方便,可以根據另一個單元格中的條件應用特定的標籤。假設要創建一個新列來告知列B中單元格的值是否大於500。在Excel中,將列E標記為大於500,然後進入單元格E2並寫入:
=IF([@Sales]>500,"Yes", "No")
換成Python,可以使用列表生成式輕鬆地應用相同的if語句:
df['MoreThan500'] = ['Yes' if x> 500 else 'No' for x in df['Sales']
列表生成式非常適合這類工作,不用再編寫複雜if/else語句,你可以更快寫出更整潔的代碼。
Pandas中的VLOOKUP
在數據集中,一個表上有城市,另一個表上有州/省。這並不理想,但是可以在Excel中使用VLOOKUP來鏈接數據。VLOOKUP的工作方式類似於左聯接,即保留左數據集中的所有記錄。讓Excel上下垂直查找表中的特定值,然後返回一個值,該值位於它右邊的某一列中。
增加一個名為“State”的列,使用VLOOKUP從states表中返回相應的州。
而在Python中,可以使用Pandas的merge函數來完成相同的事情。merge函數獲取兩個dataframe並將它們合併。代碼如下:
sales = pd.merge(sales, states,how='left', on='City')
讓我們逐步來看看它:
1.第一個參數是原始dataframe
2.第二個參數是查找值所在的dataframe
3.how指定要創建的連接類型
4.on指定了想要合併的變量(如果在每個dataframe中變量名不同,還可以用left_on和right_on)
你可能會問,既然Excel中可以做到,為什麼還要使用Pandas呢?Python能夠生成可重用的、可跟蹤的代碼,我們能夠輕鬆地複製分析設計。
對於較小的分析來説,Excel可能就足夠了。但給何妨Pandas一個機會,或許你會打開一個新世界。
留言點贊關注我們一起分享AI學習與發展的乾貨
如轉載,請後台留言,遵守轉載規範