练习题(python)6

26 阅读2分钟

题目:给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。

有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例: s1 = "()[]{}" s2 = "(]" s3 = "([)]" s4 = "{[]}

def match_strs(str):
    stack = []
    dc = {
        ']':'[',
        '}':'{',
        ')':'('
    }
    for s in str:  # 遍历字符串str
        if s in dc: # 如果s是右括号
            tmp = stack.pop() # 弹出栈顶元素
            if tmp != dc[s]: # 不匹配
                return False
        else: # 如果s是左括号
            stack.append(s) # 将左括号加入栈中
    return not stack # 如果栈为空,代表括号匹配
# 匹配用例
s1 = "()[]{}"
s2 = "(]"
s3 = "([)]"
s4 = "{[]}"
print(match_strs(s1))
print(match_strs(s2))
print(match_strs(s3))
print(match_strs(s4))

题目:电商用户行为数据分析

现有电商平台用户行为数据 CSV 文件“用户行为.csv”,包含字段:“用户 ID”“浏览时长 (分钟)”“下单次数”“支付金额 (元)”“用户等级 (1-5 级)”。 请使用 Python 的 pandas、numpy 和 matplotlib 库完成以下任务: 读取 CSV 文件数据到 DataFrame。

  1. 计算不同用户等级的平均浏览时长、平均下单次数和平均支付金额(提示:使用 groupby 分组统计)。
  2. 计算所有用户的 “支付金额” 的最大值、最小值、标准差和中位数。
  3. 为每位用户添加 “单均支付金额” 列(支付金额 / 下单次数)。
  4. 绘制不同用户等级的 “平均支付金额” 柱状图,横轴为用户等级,纵轴为平均支付金额。
import pandas as pd
import matplotlib.pyplot as plt
# 1. 计算不同用户等级的平均浏览时长、平均下单次数和平均支付金额(提示:使用 groupby 分组统计)。
df = pd.read_csv(
    "用户行为.csv",
    encoding="utf-8",
    index_col="用户ID"
)
print(df)

mean_data = df.groupby('用户等级(1-5级)').agg(
    {'浏览时长(分钟)':'mean',
     '下单次数':'mean',
     '支付金额(元)':'mean'
     }
)
mean_data = mean_data.rename(columns={'浏览时长(分钟)':'平均浏览时长(分钟)',
                                      '下单次数':'平均下单次数','支付金额(元)':'平均支付金额(元)'})
print(mean_data)
# 2. 计算所有用户的 “支付金额” 的最大值、最小值、标准差和中位数。
states = df['支付金额(元)'].agg(['max' , 'min' , 'std' , 'median'])
print(states)

# 3. 为每位用户添加 “单均支付金额” 列(支付金额 / 下单次数)。
df['单均支付金额'] = df['支付金额(元)'] / df['下单次数']
df = df.fillna(0)
print(df)

# 4. 绘制不同用户等级的 “平均支付金额” 柱状图,横轴为用户等级,纵轴为平均支付金额。
plt.bar(mean_data.index, mean_data['平均支付金额(元)'])
plt.show()