1 điểm bởi GN⁺ 2023-08-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Microsoft bắt đầu cung cấp bản xem trước công khai cho tính năng tích hợp phân tích và trực quan hóa dữ liệu bằng Python ngay trong Excel
  • Có thể truy cập Python từ ribbon của Excel mà không cần cài đặt riêng, đồng thời tinh chỉnh kết quả cùng với công thức, biểu đồ và PivotTable hiện có
  • Hàm PY mới đưa dữ liệu Python hiển thị trên lưới bảng tính, và nhờ hợp tác với Anaconda, có thể sử dụng pandas, statsmodels, Matplotlib ngay trong Excel
  • Việc tính toán không chạy cục bộ mà được thực thi trên Microsoft Cloud rồi trả kết quả về worksheet, đồng thời cũng có thể tạo trực quan hóa dựa trên Matplotlib và Seaborn
  • Bản xem trước công khai bắt đầu trên Windows trong Beta Channel dành cho Microsoft 365 Insiders, và sau khi kết thúc giai đoạn preview, một số tính năng sẽ bị giới hạn nếu không có giấy phép trả phí

Phân tích Python đi vào bên trong Excel

  • Microsoft đã bổ sung tính năng tích hợp Python vào Excel, cho phép thao tác và phân tích dữ liệu ngay trong bảng tính
  • Người dùng có thể truy cập trực tiếp vào Python từ ribbon của Excel, tiếp tục các tác vụ phân tích nâng cao mà không cần rời khỏi môi trường Excel quen thuộc
  • Các biểu đồ và kết quả thư viện tạo bằng Python có thể được kết hợp với công thức, biểu đồ và PivotTable của Excel để tiếp tục tinh chỉnh

Cách tích hợp sẵn, không cần cài đặt riêng

  • Tích hợp Python được cung cấp như một phần của trình kết nối tích hợp sẵn của Excel và Power Query
  • Có thể truy cập mà không cần cài đặt thêm phần mềm hay cấu hình add-in riêng
  • Hàm PY mới hiển thị dữ liệu Python trong lưới bảng tính Excel

Thư viện Anaconda và trực quan hóa

  • Microsoft hợp tác với Anaconda, kho Python cho doanh nghiệp, để cho phép sử dụng các thư viện Python chủ chốt trong Excel
  • Các thư viện có thể dùng bao gồm
    • pandas
    • statsmodels
    • Matplotlib
  • Người dùng Excel có thể tạo công thức, PivotTable và biểu đồ dựa trên dữ liệu Python
  • Với các thư viện biểu đồ như Matplotlib và Seaborn, có thể tạo các dạng trực quan hóa sau
    • heatmap
    • violin plot
    • swarm plot

Tính toán được xử lý trên Microsoft Cloud

  • Mã Python được viết và sử dụng trong bảng tính Excel, nhưng việc tính toán không diễn ra trên Excel cục bộ mà trên Microsoft Cloud
  • Kết quả thực thi sau đó được trả lại worksheet của Excel

Phạm vi cung cấp và điều kiện giấy phép

  • Bản xem trước công khai của Python in Excel được cung cấp trong Beta Channel của Microsoft 365 Insiders
  • Đối tượng được cung cấp ban đầu bị giới hạn ở Windows
  • Microsoft dự kiến sau đó sẽ mở rộng sang các nền tảng khác
  • Trong thời gian preview, tính năng này được bao gồm trong gói đăng ký Microsoft 365
  • Sau khi kết thúc preview, một số tính năng sẽ bị giới hạn nếu không có giấy phép trả phí

1 bình luận

 
GN⁺ 2023-08-23
Các ý kiến trên Hacker News
  • Từng làm lập trình viên Excel và từng thất bại khi cố đưa Python vào Excel, nên tin hôm nay là một bất ngờ đáng mừng với tôi
    Khoảng hơn 7 năm trước, tôi có cơ hội rời nhóm Excel, nhưng sếp của sếp tôi biết tôi muốn đưa Python vào Excel nên đã nói rằng nếu ở lại thì sẽ giao việc đó cho tôi. Việc tôi tưởng chỉ kéo dài 6 tháng cuối cùng trở thành một dự án khoảng 3 năm, và phần Python dần mờ nhạt đi, cuối cùng sản phẩm được phát hành theo hướng đưa hàm tùy chỉnh JavaScript vào Excel
    Python cũng được chạy “trên đám mây” dựa trên AzureML v1, nhưng đã có nhiều thảo luận qua lại về việc có chạy cục bộ hay không. Có tái cơ cấu, tái ra mắt, tuyển lại nhân sự trong nhóm đối tác AzureML, rồi PM rời đi; trong khi đó một nhóm đối tác khác nhận ra họ có thể dùng mã của chúng tôi để chạy JavaScript trong một tiến trình bên ngoài, nên chúng tôi dành nhiều thời gian để phát hành tính năng đó hơn là Python
    Công việc cốt lõi là thay đổi engine tính toán của Excel để các hàm có thể tính toán bất đồng bộ, cho phép người dùng tiếp tục làm việc trên các phần khác của bảng tính trong khi endpoint từ xa đang tính toán JavaScript, Python hay bất cứ thứ gì khác. Trước đây, trong lúc tính toán thì bảng tính bị khóa, không phù hợp với các phép tính lâu và không biết bao giờ kết thúc. Tôi tò mò không biết một phần những gì chúng tôi làm có được đưa vào tính năng lần này không
    “Tính lại hoặc chết”

    • Nhờ các hàm JavaScript bất đồng bộ, chúng tôi đã có thể phát hành hàm tùy chỉnh ổn định bằng xlwings và Python
      Vấn đề của Office.js là với người dùng Excel trung bình, việc bắt đầu quá khó vì cả đống phụ thuộc npm, và ngay cả lập trình viên chuyên nghiệp cũng khá vất vả. Tôi hài lòng vì đã làm được việc người dùng không cần dùng Node.js: https://docs.xlwings.org/en/latest/pro/server/officejs_custo...
    • Vài năm trước tôi đã tạo được “Python trong Excel” hoạt động, đồng thời cũng chạy được SQL và Matlab/R từ xa
      Giờ là dự án đã bỏ: https://alphawolfxl.com/
      Một số người tôi nhờ thử nghiệm beta nói rằng “công ty sẽ không trả tiền cho thứ này”, khiến tôi có cảm giác mình đang lãng phí thời gian nên đã dừng lại; giờ nhìn thấy việc này, cảm xúc thật lẫn lộn
    • Tôi thắc mắc vì sao Microsoft không tạo các ví dụ đúng nghĩa cho công nghệ mới này. Vài ví dụ được cung cấp chỉ dành cho lập trình viên
      Nhìn chung đang thiếu mã chạy được trong thực tế để xem JavaScript hoạt động trong Excel như thế nào, và hiện tại cảm giác gần như ở mức “cách vẽ một con cú”
    • Chúng tôi đang dùng hàm tùy chỉnh JavaScript để gọi API phân tích nội bộ, và làm việc với nó khá ổn
  • Tôi mong họ cũng hỗ trợ chạy Python cục bộ chứ không chỉ dùng Microsoft Cloud, nhưng chỉ riêng tính năng này thôi cũng có vẻ có thể hiện đại hóa Excel rất nhiều
    Nó thậm chí có thể loại bỏ nhu cầu về các website dùng để hiển thị loại dữ liệu này. Ở công ty cũ, tôi từng xây một website phân tích chỉ vài người nội bộ dùng; nếu khi đó có tính năng như thế này thì có lẽ hoàn toàn có thể thay thế bằng nó

    • Mỗi lần tôi nói chuyện này là lại bị phản đối. Người dùng chỉ muốn tự do phân tích dữ liệu bằng Excel, còn bộ phận IT của tôi thì lại muốn xây web app để làm thay họ. Cuối cùng người dùng vẫn không hài lòng, vì thứ họ muốn ngay từ đầu là Excel
      Tôi cứ giải thích rằng chỉ cần tạo data mart bằng SQL Server rồi dùng công cụ ETL để nạp dữ liệu cần cho phân tích vào đó là được. Không cần cho họ truy cập dữ liệu gốc. Vậy mà ai cũng nhìn tôi kỳ quặc, rồi lại muốn làm dự án triển khai Tableau trị giá hàng triệu đô. Người dùng không muốn thứ đó, thật hết sức vô lý
    • Tôi đang làm trong nhóm Excel. Nếu có thể tóm tắt vì sao điều đó quan trọng và gửi tới bgruenbaum@microsoft.com, tôi sẽ chuyển cho PM
      Hoặc bạn cũng có thể gửi qua UI phản hồi của Excel web/desktop. Các PM đọc toàn bộ phản hồi đó
    • Có một số lý do quan trọng để chạy trong container cô lập bằng hypervisor trên Azure và không có truy cập Internet
      Có thể bảo đảm trải nghiệm nhất quán cho tất cả người dùng. Thử nghĩ theo thời gian các phiên bản tách nhánh, mỗi người phải tự duy trì bản phân phối Python cục bộ của mình và bảo đảm nó hoạt động với Excel thì thật kinh khủng
      Khi chia sẻ sổ làm việc Excel với người khác, các phép tính có thể cứ thế hoạt động. Nếu phụ thuộc vào các bản cài Python cục bộ mỗi nơi một kiểu thì điều đó không xảy ra, và người dùng sẽ rất bực bội
      Bảo mật cũng là vấn đề lớn. Hãy tưởng tượng việc mở một file Excel có thể chạy mã Python với quyền của người dùng cục bộ
      Tôi cũng hoàn toàn đồng ý với điểm thứ hai. Việc tạo ứng dụng nội bộ bằng Python tích hợp với hạ tầng IT hiện có, nói nhẹ thì cũng rất bực mình. Excel gần như ở đâu cũng đã là một phần của hạ tầng IT, và là một canvas phản ứng có thể lập trình
      Công khai: Tôi đang làm trong nhóm thiết kế tính năng này
    • Việc chạy trên Microsoft Cloud có thể lại khiến nó hữu ích hơn macro ở công ty chúng tôi
      Ở đây, macro bị xem là một đường để chạy mã độc trên máy khách, và lợi ích của nó không được coi là đủ lớn để chấp nhận rủi ro đó
    • Giới hạn trên đám mây ở mức nào đó cũng hợp lý. Nếu biến Python thành một phần cốt lõi của định dạng file Excel thì tính di động sẽ giảm, và về sau có thể sinh đủ loại rắc rối tương thích
  • Ở đây rõ ràng có tín hiệu cảnh báo. Sức mạnh cốt lõi của Excel đến từ việc một workbook có thể tồn tại độc lập, nhưng giờ quy trình sẽ bị buộc vĩnh viễn vào cloud
    Ba năm nữa, khi cần mở workbook của một đồng nghiệp đã qua đời, việc đó sẽ phụ thuộc vào chuyện vendor có tiếp tục hỗ trợ tính năng tích hợp này hay không
    Thật kinh khủng nếu bước đầu tiên của bất kỳ công việc nào cũng là “tìm cách làm cho phần mềm chạy lại”. Trong vài thập kỷ qua tôi đã gặp chuyện này nhiều lần với đủ loại add-in của Excel, Outlook, Word, mà các add-in đó thậm chí còn không xử lý từ xa

    • “Bạn sẽ không sở hữu gì cả nhưng sẽ hạnh phúc” giờ đã lan tới cả bảng tính rồi sao. Ngay cả những thứ tạo ra khi làm công ăn lương trước bàn làm việc cũng không được sở hữu nữa
    • Thành thật mà nói cách này có vẻ dễ quản lý hơn. Vì dùng bản phân phối Anaconda, nếu gắn mỗi workbook với một bản phân phối cụ thể và cho phép update/rollback, thì sẽ dễ hơn nhiều so với quản lý cài đặt local
    • Không chỉ bị buộc vào cloud mà còn vào subscription nữa. Nếu hủy subscription, hoặc không có subscription mà trong buổi công bố họ nói có thể là module trả phí, hoặc dùng Excel do nhà cung cấp cấp nên không có subscription, thì bạn đã gặp vấn đề khi dùng sheet Excel đó rồi
    • Khoảng 7 năm qua tôi gần như chưa dùng bảng tính nào không nằm trên cloud. Tuy vậy tôi sẽ không dùng Excel cho những việc quan trọng cao và có vòng đời dài. Chủ yếu chỉ dùng để brainstorming hoặc chèn screenshot vào slide thuyết trình
    • Dù có dùng cloud hay không thì vấn đề này đã tồn tại rồi. Worksheet Excel vốn đã có thể có liên kết ngoài tới web hoặc file khác, và nếu tài nguyên web hay file đó không còn thì coi như xong. File cũ cũng có thể chỉ mở được bằng phần mềm không còn chạy trên máy hiện đại
      Vì vậy thỉnh thoảng thực sự khôi phục thử bản backup, hoặc trong những trường hợp như thế này thì kiểm chứng các file quan trọng, là điều rất cần thiết
  • Tôi đã hào hứng với “Python trong Excel”, rồi thấy cụm “chạy trên cloud” thì hết hứng. Có vẻ chẳng có lý do nào ngoài việc muốn trói người dùng vào dịch vụ cloud. Cảm giác quá giống kiểu họ nói sẽ bảo vệ tôi khỏi mực máy in không an toàn
    Bình thường tôi thích các sản phẩm MS Office và có xu hướng nhìn nhận tích cực. Nếu có lý do hợp lý nào, ngoài lock-in, để bắt Python chạy trên cloud thì mong ai đó cho biết

    • Đây là tín hiệu cảnh báo. M$ đang đẩy mọi người vào cloud của họ. Cách OneDrive chiếm quyền hệ thống file local là ví dụ điển hình mà nhiều người đã trải qua
      Tôi nghĩ lẽ ra đã phải rời khỏi M$ từ khoảng 5 năm trước rồi. Từ Windows đến Office, mọi sản phẩm đều đã có tính năng phản người tiêu dùng
    • Không bắt khách hàng phải quản lý cài đặt Python local có thể là một lý do
      Dĩ nhiên tôi cũng hiểu rằng người dùng nâng cao Excel+Python nhiều khả năng đã quen tự mang theo và duy trì Python runtime của mình
    • Có lẽ vì phần lớn người dùng Excel chưa từng cài và chạy Python. Ngay cả với người biết Python thì việc đó cũng khá phiền
      Cũng có người dùng Excel trên thiết bị iOS và Android. Với cách này, họ cũng có thể dùng và đọc Python bên trong spreadsheet
    • Cũng có Grist. Nó không phải bản sao Excel, nhưng là một spreadsheet/cơ sở dữ liệu lai nên có thể làm một số việc tương tự; quan trọng nhất là có thể dùng Python trong công thức, và nếu muốn chạy local thì cũng có tùy chọn self-host
  • Năm 2005, tôi cùng bạn bè lập một công ty tên Resolver Systems và tạo ra Resolver One, một spreadsheet có thể dùng Python
    Đáng tiếc là nó không thành công trên thị trường, nên chúng tôi chuyển hướng sang tạo môi trường lập trình và hosting online PythonAnywhere; cái này thì khá thành công và năm ngoái được Anaconda mua lại. Và giờ thì vòng tròn đã khép lại
    Nói rõ hơn, trong Anaconda, đội làm tính năng này hoàn toàn tách biệt với đội PythonAnywhere. Nếu là cùng một nhóm người thì đúng là câu chuyện kiểu Hollywood quá đẹp

    • Đó là một sản phẩm tốt. Tôi còn nhớ pitch của họ, và cũng đã gặp họ vài lần ở nhóm Python tài chính tại London. Tôi cũng nhớ “Enthought Python Distribution”
      Tuy nhiên vấn đề là Resolver dựa trên IronPython, nên có khá nhiều thư viện không hoạt động đúng
    • Tôi đã làm app đầu tiên của mình trên PythonAnywhere. Có vài thứ gần 10 năm rồi vẫn chạy ở đó
      Tôi thật sự thích việc có thể chỉnh sửa nhỏ trực tiếp trong webapp PythonAnywhere, và khi bắt đầu dùng GCP/AWS thì tôi rất nhớ tính năng kiểu đó
    • PythonAnywhere rất tuyệt. Cũng như nhiều người khác, đó là nơi tôi lần đầu bước vào lập trình web
    • Nghe tin này là tôi lập tức nghĩ ngay đến Resolver Systems
  • Khi thấy câu “Các phép tính Python chạy trên Microsoft Cloud”, đồng nghiệp tôi đùa rằng “Có vẻ ngay cả Microsoft cũng không quản lý nổi cài đặt Python local trên Windows…”
    Nhưng cũng thú vị nếu tưởng tượng Microsoft thật sự cuối cùng giải quyết được vấn đề thiết lập môi trường Python local, và Excel trở thành trình quản lý package Python tiêu chuẩn trên toàn hệ điều hành
    $ excelpip install fastapi==9.11.23
    Đang tìm fastapi version 11.09.2023…

    • Từ khi động vào apt của Debian 20 năm trước, tôi đã chờ Microsoft giải quyết quản lý package trên Windows. Tôi không nói mỉa; với độ phức tạp sản phẩm của Microsoft và sự ám ảnh về tương thích ngược, tôi từng nghĩ họ lại là bên có khả năng thúc đẩy việc quản lý phần mềm tiến lên
      Tôi tưởng họ sẽ đào sâu vào không gian vấn đề và tái phát minh một package manager vượt qua những gì phía open source đã làm
      Thay vào đó giờ chúng ta có Windows Update, Windows Features, Microsoft Store, Software Center, winget. winget là package manager cho Windows do Microsoft tạo ra, nhưng lại là công cụ phải cài từ một package manager khác cho Windows cũng do Microsoft tạo ra
    • Điều này gợi ra vấn đề kiểu này. Microsoft có nên cố định một tập package LTSC không? Một $GOV_AGENCY dùng phiên bản Excel chậm hơn một thế hệ thì sẽ cộng tác với thế giới bằng cách nào?
  • LibreOffice lẽ ra đã phải nắm bắt xu hướng từ lâu rồi. Về nguyên tắc thì có thể scripting bằng Python, nhưng quá rườm rà và lộn xộn, và dường như cũng không có lộ trình cải thiện
    Cảnh báo tương tự cũng áp dụng cho desktop Linux và toàn bộ các ứng dụng của nó. Ngày càng nhiều nền tảng độc quyền sẽ mở rộng các ứng dụng hiện có bằng những tính năng “AI” nâng cao dựa trên cloud, thường là thông qua Python API
    Thật tiếc là nhiều luồng phát triển trong thế giới mã nguồn mở bị đóng silo quá mức. Tiềm năng lớn hơn tổng các phần đang bị lãng phí

    • Trong nhiều trường hợp, thứ giữ chân mọi người ở lại với Excel và các sản phẩm độc quyền khác không phải là các tính năng nâng cao, mà là những thứ trông có vẻ nhỏ nhặt
      Điều tôi bất mãn nhất ở bảng tính LibreOffice và Apple Numbers là cách xử lý sao chép/dán vùng chọn không liên tục
      Ví dụ, với dữ liệu 5 hàng 3 cột, nếu chọn và sao chép các hàng 1 2 3, 7 8 9, a b c rồi dán bên dưới d e f, Excel sẽ chỉ nối các hàng đã chọn lại với nhau. LibreOffice và Numbers thì giữ cả các hàng trống ở giữa
      Tôi không tìm được thiết lập nào để đổi hành vi này. Excel cũng có thể gây khó chịu theo chiều ngược lại với những người muốn giữ khoảng cách, nhưng tôi hầu như chưa bao giờ muốn giữ khoảng cách nên LibreOffice và Numbers thật bất tiện
    • LibreOffice gần như đã bao gồm scripting bằng Python ngay từ đầu
      Lý do mọi người không quá bận tâm là vì trường hợp sử dụng phổ biến nhất của bộ ứng dụng văn phòng là tương tác được với các định dạng tệp của Microsoft
    • Nên xem thử ScriptForge: https://help.libreoffice.org/latest/en-US/text/sbasic/shared...
      Để chạy script trong LibreOffice, nên dùng APSO script organiser: https://extensions.libreoffice.org/en/extensions/show/apso-a...
    • Tôi lại thấy ngược lại. Python quá dễ để scripting, nên tôi cho rằng Excel đang tự đóng đinh vào quan tài của mình
      Khi nhóm người dùng lớn tuổi chưa từng dùng ngôn ngữ lập trình dần già đi và nghỉ hưu, những người học cách kết hợp Python vào Excel rốt cuộc sẽ thích Python hơn. Vì nó linh hoạt và mở rộng được hơn
      Ngoài mục đích làm bảng tính toán cơ bản thì không có lý do gì để dùng Excel. Nếu ai đó yêu cầu spreadsheet, tôi sẽ tự động hóa việc tạo nó bằng Python để không bao giờ phải trực tiếp xử lý nữa
    • LibreOffice còn rất nhiều vấn đề khác cần giải quyết trước. Nó quá chậm
  • Thất vọng
    “Python trong Excel hiện được cung cấp cho người dùng chạy Beta Channel trên Windows. Tính năng này sẽ được triển khai trước cho Excel trên Windows từ build 16.0.16818.2000, rồi sau đó mới đến các nền tảng khác.” [1]
    “Python trong Excel có thể dùng trong Excel cho Windows. Tính năng này không có trên Excel cho Mac, Excel cho web, Excel cho iPad, Excel cho iPhone, Excel cho Android. Trên các nền tảng không được hỗ trợ, bạn có thể xem workbook có Python, nhưng nếu tính toán lại các ô Python thì sẽ hiển thị lỗi.” [2]
    [1] https://techcommunity.microsoft.com/t5/excel-blog/announcing...
    [2] https://support.microsoft.com/en-us/office/introduction-to-p...

  • “Các phép tính Python chạy trên Microsoft Cloud” à, xin miễn

    • Đoạn đó cũng khiến tôi chú ý. Tôi tò mò vì sao họ chọn mô hình này
    • Tôi rất muốn có tích hợp Python tốt trong một bộ bảng tính, nhưng với cái này thì tôi thậm chí không định thử
  • Khoan đã. LibreOffice đã có Python từ vài năm trước nhưng chẳng ai quan tâm, thay vào đó mọi người phàn nàn rằng “công việc thật sự” cần VBA tương thích 100%. Giờ những người đó ở đâu rồi?

    • Tôi đây. Vấn đề không chỉ là VBA tương thích 100%, mà còn là phải học một API hoàn toàn mới để tạo spreadsheet dựa trên VBA nhưng không chạy được trong Excel
      Nếu LibreOffice VBA tương thích với Office VBA, chúng tôi đã không cần giữ một hệ thống Windows cũ kỹ ở đâu đó nữa
      Lý do chúng tôi làm việc này là để kiếm tiền, và không ai muốn mua một spreadsheet Excel mà lại không chạy được trong Excel
    • Không phải vì Excel làm được nhiều thứ hơn nên khó chịu, mà vì LibreOffice vẫn có thể bất tiện do thiếu các tính năng quen thuộc hoặc các tính năng buộc phải dùng
    • Nếu có khách hàng nào của tôi dùng LibreOffice thì tôi sẵn lòng dùng. Nhưng chẳng ai dùng cả
      Tôi làm việc bằng LibreOffice Calc trên Linux, còn Excel thì hỗ trợ Linux bằng 0, nên tôi muốn có mức tương thích đủ để gửi cho khách hàng mà không gặp vấn đề, nhưng hiện vẫn còn xa mới đạt được
    • Nếu tính năng kém, mọi người sẽ không dùng
      Nếu không biết nó tồn tại, mọi người sẽ không dùng
      Nếu đã quen với thứ khác, mọi người sẽ yêu cầu thứ đó
    • Vấn đề của LibreOffice là hỗ trợ Python chỉ tồn tại trên giấy tờ