Tạo bảng trong Excel bằng Python

Trong phần này, tôi sẽ trình bày cách sử dụng thư viện Pandas với Excel. Chúng tôi sẽ sử dụng các thao tác bảng excel cơ bản như tạo trang tính mới, thêm dữ liệu hàng loạt, nối thêm dữ liệu, đọc dữ liệu, định dạng dữ liệu và thêm biểu đồ

Cài đặt

Thực hiện các lệnh sau để cài đặt các thư viện Pandas, xlsxwriter, xlrd và openpyxl

pip install pandaspip install xlsxwriterpip install xlrdpip install openpyxl

Tạo một bảng tính Excel_______1_______

Mã này sẽ tạo một tệp demo.xlsx mới với trang tính mặc định có tên là Sheet1

Tạo bảng trong Excel bằng Python
Tạo bảng trong Excel bằng Python

Khi tôi googled nó, phiên bản mới nhất của PIL là dành cho Python 1. 5. 2—wtf? . Thứ tôi cần cài đặt là thư viện

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
1

pip install --user Pillow

Chèn hình ảnh

Để chèn một hình ảnh từ đĩa, tôi có thể tạo một đối tượng

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
2, sau đó thêm hình ảnh vào trang tính bằng cách neo hình ảnh vào ô trên cùng bên trái của nó

Ví dụ, trong đoạn mã này, tôi đặt một hình ảnh trên ô

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
3

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()

và kết quả trông giống như

Tạo bảng trong Excel bằng Python

Thu nhỏ hình ảnh

Tôi cũng có thể sửa đổi

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
2 trước khi chèn để chia tỷ lệ hình ảnh của mình. Đặc biệt, tôi muốn thay đổi hai thuộc tính

  • chiều cao
  • bề rộng

Ví dụ: tôi có thể tăng chiều cao lên 50% so với ảnh gốc trong mã của mình

coffee_image = Image('coffee.png')
coffee_image.height = coffee_image.height * 0.5
worksheet.add_image(coffee_image, 'C2')

Kết quả là, bảng tính trông giống như

Tạo bảng trong Excel bằng Python

biểu đồ

Tạo bảng trong Excel bằng Python

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
0 chỉ hỗ trợ một số biểu đồ hạn chế. Để xem danh sách đầy đủ các biểu đồ được hỗ trợ, vui lòng tham khảo tài liệu

  • Biểu đồ trong openpyxl

Lập biểu đồ

Biểu đồ trong Excel là một cách để hiển thị dữ liệu được tham chiếu. Vì vậy, mục tiêu của tôi ở đây là đặt một phạm vi ô (giả sử, một lưới ô hình chữ nhật) mà tôi muốn vẽ biểu đồ

Giả sử tôi có một số dữ liệu được gọi là

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
6 (số lượng 15 hàng đầu tiên của dữ liệu bệnh tim UCI. )

from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.chart import BarChart, Series, Reference

cp_count = pd.DataFrame({
    'category': {0: 1, 1: 2, 2: 3, 3: 0},
    'count': {0: 5, 1: 4, 2: 3, 3: 3}
})

workbook2 = Workbook()
worksheet = workbook2.active

for r in dataframe_to_rows(cp_count, index=False, header=True):
    worksheet.append(r)

Khi tôi đã ghi dữ liệu vào trang tính, tôi có thể tạo biểu đồ tại ô

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
7 bằng cách đặt tham chiếu của biểu đồ thanh của tôi cho các ô dữ liệu tương ứng

sheet = worksheet.title

chart = BarChart()

# range_string use the format
# sheetname!top-left:bottom-right to select data
data = Reference(worksheet, range_string=f'{sheet}!B1:B5')
category = Reference(worksheet, range_string=f'{sheet}!A2:A5')

chart.add_data(data, titles_from_data=True)
chart.set_categories(category)
worksheet.add_chart(chart, 'D3')

workbook2.save('chart_example.xlsx')

để có được

Tạo bảng trong Excel bằng Python

Tôi đã sử dụng

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
8 ở đây để chọn một ô hình chữ nhật cho dữ liệu của mình. Có một cách khác để chọn phạm vi dữ liệu bằng cách xác định một hộp có số cột và hàng

data = Reference(ws, min_col=2, min_row=1, max_row=5, max_col=2)
category = Reference(ws, min_col=1, min_row=2, max_row=5)

Bỏ qua một trong các giá trị tối đa hoặc tối thiểu có nghĩa là chúng tôi chỉ chọn trên một cột hoặc một hàng. Biểu đồ kết quả là như nhau

Thuộc tính biểu đồ

Dựa trên tài liệu, dường như có một số thuộc tính tôi có thể điều chỉnh cho biểu đồ của mình

Phong cách

Nếu tôi thêm dòng này,

chart.style = 10

sau đó, nó tạo ra một biểu đồ hơi khác với các đường viền màu trắng xung quanh các thanh. Tôi chưa tìm thấy bất kỳ tài liệu nào về số ánh xạ tới kiểu nào trong Excel—vì vậy nếu bạn tìm ra, hãy cho tôi biết

thuộc tính không xác định

Có một vài thuộc tính trong trang biểu đồ của openpyxl mà tôi thấy không hiển thị bất cứ thứ gì. tôi. e

chart.type = 'col'
chart.shape = 10

viết công thức

Tôi có thể viết một công thức Excel bằng cách đặt một ô thành đúng tên công thức và phạm vi dữ liệu. Ví dụ để tính tổng của cột B, em có thể gọi hàm

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
9 trong Excel bằng cách viết

worksheet['B6'] = '=SUM(B2:B5)'

mang lại cho tôi

Tạo bảng trong Excel bằng Python

Định dạng dưới dạng bảng

Bảng trong Excel, giống như biểu đồ, là tham chiếu đến một nhóm ô. Trong

from openpyxl import Workbook
from openpyxl.drawing.image import Image

workbook = Workbook()

coffee_image = Image('coffee.png')
worksheet.add_image(coffee_image, 'C2')

worksheet['C1'] = 'Me drinking coffee and kicking back'

workbook.save('example.xlsx')
workbook.close()
0, có một đối tượng
coffee_image = Image('coffee.png')
coffee_image.height = coffee_image.height * 0.5
worksheet.add_image(coffee_image, 'C2')
1 mà tôi có thể tạo kiểu theo cùng một tên kiểu bảng từ Excel

Ví dụ: nếu tôi muốn sử dụng Table Style Light 1 từ Excel trên cùng một dữ liệu mà tôi đã sử dụng cho

coffee_image = Image('coffee.png')
coffee_image.height = coffee_image.height * 0.5
worksheet.add_image(coffee_image, 'C2')
2, trước tiên tôi có thể tìm tên từ Excel

Tạo bảng trong Excel bằng Python

sau đó tôi có thể viết

# data, workbook, and worksheet are the same as in the BarChart example
tab = Table(displayName="Table1", ref="A1:B5")

# I list out the 4 show-xyz options here for reference
style = TableStyleInfo(
    name="TableStyleLight1",
    showFirstColumn=False,
    showLastColumn=False,
    showRowStripes=True,
    showColumnStripes=False
)
tab.tableStyleInfo = style
worksheet.add_table(tab)

workbook2.save('table_example.xlsx')

và nó mang lại cho tôi

Tạo bảng trong Excel bằng Python

Đối với tài liệu, xem

  • bảng trang tính

Kết thúc

Cảm ơn bạn đã đọc hết 8 bài viết của PyderPuffGirls. (Và cảm ơn Keith, vì đã nghĩ ra tên cho phiên họp của chúng tôi. )

Loạt bài đăng này xuất phát từ quan sát của tôi rằng nhiều người trong lĩnh vực phân tích đã dùng thử Python nhưng không thấy nó có thể giúp họ như thế nào trong công việc. Tôi hy vọng rằng thông qua các bài đăng này, bạn đã tìm thấy 2-3 điều mà bạn có thể sử dụng để tự động hóa các phần nhàm chán của công việc phân tích—có thể tái đầu tư cho công việc thử thách và bổ ích hơn

Vì vậy, tôi muốn kết thúc bài đăng này bằng một thủ thuật cuối cùng

Thủ thuật cuối cùng

Ngay cả khi bạn đã làm cho mình hiệu quả hơn thông qua tự động hóa

Nhẹ nhàng vượt quá mong đợi của người dùng

bởi vì rất hấp dẫn để cung cấp cho người dùng những gì họ muốn khi nó đã sẵn sàng

Nếu tôi có thể nhận được báo cáo trong 5 phút, thì tôi có thể gửi email cho họ kết quả vào phút thứ 6, phải không?

Tạo bảng trong Excel bằng Python

Thay vì cung cấp cho người dùng những gì họ muốn, hãy cung cấp cho họ những gì họ cần. Gửi các báo cáo theo cùng một lịch trình để giúp bạn có thêm thời gian. Sử dụng thêm thời gian cho các vấn đề mà chỉ trí óc con người mới có thể giải quyết để khám phá và phát triển thông tin chuyên sâu về dữ liệu. Tôi nghĩ đây là nơi thú vị thực sự trong khoa học dữ liệu. Vì vậy, hãy chấm dứt những thứ nhàm chán và vui chơi

Python có thể tạo bảng tổng hợp trong Excel không?

Định dạng ô trong Bảng tổng hợp Excel bằng Python . Điền vào bảng tính (tùy chọn). Nhận tham chiếu của trang tính nơi đặt bảng tổng hợp. Nhận tham chiếu của bảng tổng hợp theo chỉ mục bằng Worksheet. Create a new or load an existing Excel file using the Workbook class. Populate the worksheet (optional). Get reference of the worksheet where pivot table is located. Get reference of the pivot table by index using Worksheet.

Python có thể tương tác với Excel không?

Có nhiều gói Python khác nhau để làm việc với Excel. Phần lớn trong số này là để đọc và ghi các tệp Excel (e. g. openpyxl và xlsxwriter). PyXLL rất khác với các gói khác này. Thay vì chỉ cho phép bạn đọc và ghi tệp Excel, PyXLL tích hợp Python vào Excel .