前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >人人都会AI|Python之Numpy魔法世界(5)

人人都会AI|Python之Numpy魔法世界(5)

作者头像
一臻AI
发布2025-03-06 15:08:55
发布2025-03-06 15:08:55
400
代码可运行
举报
文章被收录于专栏:一臻AI一臻AI
运行总次数:0
代码可运行

此时,汤姆正在处理一个包含数千行销售数据的Excel表格。

传统Python循环让你痛不欲生,计算速度慢得像蜗牛。正好,NumPy闪亮登场,轻松秒杀这些数据运算难题。

NumPy魔法入门

NumPy,全称 Numerical Python,一把Python世界里的瑞士军刀,能轻松应对各种数值计算挑战。不仅速度快,还特别擅长处理多维数组数据。

让我们创建一个简单的NumPy数组开始探索:

代码语言:javascript
代码运行次数:0
复制
import numpy as np

# 创建一个简单的一维数组
sales_data = np.array([1000, 1500, 2000, 2500, 3000])
print("销售数据:", sales_data)

# 快速统计
print("平均销售额:", sales_data.mean())
print("销售总额:", sales_data.sum())
print("销售最高值:", sales_data.max())

# 创建一个二维数组(销售矩阵)
monthly_sales = np.array([
    [1000, 1500, 2000],  # 1月各产品销售额
    [2000, 2500, 3000],  # 2月各产品销售额
    [3000, 3500, 4000]   # 3月各产品销售额
])

# 每月销售总额
print("\n每月销售总额:", monthly_sales.sum(axis=1))

# 每个产品的平均销售额
print("各产品平均销售额:", monthly_sales.mean(axis=0))

数组操作的艺术

在NumPy中,数组不仅仅是数据的容器,还提供了强大的操作功能。数组好比一块魔方,你可以随心所欲地旋转、切片、重组它。

来看看一些实用的数组操作技巧:

代码语言:javascript
代码运行次数:0
复制
import numpy as np

# 创建示例数据
sales_2023 = np.array([
    [100, 150, 200],
    [120, 160, 210],
    [140, 170, 220],
    [160, 180, 230]
])

# 切片操作:获取第一季度数据
q1_sales = sales_2023[:3]
print("第一季度销售数据:\n", q1_sales)

# 重塑数组:将季度数据重组为一维数组
flat_sales = sales_2023.reshape(-1)
print("\n展平后的销售数据:", flat_sales)

# 条件筛选:找出所有销售额超过180的数据
high_sales = sales_2023[sales_2023 > 180]
print("\n高销售额数据:", high_sales)

# 数组运算:计算环比增长率
growth_rate = (sales_2023[1:] - sales_2023[:-1]) / sales_2023[:-1] * 100
print("\n环比增长率(%):\n", growth_rate)

接下来,我们一起深入探讨NumPy的数学运算和统计功能,以及在实际数据分析中的应用。

NumPy的数学魔法世界

在电商数据分析中,你可能需要分析销售趋势、计算利润率、预测未来销售额。NumPy提供了一套完整的数学工具箱来应对这些挑战:

代码语言:javascript
代码运行次数:0
复制
import numpy as np

# 模拟一年的日销售数据
daily_sales = np.random.normal(1000, 200, 365)  # 均值1000,标准差200的正态分布

# 基础统计
print("每日平均销售额: ¥{:.2f}".format(daily_sales.mean()))
print("销售额标准差: ¥{:.2f}".format(daily_sales.std()))
print("最高单日销售: ¥{:.2f}".format(daily_sales.max()))
print("最低单日销售: ¥{:.2f}".format(daily_sales.min()))

# 计算7日移动平均
weekly_avg = np.convolve(daily_sales, np.ones(7)/7, mode='valid')
print("\n首周平均销售额: ¥{:.2f}".format(weekly_avg[0]))

# 季节性分析(假设销售额有周期性波动)
days = np.arange(365)
seasonal_pattern = 200 * np.sin(2 * np.pi * days / 365)  # 年度周期性
adjusted_sales = daily_sales + seasonal_pattern

# 计算同比增长率(与30天前比较)
growth_rate = (adjusted_sales[30:] - adjusted_sales[:-30]) / adjusted_sales[:-30] * 100
print("\n平均同比增长率: {:.2f}%".format(growth_rate.mean()))

# 销售额预测(简单线性趋势)
trend = np.polyfit(days, adjusted_sales, 1)
forecast = np.poly1d(trend)
next_day_forecast = forecast(365)
print("\n下一天销售预测: ¥{:.2f}".format(next_day_forecast))

高维数据处理神器

在现代数据分析中,数据往往是多维的。比如一个电商平台的数据可能包含时间、地区、产品类别、用户特征等多个维度。

NumPy的多维数组处理能力在这里大显身手:

来看看如何处理多维销售数据:

代码语言:javascript
代码运行次数:0
复制
import numpy as np

# 创建一个3维数组:[时间(月份), 地区, 产品类别]
sales_data = np.random.randint(1000, 5000, size=(12, 4, 3))

# 维度说明
regions = ['北部', '南部', '东部', '西部']
categories = ['电子', '服装', '食品']

# 按维度分析
print("各地区年度销售总额:")
annual_by_region = sales_data.sum(axis=(0, 2))  # 压缩时间和产品维度
for region, sales in zip(regions, annual_by_region):
    print(f"{region}: ¥{sales:,}")

print("\n各品类月均销售额:")
monthly_by_category = sales_data.mean(axis=(0, 1))  # 压缩时间和地区维度
for category, sales in zip(categories, monthly_by_category):
    print(f"{category}: ¥{sales:,.2f}")

# 找出最佳表现
best_month = sales_data.sum(axis=(1,2)).argmax()
print(f"\n销售最好的月份: {best_month + 1}月")

best_region = sales_data.sum(axis=(0,2)).argmax()
print(f"销售最好的地区: {regions[best_region]}")

# 交叉分析:计算每个地区的最畅销品类
best_categories = sales_data.sum(axis=0).argmax(axis=1)
print("\n各地区最畅销品类:")
for region, cat_idx in zip(regions, best_categories):
    print(f"{region}: {categories[cat_idx]}")

# 计算环比增长矩阵
monthly_growth = (sales_data[1:] - sales_data[:-1]) / sales_data[:-1] * 100
print("\n平均环比增长率(%):")
print(monthly_growth.mean(axis=(0,2)))  # 每个地区的平均增长率

运用NumPy,我们可以轻松处理复杂的多维数据分析任务。无论是简单的销售统计还是复杂的交叉分析,NumPy都能帮你轻松应对。

记住,在数据分析中,选择合适的工具和正确的分析方法同样重要。NumPy就像是数据分析师的瑞士军刀,熟练掌握它能让你的数据分析工作事半功倍。

通过这些示例,相信大家已经了解了NumPy在数据处理和分析中的强大功能。开始尝试用NumPy来处理你自己的数据分析任务吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一臻AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NumPy魔法入门
  • NumPy的数学魔法世界
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档