Python入门教程丨3.2 再见Excel!用Python这5个模块,我把3天工作压缩到3分钟

⭐还在用Excel手动算均值方差?还在为海量数据统计熬夜加班?用Python这5把「数据手术刀」写一次代码,就能直接复用,专业报告自动生成!

本期内容:

模块

核心功能

应用场景

math

数学计算

几何、物理模拟

random

生成随机数据

游戏、抽样测试

statistics

统计分析

回归分析、市场调研

numpy

数组与矩阵运算

图像处理、机器学习

pandas

表格数据处理与分析

金融分析、数据清洗


一、基础数学库

1.1 math 库

math是 Python标准库中基础的数学模块,几乎所有科学计算库都依赖于它。

它主要提供精确的数学计算工具,涵盖几何、数论、对数等多个领域。

我们先看一些常用语法,可以看到基本都是库名+.+方法的格式,其实就是面向对象调用方法。

import math

# 数学常数
print("圆周率π:", math.pi)  # 3.141592653589793
print("自然常数e:", math.e)  # 2.718281828459045

# 三角函数(单位:弧度)
angle = math.radians(45)  # 将45度转为弧度
print("sin(45°) =", math.sin(angle))  # 0.7071...

# 对数与幂
print("2的3次方:", math.pow(2, 3))  # 8.0
print("100的对数(底10):", math.log10(100))  # 2.0

# 数论工具
print("10的阶乘:", math.factorial(10))  # 3628800
print("12和18的最大公约数:", math.gcd(12, 18))  # 6

示例:计算圆的面积和周长

import math

radius = 5
area = math.pi * math.pow(radius, 2)
circumference = 2 * math.pi * radius
print(f"⚪半径 {radius} 的圆:面积={area:.2f}, 周长={circumference:.2f}")

示例:计算三角形的斜边长度

a, b = 3, 4
hypotenuse = math.hypot(a, b)
print(f"直角边为 {a} 和 {b} 的三角形,斜边长度={hypotenuse}")

1.2 random 库

random库是模拟实验、随机抽样和概率统计的基础工具。

能够方便的生成随机数据,支持均匀分布、正态分布等多种概率分布,常用于生成随机样本和模拟随机事件。


常用语法

import random

# 随机整数
print("随机整数(1-10):", random.randint(1, 10))

# 随机小数
print("随机小数(0-1):", random.random())  # [0.0, 1.0)
print("均匀分布随机数(5-10):", random.uniform(5, 10))  # [5.0, 10.0]

# 随机抽样
colors = ["红", "蓝", "绿", "黄"]
print("随机选择一个颜色:", random.choice(colors))
print("随机选择2个颜色(不重复):", random.sample(colors, 2))

# 打乱顺序
random.shuffle(colors)
print("打乱后的颜色列表:", colors)

示例:模拟掷骰子

import random

dice = random.randint(1, 6)
print("掷骰子结果:", dice)

示例:生成正态分布数据

import random

normal_data = [random.gauss(mu=0, sigma=1) for _ in range(10)]
print("正态分布数据:", normal_data)

1.3 statistics 库

statistics是数据分析和统计建模的基础模块,提供统计分析工具,计算均值、方差、相关性等统计指标。

在社会科学、经济学、生物信息学等领域,statistics模块用于揭示数据规律和验证假设。


常用语法

import statistics

#一组初始数据
data = [85, 92, 78, 90, 89, 88]

# 集中趋势
print("均值:", statistics.mean(data))  # 87.0
print("中位数:", statistics.median(data))  # 88.5

# 离散程度
print("方差:", statistics.variance(data))  # 24.8
print("标准差:", statistics.stdev(data))  # 4.98

# 相关性
data_x = [1, 2, 3, 4, 5]
data_y = [2, 4, 5, 4, 6]
print("相关性系数:", statistics.correlation(data_x, data_y))  # 0.8

示例:计算考试成绩的统计指标

import statistics

scores = [85, 92, 78, 90, 89, 88]
print("考试成绩分析:")
print("均值:", statistics.mean(scores))
print("标准差:", statistics.stdev(scores))

示例:计算两组数据的相关性

import statistics

data_x = [1, 2, 3, 4, 5]
data_y = [2, 4, 5, 4, 6]
print("相关系数:", statistics.correlation(data_x, data_y))

二、科学计算库

2.1 numpy

numpy是Python科学计算生态系统的核心库,提供高效的多维数组和矩阵运算工具,特别是线性代数相关计算,几乎所有高级科学计算库都依赖于它,因此在机器学习、深度学习、图像处理等领域应用广泛。


常用语法

import numpy as np

# 创建数组
arr = np.array([1, 2, 3, 4])
print("一维数组:", arr)

# 矩阵运算
matrix = np.array([[1, 2], [3, 4]])
print("矩阵行列式:", np.linalg.det(matrix))  # -2.0

# 广播机制
print("数组加10:", arr + 10)  # [11 12 13 14]

# 矩阵乘法
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print("矩阵乘法结果:\n", np.dot(a, b))

示例:数组的基本操作

import numpy as np

arr = np.array([1, 2, 3, 4])
print("数组平方:", arr**2)  # [1 4 9 16]
print("数组求和:", np.sum(arr))  # 10

示例:矩阵运算

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
print("矩阵行列式:", np.linalg.det(matrix))  # -2.0
print("矩阵逆:\n", np.linalg.inv(matrix))

2.2 pandas 库

pandas库是数据分析和数据科学领域的核心库,提供高效的表格数据处理工具,支持数据清洗、合并、分组等操作,在金融分析、商业智能、社会科学等领域应用广泛。

这个库的名字叫熊猫,官方Logo也是一只熊猫,据说名字并非直接来自熊猫,而是来自“Panel Data”(面板数据)的缩写,Wes在命名时发现“Pandas”与熊猫的英文“Panda”相似,觉得这个名字既有趣又容易记住,于是决定采用。


常用语法

import pandas as pd

# 创建DataFrame
data = {
    "产品": ["苹果", "香蕉", "橙子"],
    "销量": [120, 85, 90],
    "单价": [5.5, 3.2, 4.0]
}
df = pd.DataFrame(data)
print("原始数据表:\n", df)

# 添加列
df["销售额"] = df["销量"] * df["单价"]
print("添加销售额列:\n", df)

# 分组统计
grouped = df.groupby("产品").sum()
print("分组总销售额:\n", grouped)

示例:数据清洗与分析

import pandas as pd

# 读取CSV数据
sales = pd.read_csv("sales.csv")
print("前3行数据:\n", sales.head(3))

# 处理缺失值
sales_clean = sales.dropna()
print("清洗后的数据:\n", sales_clean.head(3))

示例:分组统计

import pandas as pd

# 按月份统计总销售额
sales["日期"] = pd.to_datetime(sales["日期"])
sales["月份"] = sales["日期"].dt.month
monthly_sales = sales.groupby("月份")["销售额"].sum()
print("月度销售趋势:\n", monthly_sales)

三、水果店销售数据分析案例

学了这么多库,相信你已经手痒难耐,我们趁热打铁,写个小案例。

假设我们有一家零售店,销售三种商品:苹果、香蕉和橙子。我们需要

  1. 生成模拟销售数据
  2. 计算每种商品的总销售额和平均销售额
  3. 分析销售数据的统计特性(均值、方差等)

代码实现

我们首先使用random模块生成随机销售数据,并用pandas将其整理成表格。

import random
import pandas as pd

# 模拟销售数据
def generate_sales_data(num_days=30):
    products = ["苹果", "香蕉", "橙子"]
    data = {
        "日期": pd.date_range(start="2023-10-01", periods=num_days),
        "产品": [random.choice(products) for _ in range(num_days)],
        "销量": [random.randint(50, 150) for _ in range(num_days)],
        "单价": [round(random.uniform(3.0, 6.0), 2) for _ in range(num_days)]
    }
    return pd.DataFrame(data)

# 生成30天的销售数据
sales_data = generate_sales_data()
print("模拟销售数据:\n", sales_data.head())

接着进行简单计算,计算总销售额和平均销售额,使用pandas进行计算。

# 计算销售额
sales_data["销售额"] = sales_data["销量"] * sales_data["单价"]

# 按产品分组统计
product_summary = sales_data.groupby("产品").agg({
    "销量": "sum",
    "销售额": ["sum", "mean"]  # 总销售额和平均销售额
})
print("产品销售统计:\n", product_summary)

随后我们使用statistics库计算销售数据的统计指标。

import statistics

# 提取销售额数据
sales_values = sales_data["销售额"].tolist()

# 计算统计指标
mean_sales = statistics.mean(sales_values)
median_sales = statistics.median(sales_values)
variance_sales = statistics.variance(sales_values)
stdev_sales = statistics.stdev(sales_values)

print("销售额统计指标:")
print(f"均值:{mean_sales:.2f}")
print(f"中位数:{median_sales:.2f}")
print(f"方差:{variance_sales:.2f}")
print(f"标准差:{stdev_sales:.2f}")

如果你更喜欢图形,还可以使用matplotlib库绘制销售趋势图~

使用numpy还可以计算销售额的百分位数和累积销售额。

import numpy as np

# 计算销售额的百分位数
percentiles = np.percentile(sales_values, [25, 50, 75])
print("销售额百分位数(25%, 50%, 75%):", percentiles)

# 计算累积销售额
cumulative_sales = np.cumsum(sales_values)
print("累积销售额:\n", cumulative_sales)

工作中,针对一些重复性的周报、日报,都可以使用代码来制定相关的模板,很大程度上可以简化工作量,把时间交还给自己。


四、小结

数据分析的钥匙,其实早已在你手中。大道至简,不需要太复杂的技巧,掌握这5个模块的常用语法,你就能用Python 点石成金。

你可能感兴趣的:(Python教程,python,excel,开发语言)