模拟分析

假设现在有一个流量套餐,包月160元/20G,超出部分15元/G

小明平均每月的使用量为23G左右,标准差为5G

模拟1000组使用量对应的支付金额,计算出使用量、支付金额的平均值和方差,并画出对应的直方图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


def toPay(flow):
    if flow <= 20:
        return 160
    return 160 + (flow - 20) * 15


# 生成1000组平均值为23,标准差为5的流量使用情况
df = pd.DataFrame(np.random.normal(23, 5, (1000, 1)), columns=['input'])  # type: pd.DataFrame
# 估算1000组流量使用情况所需支付的金额
df['output'] = df['input'].apply(toPay)  # type: pd.Series

print(df)
# 输出平均值
print(df.mean())
# 输出样本标准差
print(df.std(ddof=1))
# 输出流量使用情况的直方图
sns.histplot(df['input'], kde=True, bins=10)
plt.show()
# 输出每月支付情况的直方图
sns.histplot(df['output'], kde=True, bins=10)
plt.show()

results matching ""

    No results matching ""