從多個工作表取得資料

使用 pandas 的精實資料導入

Amany Mahfouz

Instructor

選取要載入的工作表

  • read_excel() 預設讀取 Excel 檔的第一個工作表
  • 使用 sheet_name 參數載入其他工作表
  • 以名稱和/或(從 0 起算的)位置指定工作表
  • 傳入名稱/編號清單可一次載入多個工作表
  • 傳給 read_excel() 的參數會套用到所有讀取的工作表
使用 pandas 的精實資料導入

選取要載入的工作表

試算表程式的截圖,顯示兩個工作表的分頁標籤

使用 pandas 的精實資料導入

載入指定工作表

# 依位置索引取得第二個工作表
survey_data_sheet2 = pd.read_excel('fcc_survey.xlsx',
                                   sheet_name=1)

# 依名稱取得第二個工作表 survey_data_2017 = pd.read_excel('fcc_survey.xlsx', sheet_name='2017')
print(survey_data_sheet2.equals(survey_data_2017))
True
使用 pandas 的精實資料導入

載入所有工作表

  • sheet_name=None 傳給 read_excel() 會讀取活頁簿內所有工作表
survey_responses = pd.read_excel("fcc_survey.xlsx", sheet_name=None)

print(type(survey_responses))
<class 'collections.OrderedDict'>
for key, value in survey_responses.items():
    print(key, type(value))
2016 <class 'pandas.core.frame.DataFrame'>
2017 <class 'pandas.core.frame.DataFrame'>
使用 pandas 的精實資料導入

整合實作

# 建立空的 dataframe 以存放所有載入的工作表
all_responses = pd.DataFrame()

# 逐一走訪字典中的 dataframe for sheet_name, frame in survey_responses.items(): # 加上一欄以標示資料年份 frame["Year"] = sheet_name
# 將 dataframe 串接到 all_responses all_responses = pd.concat([all_responses, frame])
# 檢視資料中的年份 print(all_responses.Year.unique())
['2016' '2017']
使用 pandas 的精實資料導入

一起來練習吧!

使用 pandas 的精實資料導入

Preparing Video For Download...