⭐还在用Excel手动算均值方差?还在为海量数据统计熬夜加班?用Python这5把「数据手术刀」写一次代码,就能直接复用,专业报告自动生成!
本期内容:
模块 |
核心功能 |
应用场景 |
|
数学计算 |
几何、物理模拟 |
|
生成随机数据 |
游戏、抽样测试 |
|
统计分析 |
回归分析、市场调研 |
|
数组与矩阵运算 |
图像处理、机器学习 |
|
表格数据处理与分析 |
金融分析、数据清洗 |
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}")
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)
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))
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))
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)
学了这么多库,相信你已经手痒难耐,我们趁热打铁,写个小案例。
假设我们有一家零售店,销售三种商品:苹果、香蕉和橙子。我们需要
我们首先使用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 点石成金。