Hướng dẫn how do i export multiple dataframe from excel to python? - làm cách nào để xuất nhiều khung dữ liệu từ excel sang python?

Một ví dụ về việc viết nhiều khung dữ liệu vào bảng tính bằng gấu trúc và xlsxwriter.

##############################################################################
#
# An example of writing multiple dataframes to worksheets using Pandas and
# XlsxWriter.
#
# SPDX-License-Identifier: BSD-2-Clause
# Copyright 2013-2022, John McNamara, 
#

import pandas as pd


# Create some Pandas dataframes from some data.
df1 = pd.DataFrame[{'Data': [11, 12, 13, 14]}]
df2 = pd.DataFrame[{'Data': [21, 22, 23, 24]}]
df3 = pd.DataFrame[{'Data': [31, 32, 33, 34]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_multiple.xlsx', engine='xlsxwriter']

# Write each dataframe to a different worksheet.
df1.to_excel[writer, sheet_name='Sheet1']
df2.to_excel[writer, sheet_name='Sheet2']
df3.to_excel[writer, sheet_name='Sheet3']

# Close the Pandas Excel writer and output the Excel file.
writer.save[]

Nó khá dễ dàng để thêm nhiều khung dữ liệu gấu trúc vào sách công việc Excel miễn là nó là các bảng tính khác nhau. Nhưng, thật khó khăn khi đưa nhiều khung dữ liệu vào một bảng tính nếu bạn muốn sử dụng chức năng DF.TO_Excel tích hợp của Pandas.

# Creating Excel Writer Object from Pandas  
writer = pd.ExcelWriter['test.xlsx',engine='xlsxwriter']   
workbook=writer.book
worksheet=workbook.add_worksheet['Validation'] 
df.to_excel[writer,sheet_name='Validation',startrow=0 , startcol=0]   
another_df.to_excel[writer,sheet_name='Validation',startrow=20, startcol=0] 

Mã trên sẽ không hoạt động. Bạn sẽ nhận được lỗi của

 Sheetname 'Validation', with case ignored, is already in use.

Bây giờ, tôi đã thử nghiệm đủ để tôi tìm thấy một cách để làm cho nó hoạt động.

writer = pd.ExcelWriter['test.xlsx',engine='xlsxwriter']   # Creating Excel Writer Object from Pandas  
workbook=writer.book
df.to_excel[writer,sheet_name='Validation',startrow=0 , startcol=0]   
another_df.to_excel[writer,sheet_name='Validation',startrow=20, startcol=0] 

Điều này sẽ hoạt động. Vì vậy, mục đích của tôi là đăng câu hỏi này trên stackoverflow là gấp đôi. Đầu tiên, tôi hy vọng điều này sẽ giúp ai đó nếu anh ấy/cô ấy đang cố gắng đưa nhiều dữ liệu vào một bảng công việc duy nhất tại Excel.

Thứ hai, ai đó có thể giúp tôi hiểu được sự khác biệt giữa hai khối mã đó không? Có vẻ như chúng có khá giống nhau ngoại trừ khối đầu tiên của bảng tính được tạo ra có tên là "Xác thực" trước khi cái thứ hai thì không. Tôi nhận được phần đó.

Điều tôi không hiểu là tại sao nó nên khác nhau? Ngay cả khi tôi không tạo ra bảng tính trước, dòng này, dòng ngay trước lần cuối cùng,

 df.to_excel[writer,sheet_name='Validation',startrow=0 , startcol=0]  

Dù sao cũng sẽ tạo ra một bảng tính. Do đó, vào thời điểm chúng tôi đạt đến dòng mã cuối cùng, "Xác thực" bảng tính đã được tạo cũng như trong khối mã thứ hai. Vì vậy, câu hỏi của tôi về cơ bản, tại sao khối mã thứ hai hoạt động trong khi cái thứ nhất không?

Cũng vui lòng chia sẻ nếu có một cách khác để đưa nhiều khung dữ liệu vào Excel bằng cách sử dụng chức năng DF.TO_EXCEL tích hợp !!

Độc giả của blog này biết rằng chúng tôi khá lớn trong việc tìm cách tự động hóa các nhiệm vụ trần tục và nhàm chán. Python là tuyệt vời cho tự động hóa, đặc biệt khi nó liên quan đến miền phân tích dữ liệu.

Gần đây, chúng tôi đang ngày càng dành nhiều thời gian hơn với thư viện phân tích dữ liệu Pandas và sử dụng nó cho dữ liệu và trực quan hóa. Chúng tôi thay vì làm việc trong Python thay vì xử lý sự phức tạp của Excel Visual Basic cho các ứng dụng [VBA] khi thao tác dữ liệu.

Điều đó nói rằng, có những tình huống trong đó chúng tôi chọn cung cấp dữ liệu từ gấu trúc trở lại vào một sổ làm việc excel. Điều này cho phép chúng tôi kết hợp sự linh hoạt và tốc độ của Python và Pandas với khả năng trực quan tuyệt vời và tính phổ biến rõ ràng của Excel.

Hôm nay, chúng tôi sẽ chỉ cho bạn cách viết và xuất dữ liệu từ khung dữ liệu gấu trúc sang tệp Excel [XLSX]. Chúng tôi sẽ đối phó với hai kịch bản:

  • Lưu một bản dữ liệu gấu trúc vào một bảng tính excel.
  • Viết gấu trúc DataFrames vào nhiều bảng tính trong sổ làm việc.

Lưu ý: Hướng dẫn này đòi hỏi một số kiến ​​thức cơ bản về lập trình Python và cụ thể là Thư viện Pandas.

Xuất và viết gấu trúc DataFrame thành Excel

Ở đây, quá trình đó một cách ngắn gọn:

  • Trước hết, hãy đảm bảo rằng bạn đã cài đặt các thư viện Pandas, OpenPyXL và XLSXWriter vào môi trường của bạn. Đây là cách cài đặt gấu trúc trong môi trường phát triển Python của bạn.
  • Khởi tạo / tải dữ liệu dữ liệu pandas của bạn.
  • Sử dụng phương thức dataFrame.TO_Excel để xuất dữ liệu của bạn

Tải thư viện bổ trợ

Trước khi chúng tôi bắt đầu, chúng tôi sẽ cần nhập một vài thư viện vào Python như hình dưới đây. Hãy tiếp tục và nhập mã Python 3 này vào trình soạn thảo Python yêu thích của bạn.

import pandas as pd
import openpyxl
import xlsxwriter

Xác định DataFrame của chúng tôi

Bây giờ, hãy để Lôi tạo dữ liệu mà chúng tôi sẽ sử dụng trong hướng dẫn này

# define data as a dictionary
data = [{"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
         "avg_salary": [120, 100, 120, 80],
          "applications": [10,15,14,20]}]

# Create a Pandas DataFrame out of a Python dictionary
df = pd.DataFrame.from_dict[data]
# look at the Data
print[df.head[]]
ngôn ngữavg_salarycác ứng dụng0123
Python120 10
C-Sharp100 15
JavaScript120 14
PHP80 20

Lưu ý: Nếu bạn muốn tìm hiểu cách tổng hợp dữ liệu trong Python, bạn có thể xem xét hướng dẫn của chúng tôi về việc nhóm dữ liệu Python theo một hoặc nhiều cột.

Pandas xuất sang các tệp XLS và XLSX mới và hiện có

Bây giờ, chúng tôi muốn xuất khung dữ liệu mà chúng tôi vừa tạo ra một sổ làm việc Excel. Pandas có phương pháp TO_EXCEL rất tiện dụng cho phép thực hiện chính xác điều đó. Hãy để sử dụng nó:

df.to_excel["languages.xlsx"] 

Mã sẽ tạo tệp ngôn ngữ.xlsx và xuất tập dữ liệu vào trang1

Lưu ý: Trong trường hợp bạn không có gói OpenPyXL được cài đặt trong môi trường Python của bạn, bạn sẽ nhận được lỗi sau: ModulenotFounderRor: Không có mô -đun có tên ‘OpenPyxl. Giải pháp tương đối đơn giản: từ thiết bị đầu cuối của bạn hoặc nếu bạn đang sử dụng Anaconda, từ Navigator Anaconda, Loại: PIP cài đặt OpenPyXL. Sau đó chạy lại mã của bạn một lần nữa.ModuleNotFoundError: No module named ‘openpyxl’ . The solution is relatively simple: from your terminal or if you are using Anaconda, from the Anaconda Navigator, type: pip install openpyxl. Then re-run your code again.

Nếu bạn muốn có nhiều lạ mắt hơn, bạn có thể sử dụng các tham số của phương thức TO_EXCEL để tùy chỉnh truyền dữ liệu của bạn. Trong trường hợp của chúng tôi, chúng tôi đặt tên trang tính, chọn không xuất chỉ mục DataFrame đã chọn các cột để xuất và thậm chí xác định các tấm đông lạnh trong bảng tính.to_excel method to customize your data transfer. In our case we set the sheet name, chose not to export the DataFrame index picked the columns to export and even define frozen panes in the worksheet.

df.to_excel["languages1.xlsx", sheet_name="Languages", index=False, , freeze_panes=[1,1], columns=["avg_salary", "language"]]

Python để xuất các khung dữ liệu pandas sang nhiều tờ

Cho đến nay rất tốt, nhưng nếu chúng ta muốn nhập dữ liệu vào một số bảng tính thì sao? Điều đó cũng có thể, mặc dù được xây dựng hơn một chút. Lưu ý việc sử dụng thư viện Python XLSXWriter.

Trước tiên, chúng tôi sẽ chia dữ liệu của mình thành ba khung dữ liệu khác nhau:

#we define three lists
S1= data["language"]
S2= data["avg_salary"]
S3= data["applications"]

# We then create three dataframes
df1=pd.DataFrame[S1, columns=["language"]]
df2=pd.DataFrame[S2 , columns=["avg_salary"]]
df3=pd.DataFrame[S3, columns=["applications"]]

# We then group the dataframes into a list for more efficient processing 
dflist= [df1,df2,df3]

Bây giờ chúng tôi sẽ nhập nhiều khung dữ liệu vào Excel [trong trường hợp này là ba DFS của chúng tôi vào ba bảng tính khác nhau].

# Creating Excel Writer Object from Pandas  
writer = pd.ExcelWriter['test.xlsx',engine='xlsxwriter']   
workbook=writer.book
worksheet=workbook.add_worksheet['Validation'] 
df.to_excel[writer,sheet_name='Validation',startrow=0 , startcol=0]   
another_df.to_excel[writer,sheet_name='Validation',startrow=20, startcol=0] 
0

Voi hèla, bây giờ hãy tiếp tục với thư mục của bạn và xem xét tệp Language_Multiple.xlsx. Bạn xong việc rồi :-].

Bài Viết Liên Quan

Chủ Đề