当前位置: 首页 > news >正文

程序媛的mac修炼手册-- 如何用Python节省WPS会员费

上篇分享了如何用微博爬虫,咱举例爬了女明星江疏影的微博数据。今天就用这些数据,给大家安利一下怎么用Python实现WPS中部分Excel付费功能。

MacOS系统自带的工具,绝大多数都非常顶,除Numbers外。当然,page比起word来,多少也是有点鸡肋的。

所以,微软Office全家桶,对有些Mac用户还是很有吸引力的。之前有人居然建议我去买个微软Surface做平板,推荐理由就是Surface原装Office全家桶😂😂我又没脑子长包,为了Office全家桶出大几千买Surface那种绣花枕头。咱可是连WPS会员费都能省则省的啊,主打一个勤俭节约!!

由于Mac自带办公工具太鸡肋,在macOS上强装Office又难兼容,所以,国产WPS成为大多数Mac用户的标配。动动小手指,下载安装,直接就运行地行云流水,只是免不了被薅会员费。

但是,凭我做数据分析经验来说,WPS免费功能可满足工作中80%的需求,剩下20%需要付费的功能嘛,咱用Python替代一下。咱就是说,要薅尽天下羊毛,让别人无毛可薅😎😎

话不多说,正式开始~

一. 读取 Excel 文件

使用 pandas 库读取 Excel ,能够快速加载 Excel 中的表格数据,pd.read_excel 函数可将其转换为数据框架(DataFrame)。以下示例代码,演示如何用 pandas 读取 Excel 文件。

import pandas as pd# 读取 Excel 文件
file_path = 'JSY.xlsx'
df = pd.read_excel(file_path)# 打印读取的数据框架
print("读取的数据框架:")
print(df)

二. 写入 Excel 文件

使用 pandas 库,将处理过的数据用 to_excel 函数写入新的 Excel 文件。参数 index=False 表示不包含行索引信息。生成的 Excel 文件名为 'output_data.xlsx'。示例代码如下:

import pandas as pd# 创建示例数据框架
data = {'微博id': ['ND3M2g3JH', 'KyEaim4wH', 'Kz4eC56Rj'],'点赞数': [11255, 30452, 15778],'转发数': [10, 8, 4]
}df = pd.DataFrame(data)# 将数据框架写入 Excel 文件
df.to_excel('output_data.xlsx', index=False)

三. 数据统计与汇总

通过pandas的统计函数,可以快速了解数据的统计信息,如均值、中位数等。

假设有一个包含销售数据的数据框架sales_data,其中包括产品销售额(sales_amount)、销售数量(quantity)和单价(unit_price)等列。使用这个数据框架来演示如何通过计算均值、中位数、众数、标准差、最小值和最大值等,来全面了解销售数据的特征,理解数据的分布、趋势和离散程度。示例代码如下:

import pandas as pd# 假设我们有一个包含销售数据的数据框架
data = {'Product': ['A', 'B', 'C', 'A', 'B', 'A'],'Sales_Amount': [100, 150, 200, 120, 180, 130],'Quantity': [5, 3, 4, 6, 2, 5],'Unit_Price': [20, 50, 50, 20, 90, 26]
}sales_data = pd.DataFrame(data)# 打印原始数据
print("原始数据:")
print(sales_data)# 统计与汇总
mean_sales_amount = sales_data['Sales_Amount'].mean()
median_quantity = sales_data['Quantity'].median()
mode_product = sales_data['Product'].mode().values[0]
std_unit_price = sales_data['Unit_Price'].std()
min_sales_amount = sales_data['Sales_Amount'].min()
max_quantity = sales_data['Quantity'].max()# 打印统计结果
print("\n统计与汇总结果:")
print(f"平均销售额:{mean_sales_amount}")
print(f"销售数量中位数:{median_quantity}")
print(f"产品销售频率最高的是:{mode_product}")
print(f"单价标准差:{std_unit_price}")
print(f"最小销售额:{min_sales_amount}")
print(f"最大销售数量:{max_quantity}")

四. 公式计算

使用 openpyxl 库,可在 Excel 中插入公式实现自动计算,并随着数据的更新而动态调整。比如,在示例中,通过循环遍历数据行,使用 Excel 公式 B(row) * C(row) 来计算 Total 列的值。示例代码如下:

from openpyxl import Workbook# 创建一个工作簿和工作表
workbook = Workbook()
sheet = workbook.active# 原始数据
data = [["Product", "Price", "Quantity", "Total"],["A", 25.5, 10, None],["B", 30.2, 8, None],
]# 将数据写入工作表
for row in data:sheet.append(row)# 添加公式计算 Total 列,Total = Price * Quantity
for row in range(2, sheet.max_row + 1):sheet[f'D{row}'] = f'B{row} * C{row}'# 保存工作簿
workbook.save("formulas.xlsx")

五. 图表绘制

使用 openpyxl 和 matplotlib 库,可将Excel数据可视化为图表,并插入到 Excel 工作表中。

在以下插入柱状图的示例中,通过创建了一个包含柱状图的 Excel 工作表。首先,使用 BarChart 创建一个柱状图对象,然后设置图表的标题、X轴标题和Y轴标题。接着,通过 Reference 定义数据范围,并使用 add_data 将数据添加到图表中。最后,使用 add_chart 将图表插入到工作表中。这样,就能够在 Excel 中通过图表直观地展示数据的分布和关系。示例代码如下:

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
import matplotlib.pyplot as plt
from io import BytesIO# 创建一个工作簿和工作表
workbook = Workbook()
sheet = workbook.active# 原始数据
data = [["Category", "Value"],["A", 25],["B", 30],["C", 20],
]# 将数据写入工作表
for row in data:sheet.append(row)# 创建柱状图
chart = BarChart()
chart.title = "Category vs Value"
chart.x_axis.title = "Category"
chart.y_axis.title = "Value"# 数据范围
data_range = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=sheet.max_row)# 设置图表数据
chart.add_data(data_range, titles_from_data=True)# 将图表插入到工作表中
sheet.add_chart(chart, "D2")# 保存工作簿
workbook.save("chart_example.xlsx")

六. 批量操作

使用循环和函数,可对数据进行批量处理。以下示例代码,使用循环遍历数据行,并批量计算了 'Total' 列的值:

from openpyxl import Workbook# 创建一个工作簿和工作表
workbook = Workbook()
sheet = workbook.active# 原始数据
data = [["Product", "Price", "Quantity", "Total"],["A", 25.5, 10, None],["B", 30.2, 8, None],
]# 将数据写入工作表
for row in data:sheet.append(row)# 批量计算 Total 列的值(Total = Price * Quantity)
for row in range(2, sheet.max_row + 1):price = sheet[f'B{row}'].valuequantity = sheet[f'C{row}'].valuetotal = price * quantitysheet[f'D{row}'] = total# 打印批量计算后的数据
print("批量计算后的数据:")
for row in sheet.iter_rows(values_only=True):print(row)# 保存工作簿
workbook.save("batch_operations.xlsx")

七. 错误处理

在处理 Excel 数据时,错误是不可避免的。为了提高代码的健壮性,可以使用异常处理机制来处理可能出现的错误。以下示例代码,使用了两层异常处理。外层的异常处理捕获了可能发生的任何异常,而内层的异常处理仅捕获特定的 TypeError,这是由于在计算 'Total' 列时可能遇到的错误类型。

from openpyxl import Workbooktry:# 创建一个工作簿和工作表workbook = Workbook()sheet = workbook.active# 原始数据data = [["Product", "Price", "Quantity", "Total"],["A", 25.5, 10, None],["B", 30.2, 8, None],]# 将数据写入工作表for row in data:sheet.append(row)# 尝试计算 Total 列的值,但存在空值导致的错误for row in range(2, sheet.max_row + 1):try:price = sheet[f'B{row}'].valuequantity = sheet[f'C{row}'].valuetotal = price * quantitysheet[f'D{row}'] = totalexcept TypeError as e:print(f"Error in row {row}: {e}")# 打印处理后的数据print("处理后的数据:")for row in sheet.iter_rows(values_only=True):print(row)# 保存工作簿workbook.save("error_handling_example.xlsx")except Exception as e:print(f"An error occurred: {e}")

相关文章:

程序媛的mac修炼手册-- 如何用Python节省WPS会员费

上篇分享了如何用微博爬虫,咱举例爬了女明星江疏影的微博数据。今天就用这些数据,给大家安利一下怎么用Python实现WPS中部分Excel付费功能。 MacOS系统自带的工具,绝大多数都非常顶,除Numbers外。当然,page比起word来&…...

ASP.NET Core NE8实现HTTP Upgrade和HTTP CONNECT代理服务器

看到一个文章[Go] 不到 100 行代码实现一个支持 CONNECT 动词的 HTTP 服务器 在NET8中如何实现 创建项目为MiniApi 编辑Program.cs文件。 var builder WebApplication.CreateSlimBuilder(args);var app builder.Build();// 将HTTP请求通过协议升级机制转为远程TCP请求&…...

apipost和curl收不到服务器响应的HTTP/1.1 404 Not Found

windows的apipost发送请求后,服务器响应了HTTP/1.1 404 Not Found,但是apipost一直显示发送中。 linux上的curl也一样。 使用wireshark抓包发现收到了响应,但是wireshark识别不了(图中是回应404后关闭了连接)&#xff…...

javascript:计算一个坐标数组的最小值点、最大值点、中心点

作者:CSDN _乐多_ 本文将介绍使用 javascript 语言计算一个坐标数组的最小值点、最大值点、中心点的代码。 文章目录 一、代码 一、代码 function calculateCenterPoint(points) {if (points.length 0) {return null;}let sumX 0;let sumY 0;let sumZ 0;for …...

使用远程工具连接Linux系统——使用Root用户登录

1、启动虚拟机,输入以下命令 进入root用户 sudo su或 su root修改ssh配置文件 vim /etc/ssh/sshd_config找到PermitRootLogin 并用#注释掉当前行 # PermitRootLogin prohibit-password添加: PermitRootLogin yes键入esc输入:wq保存退出 2、重启服…...

JuiceSSH结合内网穿透实现移动端设备公网远程访问Linux虚拟机

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …...

06-枚举和模式匹配

上一篇:05-使用结构体构建相关数据 在本章中,我们将介绍枚举。枚举允许你通过枚举其可能的变体来定义一种类型。首先,我们将定义并使用一个枚举,以展示枚举如何与数据一起编码意义。接下来,我们将探索一个特别有用的枚…...

【C/C++】C/C++编程——C++ 开发环境搭建

C的开发环境种类繁多,以下是一些常见的C 集成开发环境: AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C,Java和Java开发的集成开发环境CLion:来自JetBrains的跨平台的C/C的集成开…...

Go 接口

接口概览 接口大概理解 接口类型是队其他类型行为的概括与抽象 接口类型中,包含函数声明,但没有数据变量接口的作用通过使用接口,可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定的类型实现上Go 接口特征 很多面向对象…...

用 AI 将自拍照 P 进不同艺术作品,谷歌发布「艺术自拍 2」

1 月 24 日消息,谷歌旗下「艺术与文化」应用今日宣布,2018 年推出的「艺术自拍」功能在时隔近六年后,借助生成式 AI 的力量回归。官方表示,「艺术自拍 2」将再次使用户与艺术面对面,重新探访世界各地的艺术、历史和文化…...

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心(8080端口) 2.2 资源服务中心(8081端口) 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0(开放授权 2.0)是一个开放标准,用于授权第三方应用程序…...

c# 策略模式

在 C# 中,策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装到具有公共接口的独立类中,使得它们可以互相替换。这样可以使得算法的选择独立于算法的使用者,从而提高了灵活性和可维护性。 以下是策略…...

消息队列RabbitMQ.03.死信交换机的讲解与使用

目录 一、死信队列(延迟队列) 概念讲解 二、确认消息(局部方法处理消息) 三、代码实战 1.编写生产者代码,配置消息、直连交换机、路由键 1.1代码解析: 2.配置消费者接受类接受直连交换机的路由键 2.1. String msg&#xff…...

人工智能原理实验4(2)——贝叶斯、决策求解汽车评估数据集

🧡🧡实验内容🧡🧡 汽车数据集 车子具有 buying,maint,doors,persons,lug_boot and safety六种属性,而车子的好坏分为uncc,ucc,good and vgood四种。 🧡🧡贝叶斯求解🧡🧡…...

算力网络:未来计算资源的驱动力

文章目录 前言一、算力网络的基本概况(一)算力网络的基本概念(二)算力网络研究进展二、运营商的算力网络架构(一)算力网络基础设施构成(二)算力网络编排管理(三)能力开放三、算力网络的优势(一)弹性计算(二)降低成本(三)去中心化四、算力网络的应用场景(一)人…...

java动态导入excel按照表头生成数据库表

1、创建接口接收文件 //controller层 PostMapping("/importExcel1")public void importExcel1(HttpServletRequest request, MultipartFile file) {try {waterMeterService.importExcel1(request,file);} catch (Exception e) {throw new RuntimeException(e);}}//se…...

Java 集合List相关面试题

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于java面试题系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基…...

k8s-基础知识(Pod,Deployment,ReplicaSet)

k8s职责 自动化容器部署和复制随时扩展或收缩容器容器分组group,并且提供容器间的负载均衡实时监控,即时故障发现,自动替换 k8s概念及架构 pod pod是容器的容器,可以包含多个container pod是k8s最小可部署单元,容器…...

matlab查看源代码

matlab函数源代码-查看 CtrlD 最简单方便的一种方法,鼠标划中函数名,按CTRLD即可打开函数的m文件...

【数据库学习】PostgreSQL优化

1,思路 2,执行计划 explain sql语句; #查看执行计划。也可以使用navicat的解释功能查看。结果说明: QUERY PLAN Index Scan using tenk1_unique1 on tenk1 (cost0.00..10.01 rows1 width244) --Index 使用索引 --cost&#x…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...