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

发布时间:2024年01月24日

上篇分享了如何用微博爬虫,咱举例爬了女明星江疏影的微博数据。今天就用这些数据,给大家安利一下怎么用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}'].value
????quantity?=?sheet[f'C{row}'].value
????total?=?price?*?quantity
????sheet[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?Workbook

try:
????#?创建一个工作簿和工作表
????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}'].value
????????????quantity?=?sheet[f'C{row}'].value
????????????total?=?price?*?quantity
????????????sheet[f'D{row}']?=?total
????????except?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}")
文章来源:https://blog.csdn.net/weixin_68568895/article/details/135832374
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。